636 Commits

Author SHA1 Message Date
Lukas Seidel
17a0d9e8f0
Forkserver: Add file input support (#880)
* make use of clap derive in forkserver_simple

* (re)introduce use_shmem_testcase flag to ForkserverExecutor

* set use_shmem_testcase flag automatically based on forkserver handshake

* remove illegal_state and just .unwrap instead as the None case is unreachable

* fix: removed pub method

* cargo fmt

* remove illegal_state #2 and just .unwrap instead as the None case is unreachable

* change shmem unwrap to unwrap_unchecked

* fix double mut

* removed @@ warning
2022-11-10 15:25:52 +01:00
Langston Barrett
893f284482
Use bytes, not strings, for stdio observers (#885)
Previously, the `CommandExecutor` attempted to decode its child
process's stdout and stderr as UTF-8 `String`s. This could fail
if the output was not UTF-8. However, the `Std{Out,Err}Observer`s
should probably be able to be used in such a situation - Consider
fuzzing `echo` with a random `BytesInput`.

The fix is to not decode the output, but rather directly store and
provide the bytes of stdout/stderr in the observers.
2022-11-10 12:40:59 +01:00
Dominik Maier
1486c204eb
Remove unused stage stub (#882)
* GetDeps Stage

* removed getdeps stage
2022-11-10 09:39:29 +01:00
Dominik Maier
6b6570ae5f
Use Associated Types for Has* traits and AsSlice (#881)
* More Associated Types

* AsSlice associated-ified

* added script to find unused files

* fixes for python

* build all the things

* windows fixes
2022-11-10 09:31:04 +01:00
Peter Whiting
18f288e2d3
Monitor to export fuzzer metrics to Prometheus server (#875)
* add custom monitor prometheus as a baseline to build functionality

* working server, set up function to update metrics in the registry

* for a test

* metrics for corpus count, objective count, executions, execution rate are intermittently updated and exposed on /metrics

* add runtime metric, clean up some comments

* IP:PORT as argument instead of hardcoded

* add client # as label attached to fuzzer metrics for filtering by client. add clients_count as a tracked metric

* added support for custom metrics added to client_stats via feedbacks, such as edges count. cleaned up code

* cargo fmt

* clean up prometheus.rs

* ran autofix and fmt scripts, and put optional dependencies behind prometheus_monitor feature

Co-authored-by: Dominik Maier <domenukk@gmail.com>
2022-11-07 19:01:59 +01:00
David CARLIER
b9bd0dd6b7
sort of fix core affinity on mac arm64 (#873)
* sort of fix core affinity on mac arm64
we can t pin to a coreid however we can at least choose the performance
cores for our thread.

* using other cores as well

* Fix CI yml (#871)

* Fix CI again (#872)

* Fix CI yml

* Fix CI

* Add dump_register/write_crash for freebsd arm64 (#870)

Co-authored-by: Dominik Maier <domenukk@gmail.com>

* Remove QEMU-Nyx & packer submodules

Co-authored-by: Dominik Maier <domenukk@gmail.com>
Co-authored-by: Dongjia "toka" Zhang <tokazerkje@outlook.com>
2022-11-05 21:52:43 +09:00
David CARLIER
79fc952f53
Add dump_register/write_crash for freebsd arm64 (#870)
Co-authored-by: Dominik Maier <domenukk@gmail.com>
2022-10-29 09:40:25 +02:00
David CARLIER
3054a69cf6
Dump_registers update on netbsd x86_64 arch. (#863) 2022-10-26 09:51:45 +02:00
Andrea Fioraldi
31077765de
Fix CI (#862)
* Autofix with new clippy

* Clippy
2022-10-26 09:41:08 +02:00
Sönke
332c2bc3f8
Fix launcher to work with returning run_client functions (#860) 2022-10-24 21:40:24 +02:00
Andrea Fioraldi
1eb738695f
Fix stdio observer refactor (#859) 2022-10-24 13:50:11 +02:00
Dominik Maier
de99ee1340
Doc fix (#857) 2022-10-24 03:32:16 +02:00
Dominik Maier
663a33168e
Associated types for Corpus, State (#767)
* Associated types for Corpus, State

* cleanup

* fix no_std

* drop unused clauses

* Corpus

* cleanup

* adding things

* fixed fuzzer

* remove phantom data

* python

* progress?

* more more

* oof

* wow it builds?

* python fixes, tests

* fix python fun

* black fmt for python

* clippy, added Nop things

* fixes

* fix merge

* make it compile (#836)

* doc-test fixes, prelude-b-gone for cargo-hack compat

* fixes for windows, concolic

* really fix windows, maybe

* imagine using windows

* ...

* elide I generic when used with S: State

* Elide many, many generics, but at what cost?

* progress on push

* Constraint HasCorpus, HasSolutions at trait definition

* remove unused feature

* remove unstable usage since we constrained HasCorpus at definition

* compiled, but still no type inference for MaxMapFeedback

* cleanup inprocess

* resolve some std conflicts

* simplify map

* undo unnecessary cfg specification

* fix breaking test case for CI on no-std

* fix concolic build failures

* fix macos build

* fixes for windows build

* timeout fixes for windows build

* fix pybindings issues

* fixup qemu

* fix outstanding local build issues

* maybe fix windows inprocess

* doc fixes

* unbridled fury

* de-associate State from Feedback, replace with generic as AT inference is not sufficient to derive specialisation for MapFeedback

* merge update

* refactor + speed up fuzzer builds by sharing build work

* cleanup lingering compiler errors

* lol missed one

* revert QEMU-Nyx change, not sure how I did that

* move HasInput to inputs

* HasInput => KnowsInput

* update bounds to enforce via associated types

* disentangle observers with fuzzer

* revert --target; update some fuzzers to match new API

* resolve outstanding fuzzer build blockers (that I can run on my system)

* fixes for non-linux unixes

* fix for windows

* Knows => Uses, final fixes for windows

* <guttural screaming>

* fixes for concolic

* loosen bound for frida executor so windows builds correctly

* cleanup generics for eventmanager/eventprocessor to drop observers requirement

* improve inference over fuzz_one and friends

* update migration notes

* fixes for python bindings

* fixes for generic counts in event managers

* finish migration notes

* post-merge fix

Co-authored-by: Addison Crump <addison.crump@cispa.de>
2022-10-24 03:22:26 +02:00
Dominik Maier
9695ce0029
Refactor Output Observers (#856)
* Refactor Output Observers

* Delete .gitmodules

* modules

* Drop need for OutputObserving list
2022-10-24 02:50:00 +02:00
Dongjia "toka" Zhang
5b75b6b8ac
Set persistent mode env variables. (#852)
* persistnt mode envs

* clp

* clpgit add -u!
2022-10-23 20:35:35 +02:00
Alessandro Mantovani
0307dadcd1
Allow two different observers for DiffExecutor (#843)
* DifferentialExecutor for CommandExecutor along with StdIO observer

* format

* fix CI issues

* fix format and unit test

* fix documentation

* allow three structs and doc only for linux

* resolve documentation test failure

* minor

* running fmt_all.sh

* into_executor() takes 4 params, not just 1

Co-authored-by: Dominik Maier <domenukk@gmail.com>
2022-10-23 01:59:40 +02:00
Dongjia "toka" Zhang
64ec5c30ae
Fix aarch64 read_time_counter() (#849)
* Revert #790 Changes

* fmt

* fix?
2022-10-21 16:23:30 +09:00
Dominik Maier
28ab5e224b
Fix baby_no_std (#846)
* Fixing baby_no_std

* Fixed warnings for no_std

* Fix aarch build, clippy

* oops nyx again

* Using CString from alloc
2022-10-19 14:14:10 +02:00
Dominik Maier
e8b3d33bf4
Update dependencies, removed unused deps, CI fixes (#839)
* update clap, remove unused deps

* update grammartek

* update pyo3

* update pyo3

* undid clap update

* not changing nyx

* updated deps

* Update more deps, fixes

* not needed clippy

* fix windows

* try to enable deprecated pyproto for pyo3

* unused

* moving some things to clap4 after all

* initial move to clap 4

* fix clap

* more clap4, removed accidental file

* fixes, fmt

* fix

* all fix no play

* fix
2022-10-18 20:36:43 +02:00
Dongjia "toka" Zhang
dee3bc4492
Fix windows timeout 2022-10-17 10:00:59 +09:00
Mrmaxmeier
f5cc354102
Token mutations: set MutationResult for CmpValues::Bytes (#838)
* token mutations: set MutationResult for CmpValues::Bytes

I haven't measured this and am not even sure if CmpValues::Bytes is
currently populated by any executor, but this seems like an oversight.

* replace dead zlib-1.2.12.tar.gz URL

See https://zlib.net/fossils/OBSOLETE
2022-10-14 13:03:57 +02:00
expend20
bb3d6b3688
Frida Windows: calling original UnhandledExceptionFilter in the hook (#832) 2022-10-13 09:06:15 +02:00
Andrea Fioraldi
089bc49d55
Bump to 0.8.2 and update versions script (#828) 2022-10-12 14:57:08 +02:00
Dominik Maier
94f0c7f56e
Moving to named parameters in format strings (#827)
* autofix

* you're just asking for a clamping

* autofmt on linux

* fix nits

* change back nit

* unfixing as u64 for GuestAddr

* fix

* ignoring clippy for GuestAddress
2022-10-11 13:45:01 +02:00
Dominik Maier
f3e8ed832b
Fix formatting (#822) 2022-10-07 02:15:23 +02:00
Dominik Maier
c61bb8cd5e
Fix formatting (#821)
* Format
2022-10-07 02:13:55 +02:00
Dominik Maier
8a4bbe3d0b
Fix FreeBSD CI (#820)
* Fix FreeBSD CI

* Fixed tests for freebsd
2022-10-06 17:43:59 +02:00
expend20
8fa4bca2d9
Hook IsProcessorFeaturePresent to crash with STATUS_STACK_BUFFER_OVERRUN exception (#804)
* First working attempt

* formatting issues

* Safety comment

* got rid of mutex

* Pass gum as a parameter

* removed debug println

* Review comments

* review: switched back to panic
2022-10-05 22:26:19 +02:00
Patrick Gersch
c4a9b5f373
Changes for Linux without fork feature (#814)
* Minor changes for linux without fork feature

* cargo fmt
2022-10-04 20:32:33 +02:00
Dongjia "toka" Zhang
e4f0e1df99
Fix CI (#810)
* fix

* fix

* fix

* removed allow(unused)

* removed feature from powerset

* fixing win

* tidying up

* cfg guards galore

* cfg for unused

* more cfg

* more fixes

* more cfgs

Co-authored-by: Dominik Maier <dmnk@google.com>
2022-10-04 17:29:42 +02:00
Dongjia "toka" Zhang
caa560b7a0
TimeoutInprocessForkExecutor (#797)
* TimeoutInprocessForkExecutor

* no_std

* linux only

* OK

* crash -> timeout
2022-10-03 21:44:03 +02:00
Dominik Maier
b7d93a4bea
Hide prelude behind feature flag (#782)
* Hide prelude behind feature flag

* make prelude default
2022-09-30 20:30:28 +02:00
Dominik Maier
cc0c2f32ae
Additional errors only in test (#809) 2022-09-30 20:28:51 +02:00
Andrea Fioraldi
99a105d907
Disable ObserversOwnedMap due to new Rust error (#807)
Co-authored-by: Andrea Fioraldi <andrea.fioraldi@trellix.com>
2022-09-30 11:34:28 +02:00
radl97
30f143cd3d
Add ability to use virtual dispatch to StagesTuple (#801)
* Add ability to use virtual dispatch to stagesTuple

* Fix lint
2022-09-29 02:32:24 +02:00
David CARLIER
279bb77f30
Support for bolts::cpu::read_time_counter on arm64 (#790) 2022-09-27 23:38:50 +02:00
David CARLIER
be0ae3a55e
Support for write_crash on netbsd (#788) 2022-09-27 23:37:50 +02:00
Andrea Fioraldi
c0bb1bc1e6
Fix len miscalculation in grimoire string replace (#794)
* Fix len miscalculation in grimoire string replace

* ok Rust i was writing JS these days

Co-authored-by: Andrea Fioraldi <andrea.fioraldi@trellix.com>
2022-09-21 14:19:54 +02:00
expend20
eebc412fb4
Windows gdiplus (#789)
* Initial steps

* Harness code cleanup

* don't panic on linux in order not to break the CI

* formatting once again

* restored cfg unix to unbreak linux build
2022-09-18 15:33:25 +02:00
David CARLIER
577f0be832
[AFLplusplus/LibAFL] dump registers on OpenBSD amd64 (PR #787)
* dump registers on openbsd

* write_crash implementations
2022-09-15 22:46:33 +02:00
David CARLIER
100e4ad433
Dump registers on NetBSD amd64 (#786) 2022-09-15 16:23:16 +02:00
Andrea Fioraldi
74955d5376
Extend gramatron recursive mutator (#783) 2022-09-14 10:24:50 +02:00
David CARLIER
f5a5c08e5d
Illumos support (#775)
implementing core affinity too.
2022-09-13 13:50:20 +02:00
David CARLIER
23e655d7dd
Dump registers on freebsd x86_64 (#779) 2022-09-13 13:49:39 +02:00
Dongjia "toka" Zhang
7aadf31246
Add track_stability option to CalibrationStage (#781)
* add

* Update gramatron.rs

* Update emu.rs

* try

* clp
2022-09-13 09:39:17 +02:00
Dongjia "toka" Zhang
7f7e0ee6ac
Fix doc (#780) 2022-09-12 18:59:57 +02:00
Dongjia "toka" Zhang
d17269d3d5
Stability improve (#773)
* initial

* add

* fmt & fix

* dbg remove

* clp

* clp

* more

* clippy

* del

* fix

* remove unused

* fix

* doc
2022-09-12 18:08:07 +02:00
Dongjia "toka" Zhang
b863142829
Fix forkserver options (#771) 2022-09-09 02:42:16 +02:00
Vincent
10f5c0f07a
Fix cargo doc on windows (#762)
* add doc cfg

* fix nostd docs

* ignore CommandConfigurator doc test execution on non-unix platform

* add cargo doc step pipeline on windows platform
2022-09-04 09:34:26 +02:00
Dominik Maier
1f5189a6a6
Do not zero-init struct in QEMU (#758)
* New Clippy fixes for QEMU

* no need to 0-initialize mem

* clippy
2022-09-03 08:27:41 +02:00