LINUX.ORG.RU

Grease — утилита для поиска ошибок в бинарных файлах

 , , ,


2

3

Привет, ЛОР!

Компания Galois Inc. представила Grease – программу для статического анализа исполняемых файлов и поиска в них уязвимостей. Grease дизассемблирует исполняемый файл и строит модель его исполнения, после чего анализирует пограничные условия на предмет возможных ошибок. Использовать Grease можно как отдельно, так и плагином к системе обратного инжениринга Ghidra.

Grease поддерживает анализ исполняемых файлов ELF и динамических библиотек, содержащих код ARMv7l, PowerPC или x86_64, а также может анализировать bitcode LLVM.

Код написан на языке Haskell и распространяется под лицензией BSD-3.

>>> Репозитарий на Github

>>> Подробности

★★★★★

Проверено: dataman ()
Последнее исправление: CYB3R (всего исправлений: 3)

плагином к системе обратного инжениринга Ghidra

Насколько помню эту гидру АНБ сделала. Ой не к добру это...

Rodegast ★★★★★
()
Ответ на: комментарий от Rodegast

Насколько помню эту гидру АНБ сделала.

АНБ много что сделали. Гидра имеет открытый код, можешь сам проверить его.

hateyoufeel ★★★★★
() автор топика

Первый раз вижу Haskell в контексте какой-то полезной проги (да ещё и сразу такой высококвалифицированной) а не эзотерического программирования.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Первый раз вижу Haskell в контексте какой-то полезной проги (да ещё и сразу такой высококвалифицированной) а не эзотерического программирования.

Это потому что ты не в теме. Те же Galois пачку тулинга на нём опубликовали уже. Другой пример от них же:

https://github.com/GaloisInc/reopt

Reopt is a general purpose decompilation and recompilation tool for repurposing application logic. It does this by analyzing machine code to recover a more flexible program representation – specifically the LLVM assembly language. Once in this format, one can then apply optimization tools to optimize the LLVM, recompile the application into optimized or security hardened object code, and use Reopt to merge the recompiled code back into the original executable.

hateyoufeel ★★★★★
() автор топика
Ответ на: комментарий от hateyoufeel

АНБ много что сделали.

Не нужно думать что они что то просто так делают. Я уверен что этот grease как раз они и будут использовать, а сообщество будет его развивать и поддерживать.

Гидра имеет открытый код, можешь сам проверить его.

А ты сам когда нибудь пытался проверить открытый проект?

Rodegast ★★★★★
()
Ответ на: комментарий от firkax

Первый раз вижу Haskell в контексте какой-то полезной проги

xmonad же! А если более серьёзно, то на Haskell-е много чего полезного сделано.

Rodegast ★★★★★
()
Последнее исправление: Rodegast (всего исправлений: 1)
Ответ на: комментарий от Rodegast

АНБ много что сделали.

Не нужно думать что они что то просто так делают.

Я думаю, они открыли гидру потому что на неё зарезали финансирование из-за бюрократии, а кто-то достаточно фанатичный уговорил начальство выложить её.

Такие организации, конечно, достаточно мерзкие, но тем не менее управляются бюрократией в первую очередь. Не думаю, что тут у них есть прямо какой-то мегаплан.

А ты сам когда нибудь пытался проверить открытый проект?

Да.

hateyoufeel ★★★★★
() автор топика
Ответ на: комментарий от hateyoufeel

Не думаю, что тут у них есть прямо какой-то мегаплан.

Мегаплан вряд ли, а вот оптимизация расходов...

Да.

И как успехи?

Rodegast ★★★★★
()
Ответ на: комментарий от Rodegast

Да.

И как успехи?

Нашёл несколько дыр, заслал патчи :)

hateyoufeel ★★★★★
() автор топика
Ответ на: комментарий от Rodegast

Гидру, вроде, да. И не сделала, а проспонсировала. А этот проект вот

This material is based upon work supported by the Defense Advanced Research Projects Agency under Contract No. W31P4Q-22-C-0017 and W31P4Q-23-C-0020.

gns ★★★★★
()

Опаньки! Интересная штука. Надо на скомпилированный код на Расте это дело натравить :)

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 1)
Ответ на: комментарий от demidrol

ты неправедлив. На хаскеле еще мегаполезный для разработчиков микросхем klayout написан.

Это он ещё просто про clash не знает.

hateyoufeel ★★★★★
() автор топика
Ответ на: комментарий от firkax

Это только растаманы существующее переписывают. А на Хаскеле пишут то, чего не было :) Единственное, переписанное на хаскеле, из того, что я знаю, — это Matterhorn, TUI-клиент для матермоста.

gns ★★★★★
()
Ответ на: комментарий от Rodegast

как раз они и будут использовать, а сообщество будет его развивать и поддерживать

Вот падлы, так делают только ... ну наверно вообще все, это ж основной смысл выкладывания чего-то в опенсорс.

micronekodesu ★★★
()
Ответ на: комментарий от firkax

есть shellcheck на haskell… ах ты же программируешь в блокноте…

rtxtxtrx ★★★
()
Ответ на: комментарий от hateyoufeel

ну, тут он не уникален. Навскидку еще из той же оперы Chisel (Scala), MyHDL (Python). Все равно чистый SystemVerilog лучше.

demidrol ★★★★★
()
Ответ на: комментарий от demidrol

Chisel (Scala)

Я почитал про него и… пытаться натянуть ООП на описание железа – это просто жесть.

hateyoufeel ★★★★★
() автор топика
Ответ на: комментарий от dataman

Как можно о нём не знать, непонятно.

