3586 Commits

Author SHA1 Message Date
107ccf03a8 config updates 2025-02-17 18:35:02 +01:00
WorksButNotTested
f5a01ee20d
Asan guest fix (#2986)
* Check for initialization of libgasan.so on first_exec

---------

Co-authored-by: Your Name <you@example.com>
2025-02-17 17:06:42 +01:00
Dongjia "toka" Zhang
91c46d1a33
Update CONTRIBUTING.md to forbid cyclic dependency (#2999) 2025-02-17 17:00:23 +01:00
Dongjia "toka" Zhang
ae3ea23607
PR Template (#2997) 2025-02-17 16:05:33 +01:00
forky2
a30cce1d88
Fixes #2966 and #2967: Ensure DRCOV unique IDs and max 4GiB ranges. (#2968)
* Fixes #2966 and #2967: Ensure DRCOV unique IDs and max 4GiB ranges.

* Formatter.
2025-02-17 14:51:15 +01:00
Marco C.
47f7978b91
Bump Libipt 0.3, add HW breakpoint support (#2984)
* Decode with callback

* WIP restore intelpt module

* Fix build_target if target_dir doesn't exist

* WIP itelpt qemu/kvm example: bootloader

* qemu config refactoring

* Fix intel_pt_command_executor target dir

* * QEMU error refactoring*
* back to one QEMU init function
* other small things

* update test

* Bump libipt

* waitpid_filtered to ignore SIGWINCH

* Fix warnings unused manifest key: *.version

* Add export_raw feature to libafl_intelpt

* derive Debug for IntelPTHook

* Clippy

* Light refactor of EmulatorModules

* qemu is now a parameter to EmulatorModule callbacks and most function hooks.
* EmulatorModules is initialized before QEMU is initialized.

* Update target program ELF offsets

* fmt

* * asan fixed size accesses working with generics
* continue to propagate qemu argument as hook first parameter
* use pre_syscall* and post_syscall* everywhere
* fix some clippy stuff

* fmt

* Add comment to KVM pt_mode check

* refactor

* Add intel_pt_export_raw feature in libafl

* fix fuzzers

* * refactor asan and asanguest modules to avoid custom init of QEMU and use the module interface instead.
* adapt qemu_launcher example to fully work with emulator, since qemu must now be initialized by emulator.

* fmt

* clippy

* fix qemu_coverage

* fmt

* forgot qemu args in launcher

* map_error instead of unwrap

* use correct args

* Update to new libafl_qemu

* adapt api

* borrow checker friendly join_split_trace

and copy trace before deocde to prevent decoding failures

* testing stuff

* Set ip_filters (also) with builder

* Move trace to file

* Store a pt_builder in module

enable the setting of filters and other pt settings

* baby_bootloader target

* Best bootloader ever

* new builder?

* use closure for qemu config from emulator builder.

* better format

* clippy + fmt

* Fix build target

Create target directory if doesn't exist

* Remove filter on speculatively exec blocks

since also committed blocks can have this flag

* Add current ip_filters getter

* Fix possibile infinite loop in trace decode

* HW breakpoint + snapshot

* add snapshot and exit at first objective

* prefer raw pointers to slice_from_raw_parts_mut

since the latter is highly unsafe and allows more potentially dangerous reordering

* Add cpu option to QEMU config

* Add cpu option and minor improvements

* fix cargo run causing recompile

* no default devices

* windows clippy fix

* Exclude intel_pt feature from CI as all systemmode feats

* Add qemu_intel_pt_bootloader to CI

* Fix NopPageFilter

* Fix qemu_config

* Restore HW breakpoints

* Lints

* return Result for hw bp set/remove

* mark join_split_trace as unsafe

* Put the qcow2 in a tmpfs ramdisk

10x exec/sec

* Post merge fixes

* Try out libipt 0.3 alpha

* Try out libipt 0.3 alpha also in hook

* Clippy

* New libipt

* Post merge fixes

* Bump libipt

* Drive cache None

* Post merge fixes

* Use SectionInfo from libipt

* No slice::from_raw_parts_mut, just use raw pointer

* Cache the decoder builder

* Update qemu-bridge

* Add qemu -append param

* Move linux specific code to a mod, less #[cfg]s

* Add qemu initrd config

* Add qemu monitor tcp

* Add not enough ip filters message

* Fix wrong must_use

* Prevent possible infinite loop in block decoding in debug mode

* Clippy

* fix CI?

* Revert, keep libipt 0.3 and hw bp

---------

Co-authored-by: Romain Malmain <romain.malmain@pm.me>
Co-authored-by: Marco Cavenati <marco@lenovo300e>
2025-02-17 14:50:07 +01:00
Romain Malmain
530a3cc6aa
Better error for libafl_cc when binaries are not found (#2988)
* better error when libafl_cc does not work as expected

* better msg, clippy
2025-02-17 14:47:38 +01:00
dependabot[bot]
d382b8381e
Update errno requirement from 0.2 to 0.3 (#2994)
Updates the requirements on [errno](https://github.com/lambda-fairy/rust-errno) to permit the latest version.
- [Release notes](https://github.com/lambda-fairy/rust-errno/releases)
- [Changelog](https://github.com/lambda-fairy/rust-errno/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lambda-fairy/rust-errno/compare/v0.2.0...v0.3.10)

---
updated-dependencies:
- dependency-name: errno
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-17 13:42:41 +01:00
dimeko
94d6c51363
chore: adds check for riscv64 and riscv32 archs (#2993) 2025-02-17 13:03:09 +01:00
henri2h
9a2a42ccca
Fix libafl_unicorn CI (#2991)
* fix: clippy

* fix: allow specifying thumb mode or not

* fix: timeout for testcase
2025-02-17 10:45:07 +01:00
Dominik Maier
53004f93d6
Improvements for QEMU_Launcher (#2983)
* Improvements for QEMU_Launcher

* fix
2025-02-17 02:45:02 +01:00
Dongjia "toka" Zhang
8b49d81406
Better addr2line (#2989)
* better addr2line

* delete unused

* more

* fixer?

* lol

* class

* mm

* take care of non pie binary or pie binary

* user mode only
2025-02-16 19:18:09 +01:00
henri2h
0aba2c4520
Add support for Unicorn engine (#1054)
* feat: unicorn support

* feat: update

* fix: remove unused files

* fix: clean

* fix: remove undeeded parameters

* fix: typo

* moved to justfile

* use log::debug!

* fix cargo and created justfile

* feat: add CI

* add runs on

* fix: CI

* fix: CI

* fix: don't use fork executor

* not needed anymore

* fix: CI

* fix: CI

* remove extra space
2025-02-15 04:15:16 +01:00
mkravchik
b3fe744e57
Pr/fasan multithreading fixes upstream (#2955)
* Fixing the test_harness library name

* Fasan works, but testing of all features is pending

* Tests pass, before fixing clippy and fmt

* CLippy+fmt

* CLippy+fmt+tests running on linux

* Clippy

* Not stalkering the fuzzer. In the correct way

* Removing the instrumentation upon crash. Proper hooking of UnmapViewOfFile

* Fixes after the merge from the upstream (before 0.15.0). Still need to add the observer, clippy, fmt, and at least linux compilation

* Adding the helper observer and using it in the test

* Removing the observer from the wrong location

* Adapting to the new helper ownership model

* Adding an observer to shut down instrumentation upon crash

* Clippy + fmt

* Using mimalloc everywhere

* Deactivating before activating with the harness. Otherwise, gets stuck on Linux.

* Fixing imports for windows

* Using the new way of passing the handler

* Using frida_helper_shutdown_observer

* Clippy+fmt

* no-std, clippy

* Fmt

* Stable thread_id

* Clippy 18

* More clippy

* Formatting toml

* Fixing apples

* Fixing apples 2

* Fixing apples 3

* Upping to 0.16.7 (necessary for Windows)

* Clippy+fmt

* Enabling the allocator test after the fix and clarifying the importantce of the static runtime linking.

* Moving has_tls to bolts

* Proper handling of no-std, hopefully

* Another attempt to fix win no-std

* Not mine clippy complaint...

* Not mine clippy complaint #2...

* Dlmalloc not used, removing from dependencies

* Restoring target in config.toml (otherwise fails CI on Linux)

* lots of digging around, pray for us

* fixup?

* Revert "lots of digging around, pray for us"

This reverts commit 706c27201918e906e3401cd0d9e76546f889d1f5.

* Revert "fixup?"

This reverts commit 1d7c5d4fb5b1bd31f5e0c07492aa8ed64c6822f3.

* Revert artifact

* Revert fixups

* Removing unused

* Reverting to upstream/main

---------

Co-authored-by: Addison Crump <addison.crump@cispa.de>
Co-authored-by: Dongjia "toka" Zhang <tokazerkje@outlook.com>
2025-02-14 13:45:38 +01:00
Dominik Maier
f9715392af
Try to solve corpus issue related to #2981 (#2982)
* Try to solve corpus issue related to #2981

* clippy
2025-02-14 02:07:14 +01:00
Dongjia "toka" Zhang
c53e51584b
Separate addr2line code from asan module (#2980) 2025-02-13 17:56:17 +01:00
7d1e4fd171 plotting + minia fix 2025-02-13 16:38:29 +01:00
Dongjia "toka" Zhang
7202e2a26e
Replace "cargo make" to "just" in md files (#2979)
* justify

* justify
2025-02-13 14:35:38 +01:00
Dongjia "toka" Zhang
b067435862
Align addresses before calling qemu.unmap in Snapshot module (#2978)
* alignment

* a
2025-02-13 14:17:48 +01:00
Romain Malmain
cb471a9282
Move to just (binary_only / full_system) (#2949)
* just port for binary only / systemmode fuzzers

* introduce just libraries, with pre-initialized variables and common recipes

---------

Co-authored-by: Dongjia "toka" Zhang <tokazerkje@outlook.com>
2025-02-13 12:42:38 +01:00
Dongjia "toka" Zhang
99e763ff7d
Fix libafl_targets macros for windows(#2976) 2025-02-13 12:18:04 +01:00
Dongjia "toka" Zhang
33db263260
Fix brk() handling for snapshot module (#2970)
* drop grown address

* this clippy lint literally makes 0 sense!

* i hate you rust

* mm

* don't use drop! add comments for why alignment is not necessary
2025-02-13 11:33:24 +01:00
Dominik Maier
bdcc0c56e4
Remove outdated comment in QEMU_Launcher (#2975) 2025-02-13 02:23:08 +01:00
EvianZhang
f3887697ba
Use expect instead of allow for clippy cast_precision_loss (#2974) 2025-02-13 01:55:05 +01:00
EvianZhang
5281b41abb
Add StatsD monitor (#2969)
* Add StatsD monitor

* Fix

* Use f64 instead of fractal
2025-02-13 01:15:27 +01:00
Dongjia "toka" Zhang
0736c56647
Add getter method to QemuMappingsViewer (#2973) 2025-02-12 18:34:24 +01:00
4d29735354 hash notify value, config fixes 2025-02-12 17:24:16 +01:00
558b464c1a all new benchmark scripts 2025-02-12 17:03:30 +01:00
Dongjia "toka" Zhang
cb3abf27a3
Add a functionality to see the current qemu mappings. (#2971)
* add

* a

* take qemu

* fix for fuzzers
2025-02-12 16:56:36 +01:00
WorksButNotTested
739156cb23
Add SnapshotModule to qemu_launcher (#2887)
* Add SnapshotModule to qemu_launcher

---------

Co-authored-by: Your Name <you@example.com>
2025-02-11 18:42:20 +01:00
WorksButNotTested
4cb4b6df77
Change qemu_cmin to use snapshots (#2939)
* Change qemu_cmin to use snapshots

* Use features to support both fork and snapshot modes

---------

Co-authored-by: Your Name <you@example.com>
2025-02-11 18:36:17 +01:00
Dominik Maier
b7fcfdd192
Change combine_monitors macro to be tuple_list of Monitors (#2963)
* Make Monitors tuple_list

* fix

* no_std

* unused

* more
2025-02-11 02:40:53 +01:00
Dominik Maier
c62c6a7ecc
Move statistics to monitors/stats (#2962)
* Move statistics back to monitors/stats

* More fun

* more stats

* more
2025-02-11 01:07:17 +01:00
dependabot[bot]
e5ae6c361f
Update strum requirement from 0.26.3 to 0.27.0 (#2959)
Updates the requirements on [strum](https://github.com/Peternator7/strum) to permit the latest version.
- [Release notes](https://github.com/Peternator7/strum/releases)
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/compare/v0.26.3...v0.27.0)

---
updated-dependencies:
- dependency-name: strum
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dongjia "toka" Zhang <tokazerkje@outlook.com>
2025-02-10 21:22:43 +01:00
dependabot[bot]
a682deb31a
Update color-backtrace requirement from 0.6.1 to 0.7.0 (#2960)
Updates the requirements on [color-backtrace](https://github.com/athre0z/color-backtrace) to permit the latest version.
- [Changelog](https://github.com/athre0z/color-backtrace/blob/master/CHANGELOG.md)
- [Commits](https://github.com/athre0z/color-backtrace/compare/v0.6.1...v0.7.0)

---
updated-dependencies:
- dependency-name: color-backtrace
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dongjia "toka" Zhang <tokazerkje@outlook.com>
2025-02-10 18:43:42 +01:00
dependabot[bot]
5ebb3913d8
Update strum_macros requirement from 0.26.4 to 0.27.0 (#2961)
---
updated-dependencies:
- dependency-name: strum_macros
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dongjia "toka" Zhang <tokazerkje@outlook.com>
2025-02-10 18:24:42 +01:00
EvianZhang
800b8b417d
Add global stats cache (#2956)
* Add global stats cache

* Fix

* Make clippy happy

* Merge manager files; Implement default for GlobalStats

* fmt code

* Use &Cow to avoid unnecessary clone

* Avoid push_str without cleanup
2025-02-10 16:11:36 +01:00
Dongjia "toka" Zhang
404227d1a3
Don't panic inside sig handler (#2958)
* fix_handler

* hello

* fmt

---------

Co-authored-by: Your Name <you@example.com>
2025-02-10 10:56:07 +01:00
Dongjia "toka" Zhang
2c741c8f38
Move to Just (#2952)
* move to just

* fuzzbench

* shell check

* version

* rme

* fixer

* fixing

* libpng friends

* pwd

* ps

* ps

* no fail fast.. for now

* windows

* l

* no powershell

* a

* fk

* fixer

* a

* Revert "fixer"

This reverts commit 76ae72d68686ead01ef914b658c5d8dac5aaee32.

* plzplz

* aaaa

* aa

* aa

* use absolute path, use LIBAFL_CC and LIBAFL_CXX

* why tabs????

* this job is not fun

* aa

* tmate debug

* disable cacheing

* del

* deldelg

* rename

* aaaa

* lol

* aaa

* lol

* lol

* 2nd tmate ...

* a

* lol

* lll

* shell ck

* please i'm about to cry

---------

Co-authored-by: Your Name <you@example.com>
Co-authored-by: Romain Malmain <romain.malmain@pm.me>
2025-02-09 18:44:50 +01:00
Dongjia "toka" Zhang
89e470250f
Properly use in_handler (#2957)
* properly use it

* a

* a

* typo
2025-02-09 15:08:09 +01:00
Addison Crump
83d88546d3
Better type_eq (#2946)
* typeid that doesn't suck

* actually, that's not const!

* format, move phantomdata to alloc feature block

* a

---------

Co-authored-by: Dongjia "toka" Zhang <tokazerkje@outlook.com>
2025-02-08 14:12:12 +01:00
EvianZhang
abe955137f
Remove base-pattern for Monitor (#2953)
* Remove base-pattern for Monitor

* Fix runtime parameter for log_record

---------

Co-authored-by: Dongjia "toka" Zhang <tokazerkje@outlook.com>
2025-02-08 14:08:00 +01:00
EvianZhang
075fb0daa2
Fix clippy (#2954) 2025-02-08 13:10:55 +01:00
EvianZhang
ce01f4a427
Move start_time to ClientStatsManager (#2948)
* Move start_time to ClientStatsManager

* Remove unnessary &self

* Make clippy happy

* Make clippy happy
2025-02-07 16:39:39 +01:00
Dongjia "toka" Zhang
c03dfd9daf
Revert "Move to just (#2924)" (#2951)
This reverts commit 00582d849478ed4c2cd5ba5c7c9f46359555bd08.
2025-02-07 15:29:02 +01:00
Celian G.
64554d68bb
Small improvements for Qemu (#2938)
* Remove uneeded Executor trait from handlers functions + set inproc_qemu_crash_handler to pub

* Add some documentation for QemuHooks

---------

Co-authored-by: celian <cglenaz>
2025-02-07 13:28:11 +01:00
809f3b0d6a config changes 2025-02-07 12:43:42 +01:00
Dongjia "toka" Zhang
00582d8494
Move to just (#2924)
* move to just

* fuzzbench

* shell check

* version

* rme

* fixer

* fixing

* libpng friends

* pwd

* ps

* ps

* no fail fast.. for now

* windows

* l

* no powershell

* a

* fk

* fixer

* a

* Revert "fixer"

This reverts commit 76ae72d68686ead01ef914b658c5d8dac5aaee32.

* plzplz

---------

Co-authored-by: Your Name <you@example.com>
2025-02-07 11:26:33 +01:00
EvianZhang
45205d4dc6
Update MIGRATION (#2947) 2025-02-07 09:40:32 +01:00
EvianZhang
ab50afe8e4
Add statistics. Move client stats from Monitor to EventManager (#2940)
* Add statistics entity. Move client stats from Monitor to EventManager

* Fix warning in no_std

* Make rustfmt happy

* Fix more

* Fix with feature tcp_manager on

* Rename more introspection monitor; Remove unnecessary client_stats

* Fix unused import for no_std

* Fix unused import for prometheus_monitor feature on

* Cleanup docs
2025-02-06 16:58:24 +01:00