Особенности подачи входных данных при фаззинге в режиме Persistent Mode на примере Libfuzzer + CURL

Фаззинг — один из самых эффективных инструментов для поиска ошибок и уязвимостей. Но если взять готовый движок вроде LibFuzzer и попробовать применить его к реальной утилите, быстро выясняется, что «из коробки» всё работает далеко не всегда. Большинство примеров в документации ограничиваются функцией, принимающей массив байт, тогда как в реальных программах входные данные поступают через другие каналы.

https://habr.com/ru/articles/940946/

#fuzzing #libfuzzer #curl

Особенности подачи входных данных при фаззинге в режиме Persistent Mode на примере Libfuzzer + CURL

Дисклеймер: Автор не претендует на описание самых эффективных или универсальных методов фаззинга. Автор также не исключает существование других методов решения описанных ниже проблем. Материал носит...

Хабр

Как подружить DynamoRIO и LibFuzzer

Приветствую всех обитателей Хабра и случайных гостей! Этой статьёй я хотел бы начать цикл заметок, посвящённых моей научной работе в вузе, связанной с фаззинг-тестированием. Всего на данный момент я работаю над темой 2 семестра. За это время мне много раз приходилось обращаться к интернет ресурсам в поисках информации по работе с DynamoRIO. Но, к сожалению, годных ресурсов попадалось крайне мало. Поэтому я решил облегчить судьбу другим, интересующимся этой темой и инструментарием, и состряпал данную статью. Надеюсь, кому-нибудь это да пригодится ;-)

https://habr.com/ru/articles/826932/

#фаззинг #фаззингтестирование #dynamorio #libfuzzer #ассемблер #динамический_анализ #динамическая_инструментация #динамический_анализ_кода #криптография #инструментация

Как подружить DynamoRIO и LibFuzzer

Введение Приветствую всех обитателей Хабра и случайных гостей! Этой статьёй я хотел бы начать цикл заметок, посвящённых моей научной работе в вузе, связанной с фаззинг-тестированием. Всего на данный...

Хабр
libFuzzer-based fuzzing engines for programming languages

https://github.com/ligurio/sqa-wiki/wiki/libfuzzer-ecosystem

#fuzzing #libfuzzer

We released #LibAFL 0.11 (and 0.11.1 with a doc fix).

Highlights:

  • libafl_libfuzzer: a full #LibFuzzer replacement
  • libafl_bolts: low-level building blocks for #rust
  • libafl_qemu: hooks and fuzzing in #QEMU 8, #Hexagon support, ..
  • Updated #FRIDA
  • ...

https://github.com/AFLplusplus/LibAFL/releases/tag/0.11.0

Have fun #fuzzing

Release 0.11.0 · AFLplusplus/LibAFL

Highlights libafl_qemu update to QEMU 8 Hexagon support in libafl_qemu libafl::bolts moved to its own crate, libafl_bolts: use bolts for other projects libafl_libfuzzer runtime with full libfuzzer...

GitHub

casr-libfuzzer: triage crashes in C/C++/Go/Python code found by libFuzzer/Atheris/go-fuzz

casr-libfuzzer -o out -- /fuzz_target

https://github.com/ispras/casr

#casr #fuzzing #libfuzzer #atheris #go #python #cpp

GitHub - ispras/casr: Collect crash reports, triage, and estimate severity.

Collect crash reports, triage, and estimate severity. - GitHub - ispras/casr: Collect crash reports, triage, and estimate severity.

GitHub
Организаторы Heisenbug выложили видео моего доклада про реализацию поддержки фаззинга Lua-скриптов, чтобы тестировать сервер приложений в СУБД Tarantool.

https://youtu.be/TRNifH9N5zM

#libfuzzer #afl #lua #tarantool

@anfedotoff @aflplusplus Very cool!
I had the same realization and created a multi-fuzzer utility for Rust at work (@srlabs), using #AFLplusplus #honggfuzz and #libfuzzer in parallel.

https://github.com/srlabs/ziggy

GitHub - srlabs/ziggy: A multi-fuzzer management utility for all of your Rust fuzzing needs 🧑‍🎤

A multi-fuzzer management utility for all of your Rust fuzzing needs 🧑‍🎤 - GitHub - srlabs/ziggy: A multi-fuzzer management utility for all of your Rust fuzzing needs 🧑‍🎤

GitHub

Finally published a coverage-guided, native Lua fuzzing engine. I'll do some polishing before a first release, but it's ready for use now.

Some highlights: usage is quite similar to libfuzzer - define a fuzzing target and pass it to a function Fuzz, custom mutator can be defined as a Lua function, structure-aware inputs can be constructed using Fuzzing Data Provider (the same way as in libFuzzer). Moreover, added a code for building custom mutators in Lua for libFuzzer-based targets. Enjoy!

Would be nice to hear feedback!

https://github.com/ligurio/luzer

#fuzzing #luzer #libfuzzer #lua

GitHub - ligurio/luzer: A coverage-guided, native Lua fuzzing engine

A coverage-guided, native Lua fuzzing engine. Contribute to ligurio/luzer development by creating an account on GitHub.

GitHub
The found solution is pretty simple:
1. Do fuzzing your #Go project with #libFuzzer (go-fuzz-build -libfuzzer)
2. Collect coverage using go-fuzz -dumpcover using corpus from 1
3. Use this trick: sed -i '/0.0,1.1/d' coverprofile
4. Create html report: go tool cover -html=coverprofile
5. Enjoy
#fuzzing
Does anyone know a convenient approach to get html code coverage report after fuzzing #go project with #libFuzzer (go-fuzz)?
I found this project: https://github.com/confluentinc/bincover
Looks good, but maybe we have something more?
#fuzzing
GitHub - confluentinc/bincover: Easily measure code coverage of Golang binaries

Easily measure code coverage of Golang binaries. Contribute to confluentinc/bincover development by creating an account on GitHub.

GitHub