Элементарно. Как можно не понимать, непонятно.

Somebody ★★★
()
Ответ на: комментарий от EXL

grease supports analysis of ELF executables or shared objects containing ARMv7l, PowerPC, or x86_64 code. grease can also analyze LLVM bitcode.

@dataman добавь плз это в текст новости.

hateyoufeel ★★★★★
() автор топика
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

GREASE supports analysis of AArch32, PPC32, PPC64, and x86_64 Linux ELF binaries, as well as LLVM bitcode.

Ага, спасибо, тоже нашёл.

Жаль arm64 пока не поддерживается.

EXL ★★★★★
()
Ответ на: комментарий от hateyoufeel

Проверил гидру гидрой, сказала всё чётко на раёне. Я спокоен.

alt-tab-let ★★
()
Ответ на: комментарий от Rodegast

За компанию к AES (который Rijndael) и SELinux-у? :)

dv76 ★★★★
()

Совершенно непонятно, нафига нужна именно эта прога. У них есть другая, с тем же алгоритмом, но только без всякой декомпиляции: https://github.com/GaloisInc/crucible/tree/master/uc-crux-llvm

Работает, как я понял, с LLVM-IR, сгенерённым с помощью clang. Ну и это круто, а вот делать то же самое через декомпиляцию - по-моему, «эталонное ненужно».

anonmyous ★★
()
Ответ на: комментарий от anonmyous

«Эталонное ненужно» это тот бред, который ты пишешь. Если у тебя есть llvm ir то у тебя скорее всего есть и исходник, и ты можешь пользоваться обычным анализатором для исходника. А эта прога совсем для другого, и поддержка llvm ir в неё скорее всего добавлена просто потому что это было несложно.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от theNamelessOne

На тот случай, если у тебя нет исходников, а только бинарник?

А вы часто анализируете собственные проги, на которые у вас же и нет исходника? Или: а вы часто анализируете проги, автором которых не являетесь? Или: а у вас много прог под линуксом, на которые у вас нет исходников, но есть огромное желание их анализировать?

В общем, позадавайте себе этот вопрос в разных вариациях. :)

И вот ещё вопрос: чего в добьётесь, найдя потенциальную ошибку в проге без исходников? Править-то как?

anonmyous ★★
()
Последнее исправление: anonmyous (всего исправлений: 1)
Ответ на: комментарий от firkax

Если у тебя есть llvm ir то у тебя скорее всего есть и исходник, и ты можешь пользоваться обычным анализатором для исходника.

Если бы вы удосужились прочитать алгоритм их работы, а он там подробно описан - то поняли бы, что это и есть анализатор. Новый, не было таких пока. Использует символическое исполнение и сат-солвер.

anonmyous ★★
()
Ответ на: комментарий от gns

Вердикт. Ниасилил, сукасложно! :)

much of the standard library will be included in a typical Rust program

Т.е. для больших программ на C/C++ тоже не подойдет, это для анализа Hello world’ов?

blex ★★★
()
Ответ на: комментарий от anonmyous

Это анализатор для скомпилированного кода, когда ты просто достал/украл откуда-то неизвестный бинарник и хочешь по-быстрому найти список возможных векторов атаки на него для дальнейшего анализа, не тратя на эту подготовку ручную работу. А вовсе не для анализа собственного софта к которому у тебя есть все материалы - для этого есть традиционные средства. Так что твоё «давайте просто возьмём вывод компилятора» это чушь, свидетельствующая о полном непонимании темы.

firkax ★★★★★
()
Ответ на: комментарий от anonmyous

А вы часто анализируете собственные проги, на которые у вас же и нет исходника? Или: а вы часто анализируете проги, автором которых не являетесь? Или: а у вас много прог под линуксом, на которые у вас нет исходников, но есть огромное желание их анализировать?

Я вообще не занимаюсь анализом under-constrained execution программ. Значит ли это, что ни сабж, ни твой анализатор не нужны?

theNamelessOne ★★★★★
()
Ответ на: комментарий от firkax

Это анализатор для скомпилированного кода, когда ты просто достал/украл откуда-то неизвестный бинарник

Так вы виндузятник чтоль? У нас-то все исходники есть, и ничего красть не нужно.

anonmyous ★★
()
Ответ на: комментарий от theNamelessOne

Я вообще не занимаюсь анализом under-constrained execution программ.

under-constrained execution - это техника, которую они используют для анализа. Грубо говоря, это означает, что они накладывают «слабые» ограничения по контрактам на исполнение различных блоков данной программы. А значит, детектят не всё. Есть ещё over-constrained execution - это когда ограничения накладываются сильные, и с ними можно попробовать доказать полную валидность программы.

anonmyous ★★
()
Ответ на: комментарий от sparkie

…открыли гидру потому что на неё зарезали финансирование из-за бюрократии…

Откуда дровишки?

Читал где-то как раз когда её открыли.

hateyoufeel ★★★★★
() автор топика
Ответ на: комментарий от theNamelessOne

Я это понимаю

Тогда должно быть понятно и то, что анализ «украденного бинарника», а не нормальной программы - это лишь частный, никому (кроме firkax) не нужный случай. Техника применима и при анализе через исходники.

anonmyous ★★
()
Ответ на: комментарий от firkax

Похоже, вам по мозгам не только переход на uefi бьёт (про который вы в соседнем топике высказывались), но и вообще, СПО и открытые экосистемы, типа ARM. Нет уж, батенька, «воруйте» и реверсьте х86 бинарники 30летней давности сами, а у нас и других дел хватает. :) Например, анализировать открытый софт тулзами этой же конторы.

anonmyous ★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.