Компьютерная группа реагирования на чрезвычайные ситуации (CERT) представила (http://www.cert.org/blogs/certcc/2012/04/cert_triage_tools_1...) открытый инструментарий CERT Triage Tools 1.0 (http://www.cert.org/vuls/discovery/triage.html), нацеленный на упрощение процесса определения степени опасности различных ошибок, выявленных в результате таких техник как fuzzing-тестирование, и формирование приоритетов для исправления данных ошибок в процессе разработки. В частности, обнаружив серию ошибок, приводящих к краху, разработчик может быстро оценить какие из ошибок представляют угрозу с точки зрения безопасности и требуют первоочерёдного исправления.
В состав инструментария входит "exploitable" - написанное на языке Python дополнение к отладчику GDB (GNU Debugger), которое может использоваться для классификации по степени опасности ошибок в 32- и 64-разрядных приложениях на платформе Linux, выступая аналогом таких пакетов как !exploitable (http://msecdbg.codeplex.com/) для Windows и CrashWrangler (http://peachfuzzer.com/CrashWrangler) для Mac OS X. Кроме дополнения к GDB в состав входит скрипт для автоматизации проведения проверок в пакетном режиме. Например, скрипт позволяет на основании набора crash-дампов получить отчёт, какие из них содержат эксплуатируемые проблемы и в чём суть ошибок (StackBufferOverflow, DestAv, PossibleStackCorruption, BadInstruction, HeapError, FloatingPointException и т.п.);
Для проведения fuzzing-тестирования, в процессе которого осуществляется генерации потока всевозможных случайных комбинаций входных данных и фиксируются крахи, можно использовать ранее выпущенный открытый инструментарий Basic Fuzzing Framework (http://www.opennet.me/opennews/art.shtml?num=26767) (BFF (http://www.cert.org/vuls/discovery/bff.html)), который поддерживает работу в Linux и Mac OS X. В выпущенном на днях релизе BFF 2.5 была обеспечена поддержка использования классификатора CrashWrangler для Mac OS X, но так как для Linux аналогичного ПО не существовало, было решено разработать собственное решение Triage Tools. Тем не менее, Triage Tools может работать не только в сочетании с BFF, но и как отдельный инструментарий.
При беглом сравнении Triage Tools с инструментами "!exploitable" и "CrashWrangler", генерируемые при их помощи отчёты очень похожи. Но это только первое впечатление, в Triage Tools реализован принципиально другой метод анализа - если "!exploitable" анализирует весь блок, в котором присутствует инструкция, вызвавшая сбой, то Triage Tools никогда не заглядывает дальше проблемной инструкции. Кроме того, Triage Tools целиком написан на языке Python, в то время как !exploitable" написан на C++, а CrashWrangler на Ruby и Си. Использование Python существенно упрощает модификацию кода под свои нужды и интеграцию с сторонние продукты.URL: http://permalink.gmane.org/gmane.comp.security.oss.general/7539
Новость: http://www.opennet.me/opennews/art.shtml?num=33735
Теперь написать программу написания программы и скормит результат этой программе.
Получим самопишушийся самоисправляемый код.
:)
Эволюцию и естественный отбор придумали задолго до нас ;)
Программа написания программы, вы имели ввиду что-то подобное?
-------------------------------------
#/bin/sh
if [ -z $1 ]; then
echo "Usage: $0 new_program_name"
exit 1
fi
cat $0 > $1
chmod +x $1
-------------------------------------
Скорее всего речь шла о написании другой программы, а не простом копировании.
Приведенная для примера программа создает программу. Да, копированием (хотя невооруженным глазом видно, что эхнуть в другой файл можно любой текст, а затем сделать его исполняемым, тем самым получим _другую_ программу при помощи первой).
Скормить результат (первую программу) представленному в новости инструментарию тоже не проблема. Проблема автоматизировать исправление найденных с помощью инструментария ошибок. В лучшем случае получим самопишущийся и самотестирующийся по определенным критериям код. А вот исправление ошибок, пока, прерогатива человека.П.С. Да, я сегодня в роли капитана.
И подождать 1*10^9999 сто тышь миллиардов миллионов лет.
научись чему-нибудь, глядишь мозг заработает, грибная колония
Так вот какой кретин испортил верстку страницы!
На моих 1024x768 тоже очень неудобно. Нажал на "к модератору".
Похоже, у движка сайта такая себе классическая ошибка "доверие к вводу". Предполагают, что пользователь не будет вводить очень длинных слов, и всегда можно будет красиво осуществить перевод строки. Как раз по теме новости: ошибка обнаружена путём случайного эксперимента.
ребята переизобретают valgrind?
Новость читать кто будет? Аль valgrind нынче fuzzing-тестирование умеет?
> Новость читать кто будет? Аль valgrind нынче fuzzing-тестирование умеет?я почитал. написано, что цепляется к gdb, да крэшдампы анализирует. valgrind умеет то же самое, но ещё и в процессе работы, без дампов. как написано в новости — так и читаю.
Ты конечно молодец, что прочитал целых 2 абзаца новости, но если бы ты прочитал всю новость, или знал что такое fuzzing-тестирование, то сравнений с valgrind не было-бы.
бла-бла-бла, куча умных слов. а в итоге — гоняем софт под недовалгриндом и смотрим на красиво выписаные логи. ничего другого *из текста новости* не получается без libastral.
Я показал в какую сторону копать, если интересно. Если-же нужно просто адаптировать "кучу умных слов" к своей модели мира, при этом не расширяя ее - то флаг вам в руки.
а я сказал, что новость написана невнятно. вместо такой сбивающей с толку новости лучше давать просто ссылку на сайт программы да пару ссылок на ту же википедию. потому что читаю я новость — и вижу такой себе «недовалгринд», единственное достоинство которого (оно же и недостаток) — отсутствие эмулятора. и умные слова новость не спасают совершенно.ну, или хотя бы предварять новость абзацем типа «Если хотите действительно понять, что за софт тут описывают, то лучше не читайте новость, а сразу идите по ссылкам да в гугль.»
А что valgrind? Вполне себе хорошо сочетается с фаззинг-тестами. Без него можно ловить улёты и зависоны, а с ним ого-го сколько ещё ошибок можно найти. Хотя и ложняки бывают, особенно для тестов с использованием helgrind.
ну, тут можно сказать, что valgrind всё-таки ТОРМОЗИТ. оно понятно, что именно из-за эмулятора он так и крут, но тормозит.хотя для в меру небольших проектов я его именно так и гонял, например. регрессионные тесты плюс fuzzy.