Комментарии 50
bash отожрал гиг памяти и попросил ещё.
Самое забавное, что Ctrl+C остановило операцию, но занятая память продолжает висеть
У меня занятая память сразу же освободилась.
FreeBSD 7.1-RELEASE, sh
Анонимного FTP у меня нет, но надо что-то с этим делать…
FreeBSD 7.1-RELEASE, sh
Анонимного FTP у меня нет, но надо что-то с этим делать…
mac os 10.6.3, bash — результат аналогичный. Память освободилась только после того, как был убит не ls, а сам bash.
P.S.: Моя любовь к vsftpd себя оправдала и я этому очень рад :)
P.S.: Моя любовь к vsftpd себя оправдала и я этому очень рад :)
странно, у меня(Arch) память освободилась сразу же после ctrl+c
Похоже причина в специфике управления памятью в БСДях. Мак ОС ведь тоже немного БСД :)
php 5.3.1 win64 apache2, через 3 секунды после запуска скрипта с print glob("../../*/../*/*/../../*/*/*/*"); прекращается выполнение, процесс апача успевает занять 25мб. Логично предположить что пхп справляется с этой проблемой :)
Андрюша 2.2 до сих пор подтормаживает: никогда дезайр еще так не тормозили, хотя память потихоньку освобождается.
Mac OS X 10.6.5 — bash сжирает память и проц.
ftp> ls ./../../*/*/../*/../*/*/*/../…
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
И ничего.
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
И ничего.
судя по try-python.mired.org/ питоновский код не работает
FreeBSD 8.1-RELEASE amd64
[user@axe ~]$ ls ../../*/../*/*/../../*/*/*/*
ls: ../../*/../*/*/../../*/*/*/*: No such file or directory
ls ../../../*/*/../../*/*/*/../…
вывод очень длинный и похож на ls -R /
[user@axe ~]$ ls ../../*/../*/*/../../*/*/*/*
ls: ../../*/../*/*/../../*/*/*/*: No such file or directory
ls ../../../*/*/../../*/*/*/../…
вывод очень длинный и похож на ls -R /
Возможно мне изменяет память, но про эти смешные регэкспы, подвешивающие юникс, я ещё в институте знал.
Ваша память изменяет вам с форк-бомбами, видимо, а не с «регекспами», подвешивающими юникс.
Нет, причём тут эта форк-бомба?
Я точно помню это в споре о разнице парсинга звезды в DOS (где звезда означает «дальше не важно») и в unix. Как раз тогда приводился пример кода, который подвешивал и cmd, и юникс — и там как раз было несколько звёздочек.
Строка выглядела примерно как a*aa*aa*aa*a*a. Найти информацию сейчас не смог, в те времена интернетов особо не было…
Я точно помню это в споре о разнице парсинга звезды в DOS (где звезда означает «дальше не важно») и в unix. Как раз тогда приводился пример кода, который подвешивал и cmd, и юникс — и там как раз было несколько звёздочек.
Строка выглядела примерно как a*aa*aa*aa*a*a. Найти информацию сейчас не смог, в те времена интернетов особо не было…
Речь, как я понимаю, шла об эксплуатации worst-case execution time для бэктрекинга. Например, для алгоритма Кнута-Морриса-Пратта строка вида «aaaaaaaaaa» сама по себе является наихудшим паттерном, сопоставление может идти очень долго. Если при этом добавить в паттерн вайлдкарды, бэктрекинг совсем сойдёт с ума и будет работать дольше, чем O(n^2).
Вот, пример нашёл такой: esyr.org/wiki/UNИX%2C_весна_2008%2C_11_лекция_%28от_23_апреля%29, главы «Алгоритм бэктрекинга» и «Утилиты (продолжение) ».
Вот, пример нашёл такой: esyr.org/wiki/UNИX%2C_весна_2008%2C_11_лекция_%28от_23_апреля%29, главы «Алгоритм бэктрекинга» и «Утилиты (продолжение) ».
Ну то есть, в данном случае проблема совсем в другом :)
да, уточняю, этот баг (в том виде, как обсуждали) требовал наличия файла с несколькими aaa в каталоге.
причем тут регэкспы?
гента 2.6.35, пробывал с питоном, медленно ест память, 100% загрузки одного ядра
Ubuntu 10.04 — сожрало гиг памяти и целиком одно ядро.
Debian GNU/linux 2.6.26-2-686, zsh
сжрал мегабайт 250, потом процесс завершился (suspended), память не освободил
сжрал мегабайт 250, потом процесс завершился (suspended), память не освободил
Не работает оно давно.
А для фтп vsftpd ставьте, он не использует эту библиотеку.
А для фтп vsftpd ставьте, он не использует эту библиотеку.
Чего-то я не понял, при чем здесь вообще sh…
Разве ls ../../*/../*/*/../../*/*/*/* не подвешивает проц просто потому, что пытается зайти в кучу каталогов подряд и может еще и рекурсивно где-то?.. Тогда с таким же успехом может подвесить проц что-то вроде while true; do true; done
Поясните, плз ))
Разве ls ../../*/../*/*/../../*/*/*/* не подвешивает проц просто потому, что пытается зайти в кучу каталогов подряд и может еще и рекурсивно где-то?.. Тогда с таким же успехом может подвесить проц что-то вроде while true; do true; done
Поясните, плз ))
Какой, всё-таки, vsftpd хороший! =)
HTC Desire, загрузка проца 60-90%.
Nokia N900, загрузка проца 97.8%. Длилось секунд 10-20, после чего No such file or directory. Так что не смертельно.
То есть проблема в том, что флаг GLOB_LIMIT не действует при некоторых входных данных, из-за чего происходит высокая нагрузка на CPU и потребление RAM?
То, что уязвимость в функции glob — верю.
Но что показывают примеры с ls ../../*/../*/*/../../*/*/*/*, а также примеры на питоне и php?
Разве ls по умолчанию устанавливает флаг GLOB_LIMIT?
Этот параметр по идее должен устанавливаться как раз только на чем-то типа ftp серверов:
«This option should be set for programs that can be coerced
into a denial of service attack via patterns that expand
to a very large number of matches, such as a long string
of `*/../*/..'.»
(man glob)
То, что уязвимость в функции glob — верю.
Но что показывают примеры с ls ../../*/../*/*/../../*/*/*/*, а также примеры на питоне и php?
Разве ls по умолчанию устанавливает флаг GLOB_LIMIT?
Этот параметр по идее должен устанавливаться как раз только на чем-то типа ftp серверов:
«This option should be set for programs that can be coerced
into a denial of service attack via patterns that expand
to a very large number of matches, such as a long string
of `*/../*/..'.»
(man glob)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Уязвимость в стандартной функции glob() как угроза для FTP-серверов