8c35c9fb0cbd1855c6f3683d1814f113 1.57b dimstar_suse add the american fuzzing language 292839 bc784d240d219222f391be78b7df434f 1.58b dimstar_suse afl 1.58b and libexedir improvement 293476 bbfe60a91b9383dd661e691b638da8ce 1.60b dimstar_suse 1 295181 7d61228e9dff4dcf0eee4f320306618d 1.62b dimstar_suse afl 1.62b (forwarded request 295378 from AndreasStieger) 295379 bbad7d1d768914bdc1c77abdcc26832d 1.69b dimstar_suse 1 297081 f30177a8de7bfd170ad865b243940096 1.71b dimstar_suse afl 1.71b (forwarded request 298226 from AndreasStieger) 298227 2e49df504cf7a56177611519f1baee18 1.73b dimstar_suse Automatic submission by obs-autosubmit 305275 97c4bf2651a0bd0acefcebe8bbf5a8e8 1.77b coolo 1 305943 db4b525688240242ddc7674270a3a96b 1.78b coolo 1 307842 db4b525688240242ddc7674270a3a96b 1.78b coolo 1 307842 5e87531019b5c79509f8d1ba6a5f0cee 1.80b dimstar_suse afl 1.80b 309667 4f6523b0efa0bd29c2c8d66aabac8ec1 1.83b coolo afl 1.83b 312108 eaf83f5522eff95579d23c547a36a42a 1.85b dimstar_suse 1 320742 5c6d482bd88021fd927cb140f3d78337 1.86b dimstar_suse 1 321770 1628482f22422f979becc6274aa619ee 1.92b dimstar_suse afl 1.92b 329519 6a4aa3a40023cd11a728f59a8aaafd86 1.94b dimstar_suse 1 335943 007ecf44597a2d4da46d281a9fc4236a 1.95b dimstar_suse 1 344165 c0f6c65ac1165980f113f74e02d4a930 1.96b dimstar_suse 1 349658 e5e3e0df73b9ed0d4bd56fbdeedb7db6 2.01b dimstar_suse afl 2.01 359642 767913d5ac695a2272b88d536cace58b 2.04b dimstar_suse 1 361310 85572331ca9d924c6a5ae3b37d17f557 2.05b dimstar_suse afl 2.05b 362828 e1c08ff2bd624521d36db15bdd5b3168 2.09b dimstar_suse 1 381246 0fd16dce5ebed81c2047edbcc9ac0b0e 2.10b dimstar_suse 1 390313 cead3c2a1dc5319382c0a683cfa462e9 2.11b dimstar_suse 1 393279 cabb5e16f91716ecdf2060b80be7fc8c 2.13b dimstar_suse 1 399108 49349cb50a98f813061dc619c6a698a0 2.14b dimstar_suse afl 2.14b (forwarded request 402522 from AndreasStieger) 402531 aa85b19b1f41c48196100d8cf8abcde2 2.17b dimstar_suse afl 2.17b 405155 9a4dbdaa762893c4c8fceb98c64e9d93 2.21b dimstar_suse afl 2.21b 414716 8e48ec90552b9472e2317d6363b60382 2.32b dimstar_suse - Version 2.32b: - Added a check for AFL_HARDEN combined with AFL_USE_*SAN. Suggested by Hanno Boeck. - Made several other cosmetic adjustments to cycle timing in the wake of the big tweak made in 2.31b. - Version 2.31b: - Changed havoc cycle counts for a marked performance boost, especially with -S / -d. See the discussion of FidgetyAFL in: https://groups.google.com/forum/#!topic/afl-users/fOPeb62FZUg While this does not implement the approach proposed by the authors of the CCS paper, the solution is a result of digging into that research; more improvements may follow as I do more experiments and get more definitive data. - Version 2.30b: - Made minor improvements to persistent mode to avoid the remote possibility of "no instrumentation detected" issues with very low instrumentation densities. - Fixed a minor glitch with a leftover process in persistent mode. Reported by Jakub Wilk and Daniel Stender. - Made persistent mode bitmaps a bit more consistent and adjusted the way this is shown in the UI, especially in persistent mode. - Version 2.29b: - Made a minor #include fix to llvm_mode. Suggested by Jonathan Metzman. - Made cosmetic updates to the docs. - Version 2.28b: - Added "life pro tips" to docs/. - Moved testcases/_extras/ to dictionaries/ for visibility. - Made minor improvements to install scripts. - Added an important safety tip. - Version 2.27b: - Added libtokencap, a simple feature to intercept strcmp / memcmp and generate dictionary entries that can help extend coverage. (forwarded request 422107 from msmeissn) 422108 ca74e618a16398028a9ce8ecc6d24626 2.35b dimstar_suse 1 436567 d545fbda19625ba14aa6969b2f2ea031 2.39b dimstar_suse - update to 2.39b: - Improved error reporting in afl-cmin. Suggested by floyd. - Made a minor tweak to trace-pc-guard support. Suggested by kcc. - Added a mention of afl-monitor. - update to 2.38b: * Added -mllvm -sanitizer-coverage-block-threshold=0 to trace-pc-guard mode * Fixed a cosmetic bad free() bug when aborting -S sessions * Made a small change to afl-whatsup to sort fuzzers by name. * Fixed a minor issue with malloc(0) in libdislocator * Changed the clobber pattern in libdislocator to a slightly more reliable one * Added a note about THP performance * Added a somewhat unofficial support for running afl-tmin with a baseline "mask" that causes it to minimize only for edges that are unique to the input file, but not to the "boring" baseline. * "Fixed" a getPassName() problem with never versions of clang. 455996 ec4b501d4c50da1313978bd08678ba18 2.39b dimstar_suse 1 477897 57752c02c42137ca7e6edf4480793ebc 2.41b maxlin_factory - update to 2.41b: - Addressed a major user complaint related to timeout detection. Timing out inputs are now binned as "hangs" only if they exceed a far more generous time limit than the one used to reject slow paths. - update to 2.40b: - Fixed a minor oversight in the insertion strategy for dictionary words. Spotted by Andrzej Jackowski. - Made a small improvement to the havoc block insertion strategy. - Adjusted color rules for "is it done yet?" indicators. 487488 7fbfd8fecf54971d0c2b26aea9ec8610 2.44b dimstar_suse afl 2.44b 507727 f2cd2248f217c48d48674fa270aca0a4 2.45b dimstar_suse - update to 2.45b: - Added strstr, strcasestr support to libtokencap. Contributed by Daniel Hodson. - Fixed a resumption offset glitch spotted by Jakub Wilk. - There are definitely no bugs in afl-showmap -c now. 508930 c8763e4829d04296667284a307c42eff 2.49b dimstar_suse - Version 2.49b - Added AFL_TMIN_EXACT to allow path constraint for crash minimization. - Added dates for releases (retroactively for all of 2017). - Version 2.48b - Added AFL_ALLOW_TMP to permit some scripts to run in /tmp. - Fixed cwd handling in afl-analyze (similar to the quirk in afl-tmin). - Made it possible to point -o and -f to the same file in afl-tmin. - Version 2.47b - Fixed cwd handling in afl-tmin. Spotted by Jakub Wilk. - Version 2.46b - libdislocator now supports AFL_LD_NO_CALLOC_OVER for folks who do not want to abort on calloc() overflows. - Made a minor fix to libtokencap. Reported by Daniel Stender. - Added a small JSON dictionary, inspired on a dictionary done by Jakub Wilk. (forwarded request 512610 from msmeissn) 512611 b30044222b6c770b2a993257c0652100 2.49b maxlin_factory - include docs/README 513056 e81fb0fea818447a41a6c11bab29df50 2.51b dimstar_suse afl 2.51b 520490 ffd3bd2daa7929b375a62c97d54be750 2.52b dimstar_suse 539104 1871a0125bbbbb6474e1a968f1c1b524 2.52b dimstar_suse 632354 0de895c49b90ed5dc6037cc2ea2af3a0 2.52c dimstar_suse 711649 d6be61645c82848a72b5aaee4f163610 2.52c dimstar_suse 739467 4bf57340ef562a229a5a1d27d3fe5723 2.58c dimstar_suse - updated to 2.58c - reverted patch to not unlink and recreate the input file, it resulted in performance loss of ~10% - added test/test-performance.sh script - (re)added gcc_plugin, fast inline instrumentation is not yet finished, however it includes the whitelisting and persistance feature! by hexcoder- - gcc_plugin tests added to testing framework - jump to 2.57 instead of 2.55 to catch up with Google's versioning - persistent mode for QEMU (see qemu_mode/README.md) - custom mutator library is now an additional mutator, to exclusivly use it - add AFL_CUSTOM_MUTATOR_ONLY (that will trigger the previous behaviour) - new library qemu_mode/unsigaction which filters sigaction events - afl-fuzz: new command line option -I to execute a command on a new crash - no more unlinking the input file, this way the input file can also be a - FIFO or disk partition - setting LLVM_CONFIG for llvm_mode will now again switch to the selected - llvm version. If your setup is correct. - fuzzing strategy yields for custom mutator were missing from the UI, added them :) - added "make tests" which will perform checks to see that all functionality - is working as expected. this is currently the starting point, its not complete :) - added mutation documentation feature ("make document"), creates afl-fuzz-document - and saves all mutations of the first run on the first file into out/queue/mutations - libtokencap and libdislocator now compile to the afl_root directory and are - installed to the .../lib/afl directory when present during make install - more BSD support, e.g. free CPU binding code for FreeBSD (thanks to devnexen) - reducing duplicate code in afl-fuzz - added "make help" - removed compile warnings from python internal stuff - added man page for afl-clang-fast[++] - updated documentation - Wine mode to run Win32 binaries with the QEMU instrumentation (-W) - CompareCoverage for ARM target in QEMU/Unicorn 750847 2ac8241680c609af39976da23e77e454 2.59c dimstar_suse - updated to 2.59c - qbdi_mode: fuzz android native libraries via QBDI framework - unicorn_mode: switched to the new unicornafl, thanks domenukk (see https://github.com/vanhauser-thc/unicorn) - afl-fuzz: - added radamsa as (an optional) mutator stage (-R[R]) - added -u command line option to not unlink the fuzz input file - Python3 support (autodetect) - AFL_DISABLE_TRIM env var to disable the trim stage - CPU affinity support for DragonFly - llvm_mode: - float splitting is now configured via AFL_LLVM_LAF_SPLIT_FLOATS - support for llvm 10 included now (thanks to devnexen) - libtokencap: - support for *BSD/OSX/Dragonfly added - hook common *cmp functions from widely used libraries - compcov: - hook common *cmp functions from widely used libraries - floating point splitting support for QEMU on x86 targets - qemu_mode: AFL_QEMU_DISABLE_CACHE env to disable QEMU TranslationBlocks caching - afl-analyze: added AFL_SKIP_BIN_CHECK support - better random numbers for gcc_plugin and llvm_mode (thanks to devnexen) - Dockerfile by courtesy of devnexen - added regex.dictionary - qemu and unicorn download scripts now try to download until the full download succeeded. f*ckin travis fails downloading 40% of the time! - more support for Android (please test!) - added the few Android stuff we didnt have already from Google afl repository - removed unnecessary warnings (forwarded request 759706 from msmeissn) 759716 dc62c5d029166820085bdafeab147fef 2.60c dimstar_suse 760476 f655dde382beeff468c32a9960dd3af6 2.60c dimstar_suse - added radamsa mutator (forwarded request 772507 from msmeissn) 772508 63e3900a53a741e64b0c699a730d5ac1 2.61c dimstar_suse - updated to 2.61c - use -march=native if available - most tools now check for mistyped environment variables - gcc 10 is now supported - the memory safety checks are now disabled for a little more speed during fuzzing (only affects creating queue entries), can be toggled in config.h - afl-fuzz: - MOpt out of bounds writing crash fixed - now prints the real python version support compiled in - set stronger performance compile options and little tweaks - Android: prefer bigcores when selecting a CPU - CmpLog forkserver - Redqueen input-2-state mutator (cmp instructions only ATM) - all Python 2+3 versions supported now - changed execs_per_sec in fuzzer_stats from "current" execs per second (which is pointless) to total execs per second - bugfix for dictionary insert stage count (fix via Google repo PR) - added warning if -M is used together with custom mutators with _ONLY option - AFL_TMPDIR checks are now later and better explained if they fail - llvm_mode - InsTrim: three bug fixes: 1. (minor) no pointless instrumentation of 1 block functions 2. (medium) path bug that leads a few blocks not instrumented that should be 3. (major) incorrect prev_loc was written, fixed! - afl-clang-fast: - show in the help output for which llvm version it was compiled for - now does not need to be recompiled between trace-pc and pass instrumentation. compile normally and set AFL_LLVM_USE_TRACE_PC :) - LLVM 11 is supported (forwarded request 779147 from msmeissn) 779153 12174eb19eb75b29865e72462865b2e7 2.62c dimstar_suse - updated to 2.62c - Important fix for memory allocation functions that result in afl-fuzz not identifying crashes - UPDATE! - Small fix for -E/-V to release the CPU - CmpLog does not need sancov anymore (forwarded request 780290 from msmeissn) 780291 c1e019cfa9df801847804e1ddb8d7f90 2.63c dimstar_suse - updated to 2.63c - all: - big code changes to make afl-fuzz thread-safe so afl-fuzz can spawn multiple fuzzing threads in the future or even become a library - afl basic tools now report on the environment variables picked up - more tools get environment variable usage info in the help output - force all output to stdout (some OK/SAY/WARN messages were sent to stdout, some to stderr) - uninstrumented mode uses an internal forkserver ("fauxserver") - now builds with `-D_FORTIFY_SOURCE=2` - drastically reduced number of (de)allocations during fuzzing - afl-fuzz: - python mutator modules and custom mutator modules now use the same interface and hence the API changed - AFL_AUTORESUME will resume execution without the need to specify `-i -` - added experimental power schedules (-p): - mmopt: ignores runtime of queue entries, gives higher weighting to the last 5 queue entries - rare: puts focus on queue entries that hits rare branches, also ignores runtime - llvm_mode: - added SNAPSHOT feature (using https://github.com/AFLplusplus/AFL-Snapshot-LKM) - added Control Flow Integrity sanitizer (AFL_USE_CFISAN) - added AFL_LLVM_INSTRUMENT option to control the instrumentation type easier: DEFAULT, CFG (INSTRIM), LTO, CTX, NGRAM-x (x=2-16) - made USE_TRACE_PC compile obsolete - LTO collision free instrumented added in llvm_mode with afl-clang-lto - note that this mode is amazing, but quite some targets won't compile - Added llvm_mode NGRAM prev_loc coverage by Adrean Herrera (https://github.com/adrianherrera/afl-ngram-pass/), activate by setting (forwarded request 793419 from msmeissn) 793420 7177d2669cf97ea3db88bea694772887 2.64c dimstar_suse - updated to 2.64c - llvm_mode LTO mode: - now requires llvm11 - but compiles all targets! :) - autodictionary feature added, enable with `AFL_LLVM_LTO_AUTODICTIONARY` - variable map size usage - afl-fuzz: - variable map size support added (only LTO mode can use this) - snapshot feature usage now visible in UI - Now setting `-L -1` will enable MOpt in parallel to normal mutation. Additionally, this allows to run dictionaries, radamsa and cmplog. - fix for cmplog/redqueen mode if stdin was used - fix for writing a better plot_data file - qemu_mode: fix for persistent mode (which would not terminate or get stuck) - compare-transform/AFL_LLVM_LAF_TRANSFORM_COMPARES now transforms also static global and local variable comparisons (cannot find all though) - extended forkserver: map_size and more information is communicated to afl-fuzz (and afl-fuzz acts accordingly) - new environment variable: AFL_MAP_SIZE to specify the size of the shared map - if AFL_CC/AFL_CXX is set but empty afl compilers did fail, fixed (this bug is in vanilla afl too) - added NO_PYTHON flag to disable python support when building afl-fuzz - more refactoring (forwarded request 795493 from msmeissn) 795494 77fa9af715afae54a2165c47f7927dbb 2.65c dimstar_suse - updated to 2.65c - afl-fuzz: - AFL_MAP_SIZE was not working correctly - better python detection - an old, old bug in afl that would show negative stability in rare circumstances is now hopefully fixed - AFL_POST_LIBRARY was deprecated, use AFL_CUSTOM_MUTATOR_LIBRARY instead (see docs/custom_mutators.md) - llvm_mode: - afl-clang-fast/lto now do not skip single block functions. This behaviour can be reactivated with AFL_LLVM_SKIPSINGLEBLOCK - if LLVM 11 is installed the posix shm_open+mmap is used and a fixed address for the shared memory map is used as this increases the fuzzing speed - InsTrim now has an LTO version! :-) That is the best and fastest mode! - fixes to LTO mode if instrumented edges > MAP_SIZE - CTX and NGRAM can now be used together - CTX and NGRAM are now also supported in CFG/INSTRIM mode - AFL_LLVM_LAF_TRANSFORM_COMPARES could crash, fixed - added AFL_LLVM_SKIP_NEVERZERO to skip the never zero coverage counter implementation. For targets with few or no loops or heavily called functions. Gives a small performance boost. - qemu_mode: - add information on PIE/PIC load addresses for 32 bit - better dependency checks - gcc_plugin: - better dependency checks - unicorn_mode: - validate_crash_callback can now count non-crashing inputs as crash as well - better submodule handling (forwarded request 805785 from msmeissn) 805787 6d99881c19893bc5910837898b7ee0b9 2.66c dimstar_suse - updated to 2.66c - renamed blacklist/whitelist to ignorelist/instrumentlist -> AFL_LLVM_INSTRUMENT_FILE and AFL_GCC_INSTRUMENT_FILE - warn on deprecated environment variables - afl-fuzz: - -S secondary nodes now only sync from the main node to increase performance, the -M main node still syncs from everyone. Added checks that ensure exactly one main node is present and warn otherwise - Add -D after -S to force a secondary to perform deterministic fuzzing - If no main node is present at a sync one secondary node automatically becomes a temporary main node until a real main nodes shows up - Fixed a mayor performance issue we inherited from AFLfast - switched murmur2 hashing and random() for xxh3 and xoshiro256**, resulting in an up to 5.5% speed increase - Resizing the window does not crash afl-fuzz anymore - Ensure that the targets are killed on exit - fix/update to MOpt (thanks to arnow117) - added MOpt dictionary support from repo - added experimental SEEK power schedule. It is EXPLORE with ignoring the runtime and less focus on the length of the test case - llvm_mode: - the default instrumentation is now PCGUARD if the llvm version is >= 7, as it is faster and provides better coverage. The original afl instrumentation can be set via AFL_LLVM_INSTRUMENT=AFL. This is automatically done when the instrument_file list feature is used. - PCGUARD mode is now even better because we made it collision free - plus it has a fixed map size, so it is also faster! :) - some targets want a ld variant for LD that is not gcc/clang but ld, added afl-ld-lto to solve this - lowered minimum required llvm version to 3.4 (except LLVMInsTrim, which (forwarded request 818318 from msmeissn) 818325 1cba31032ea50e49bea977cf0420b80b 2.67c dimstar_suse - updated to 2.67c - Support for improved afl++ snapshot module: https://github.com/AFLplusplus/AFL-Snapshot-LKM - Due to the instrumentation needing more memory, the initial memory sizes for -m have been increased - afl-fuzz: - added -F option to allow -M main fuzzers to sync to foreign fuzzers, e.g. honggfuzz or libfuzzer - added -b option to bind to a specific CPU - eliminated CPU affinity race condition for -S/-M runs - expanded havoc mode added, on no cycle finds add extra splicing and MOpt into the mix - fixed a bug in redqueen for strings and made deterministic with -s - llvm_mode: - now supports llvm 12 - support for AFL_LLVM_ALLOWLIST/AFL_LLVM_DENYLIST (previous AFL_LLVM_WHITELIST and AFL_LLVM_INSTRUMENT_FILE are deprecated and are matched to AFL_LLVM_ALLOWLIST). The format is compatible to llvm sancov, and also supports function matching :) - added neverzero counting to trace-pc/pcgard - fixes for laf-intel float splitting (thanks to mark-griffin for reporting) - fixes for llvm 4.0 - skipping ctors and ifuncs for instrumentation - LTO: switch default to the dynamic memory map, set AFL_LLVM_MAP_ADDR for a fixed map address (eg. 0x10000) - LTO: improved stability for persistent mode, no other instrumentation has that advantage - LTO: fixed autodict for long strings - LTO: laf-intel and redqueen/cmplog are now applied at link time (forwarded request 827912 from msmeissn) 827914 0d026e50ed9e20f66a5e81c74c77b911 2.68c dimstar_suse - updated to 2.68c - added the GSoC excellent afl++ grammar mutator by Shengtuo to our custom_mutators/ (see custom_mutators/README.md) - or get it here: https://github.com/AFLplusplus/Grammar-Mutator - a few QOL changes for Apple and its outdated gmake - afl-fuzz: - fix for auto dictionary entries found during fuzzing to not throw out a -x dictionary - added total execs done to plot file - AFL_MAX_DET_EXTRAS env variable added to control the amount of deterministic dict entries without recompiling. - AFL_FORKSRV_INIT_TMOUT env variable added to control the time to wait for the forkserver to come up without the need to increase the overall timeout. - bugfix for cmplog that results in a heap overflow based on target data (thanks to the magma team for reporting!) - write fuzzing setup into out/fuzzer_setup (environment variables and command line) - custom mutators: - added afl_custom_fuzz_count/fuzz_count function to allow specifying the number of fuzz attempts for custom_fuzz - llvm_mode: - ported SanCov to LTO, and made it the default for LTO. better instrumentation locations - Further llvm 12 support (fast moving target like afl++ :-) ) - deprecated LLVM SKIPSINGLEBLOCK env environment (forwarded request 832521 from msmeissn) 832522 7721aeac5ea266c415b704bdd11ad916 3.0c dimstar_suse - updated to 3.0c - llvm_mode/ and gcc_plugin/ moved to instrumentation/ - examples/ renamed to utils/ - moved libdislocator, libtokencap and qdbi_mode to utils/ - all compilers combined to afl-cc which emulates the previous ones - afl-llvm/gcc-rt.o merged into afl-compiler-rt.o - afl-fuzz - not specifying -M or -S will now auto-set "-S default" - deterministic fuzzing is now disabled by default and can be enabled with -D. It is still enabled by default for -M. - a new seed selection was implemented that uses weighted randoms based on a schedule performance score, which is much better that the previous walk the whole queue approach. Select the old mode with -Z (auto enabled with -M) - Marcel Boehme submitted a patch that improves all AFFast schedules :) - the default schedule is now FAST - memory limits are now disabled by default, set them with -m if required - rpc.statsd support, for stats and charts, by Edznux, thanks a lot! - reading testcases from -i now descends into subdirectories - allow the -x command line option up to 4 times - loaded extras now have a duplication protection - If test cases are too large we do a partial read on the maximum supported size - longer seeds with the same trace information will now be ignored for fuzzing but still be used for splicing - crashing seeds are now not prohibiting a run anymore but are skipped - they are used for splicing, though - update MOpt for expanded havoc modes - setting the env var AFL_NO_AUTODICT will not load an LTO autodictionary - added NO_SPLICING compile option and makefile define (forwarded request 855999 from msmeissn) 856003 3d07e873b06b3441070e7b6eb6bb5924 3.10c RBrownSUSE - update to 3.10c - Mac OS ARM64 support - Android support fixed and updated by Joey Jiaojg - thanks! - New selective instrumentation option with __AFL_COVERAGE_* commands to be placed in the source code. Check out instrumentation/README.instrument_list.md - afl-fuzz - Making AFL_MAP_SIZE (mostly) obsolete - afl-fuzz now learns on start the target map size - upgraded cmplog/redqueen: solving for floating point, solving transformations (e.g. toupper, tolower, to/from hex, xor, arithmetics, etc.). This is costly hence new command line option `-l` that sets the intensity (values 1 to 3). Recommended is 2. - added `AFL_CMPLOG_ONLY_NEW` to not use cmplog on initial seeds from `-i` or resumes (these have most likely already been done) - fix crash for very, very fast targets+systems (thanks to mhlakhani for reporting) - on restarts (`-i`)/autoresume (AFL_AUTORESUME) the stats are now reloaded and used, thanks to Vimal Joseph for this patch! - changed the meaning of '+' of the '-t' option, it now means to auto-calculate the timeout with the value given being the max timeout. The original meaning of skipping timeouts instead of abort is now inherent to the -t option. - if deterministic mode is active (`-D`, or `-M` without `-d`) then we sync after every queue entry as this can take very long time otherwise - added minimum SYNC_TIME to include/config.h (30 minutes default) - better detection if a target needs a large shared map - fix for `-Z` - fixed a few crashes 875949 7f5a05221f1576acc954841ca903a41a 3.11c RBrownSUSE - updated to 3.11c - afl-fuzz: - better auto detection of map size - fix sanitizer settings (bug since 3.10c) - fix an off-by-one overwrite in cmplog - add non-unicode variants from unicode-looking dictionary entries - Rust custom mutator API improvements - Imported crash stats painted yellow on resume (only new ones are red) - afl-cc: - added AFL_NOOPT that will just pass everything to the normal gcc/clang compiler without any changes - to pass weird configure scripts - fixed a crash that can occur with ASAN + CMPLOG together plus better support for unicode (thanks to @stbergmann for reporting!) - fixed a crash in LAF transform for empty strings - handle erroneous setups in which multiple afl-compiler-rt are compiled into the target. This now also supports dlopen() instrumented libs loaded before the forkserver and even after the forkserver is started (then with collisions though) - the compiler rt was added also in object building (-c) which should have been fixed years ago but somewhere got lost :( - Renamed CTX to CALLER, added correct/real CTX implementation to CLASSIC - qemu_mode: - added AFL_QEMU_EXCLUDE_RANGES env by @realmadsci, thanks! - if no new/updated checkout is wanted, build with: NO_CHECKOUT=1 ./build_qemu_support.sh - we no longer perform a "git drop" - afl-cmin: support filenames with spaces - afl-3.0c-fix-paths.patch: refreshed (forwarded request 879398 from msmeissn) 879399 47a25c4dc123fb7ba4ea3d9b657671a2 3.12c RBrownSUSE - updated to 3.12c - afl-fuzz: - added AFL_TARGET_ENV variable to pass extra env vars to the target (for things like LD_LIBRARY_PATH) - fix map detection, AFL_MAP_SIZE not needed anymore for most cases - fix counting favorites (just a display thing) - afl-cc: - fix cmplog rtn (rare crash and not being able to gather ptr data) - fix our own PCGUARD implementation to compile with llvm 10.0.1 - link runtime not to shared libs - ensure shared libraries are properly built and instrumented - AFL_LLVM_INSTRUMENT_ALLOW/DENY were not implemented for LTO, added - show correct LLVM PCGUARD NATIVE mode when auto switching to it and keep fsanitize-coverage-*list=... Short mnemnonic NATIVE is now also accepted. - qemu_mode (thanks @realmadsci): - move AFL_PRELOAD and AFL_USE_QASAN logic inside afl-qemu-trace - add AFL_QEMU_CUSTOM_BIN - unicorn_mode - accidently removed the subfolder from github, re-added - added DEFAULT_PERMISSION to config.h for all files created, default to 0600 (forwarded request 881188 from msmeissn) 881268 adf61607e46eb48a424e9f50d01c5058 3.12c RBrownSUSE - Fix packaging on aarch64 and %{arm} (forwarded request 881925 from Guillaume_G) 881926 77811a2fda1763331dccd4d94c11b47a 3.12c RBrownSUSE - install `afl-clang-lto`, recommended by upstream as the best variant - add dependency on `lld` - bump llvm-devel up to >= 11.0.0 - fix /usr/bin/env path in afl.cmin scripts - prevent stripping of runtime objects (fix bug 1184324) (forwarded request 882850 from haasn) 882886 21277fc89eb4614f9ce6cefa7321d83c 3.12c RBrownSUSE - Fix packaging for aarch64 and %arm (forwarded request 884046 from Guillaume_G) 884083 c7d20b09976f613e5192b628a3442cc6 3.13c dimstar_suse - updated to 3.13c - Note: plot_data switched to relative time from unix time in 3.10 - frida_mode - new mode that uses frida to fuzz binary-only targets, it currently supports persistent mode and cmplog. thanks to @WorksButNotTested! - create a fuzzing dictionary with the help of CodeQL thanks to @microsvuln! see utils/autodict_ql - afl-fuzz: - added patch by @realmadsci to support @@ as part of command line options, e.g. `afl-fuzz ... -- ./target --infile=@@` - add recording of previous fuzz attempts for persistent mode to allow replay of non-reproducable crashes, see AFL_PERSISTENT_RECORD in config.h and docs/envs.h - fixed a bug when trimming for stdin targets - cmplog -l: default cmplog level is now 2, better efficiency. level 3 now performs redqueen on everything. use with care. - better fuzzing strategy yield display for enabled options - ensure one fuzzer sync per cycle - fix afl_custom_queue_new_entry original file name when syncing from fuzzers - fixed a crash when more than one custom mutator was used together with afl_custom_post_process - on a crashing seed potentially the wrong input was disabled - added AFL_EXIT_ON_SEED_ISSUES env that will exit if a seed in -i dir crashes the target or results in a timeout. By default afl++ ignores these and uses them for splicing instead. - added AFL_EXIT_ON_TIME env that will make afl-fuzz exit fuzzing after no new paths have been found for n seconds - when AFL_FAST_CAL is set a variable path will now be calibrated 8 times instead of originally 40. Long calibration is now 20. (forwarded request 896670 from msmeissn) 896671 4a48cb415bfb43cd21422e8714a8f20c 3.13c dimstar_suse - Fix filelist for riscv64 (forwarded request 898298 from Andreas_Schwab) 898301 8ee2a64f71f5a6844b462de7b1f4ccb8 3.13c dimstar_suse - s390x added to the compiler files (forwarded request 906530 from peace) 906608 ecdd86a5e8e1f50de1c87dfa829ca6e0 3.14c dimstar_suse - updated to 3.14c - afl-fuzz: - fix -F when a '/' was part of the parameter - fixed a crash for cmplog for very slow inputs - fix for AFLfast schedule counting - removed implied -D determinstic from -M main - if the target becomes unavailable check out out/default/error.txt for an indicator why - AFL_CAL_FAST was a dead env, now does the same as AFL_FAST_CAL - reverse read the queue on resumes (more effective) - fix custom mutator trimming - afl-cc: - Update to COMPCOV/laf-intel that speeds up the instrumentation process a lot - thanks to Michael Rodler/f0rki for the PR! - Fix for failures for some sized string instrumentations - Fix to instrument global namespace functions in c++ - Fix for llvm 13 - support partial linking - do honor AFL_LLVM_{ALLOW/DENY}LIST for LTO autodictionary and DICT2FILE - We do support llvm versions from 3.8 to 5.0 again - frida_mode: - several fixes for cmplog - remove need for AFL_FRIDA_PERSISTENT_RETADDR_OFFSET - less coverage collision - feature parity of aarch64 with intel now (persistent, cmplog, in-memory testcases, asan) - afl-cmin and afl-showmap -i do now descend into subdirectories (like afl-fuzz does) - note that afl-cmin.bash does not! - afl_analyze: - fix timeout handling (forwarded request 907257 from msmeissn) 907258 b567db90a386b5bb7044540191bda887 3.14c dimstar_suse - enable gcc-plugin on factory - build with 32bit plugins on x86_64 (forwarded request 921492 from msmeissn) 921493 b428afb04cacf3ab5f164499866f1347 4.00c dimstar_suse - updated to 4.00c - complete documentation restructuring, made possible by Google Season of Docs :) thank you Jana! - we renamed several UI and fuzzer_stat entries to be more precise, e.g. "unique crashes" -> "saved crashes", "total paths" -> "corpus count", "current path" -> "current item". This might need changing custom scripting! - Nyx mode (full system emulation with snapshot capability) has been added - thanks to @schumilo and @eqv! - unicorn_mode: - Moved to unicorn2! by Ziqiao Kong (@lazymio) - Faster, more accurate emulation (newer QEMU base), risc-v support - removed indirections in rust callbacks - new binary-only fuzzing mode: coresight_mode for aarch64 CPUs :) thanks to RICSecLab submitting! - if instrumented libaries are dlopen()'ed after the forkserver you will now see a crash. Before you would have colliding coverage. We changed this to force fixing a broken setup rather then allowing ineffective fuzzing. - See docs/best_practices.md how to fix such setups. - afl-fuzz: - cmplog binaries will need to be recompiled for this version (it is better!) - fix a regression introduced in 3.10 that resulted in less coverage being detected. thanks to Collin May for reporting! - ensure all spawned targets are killed on exit - added AFL_IGNORE_PROBLEMS, plus checks to identify and abort on incorrect LTO usage setups and enhanced the READMEs for better information on how to deal with instrumenting libraries - fix -n dumb mode (nobody should use this mode though) (forwarded request 950196 from msmeissn) 950197 41f14a22723c16a75da3f426eb0b7626 4.00c dimstar_suse 966170 607281e8e5dc2490060f77c2be105658 4.00c dimstar_suse - Add llvm14-fix-build.patch: fix build with LLVM 14. (forwarded request 980763 from aaronpuchert) 980919 2671e67bdd5ad42dec2e002b6fa5c424 4.01c dimstar_suse - updated to 4.01c - fixed */build_...sh scripts to work outside of git - new custom_mutator: libafl with token fuzzing :) - afl-fuzz: - when you just want to compile once and set CMPLOG, then just set -c 0 to tell afl-fuzz that the fuzzing binary is also for CMPLOG. - new commandline options -g/G to set min/max length of generated fuzz inputs - you can set the time for syncing to other fuzzer now with AFL_SYNC_TIME - reintroduced AFL_PERSISTENT and AFL_DEFER_FORKSRV to allow persistent mode and manual forkserver support if these are not in the target binary (e.g. are in a shared library) - add AFL_EARLY_FORKSERVER to install the forkserver as earliest as possible in the target (for afl-gcc-fast/afl-clang-fast/ afl-clang-lto) - "saved timeouts" was wrong information, timeouts are still thrown away by default even if they have new coverage (hangs are always kept), unless AFL_KEEP_TIMEOUTS are set - AFL never implemented auto token inserts (but user token inserts, user token overwrite and auto token overwrite), added now! - fixed a mutation type in havoc mode - Mopt fix to always select the correct algorithm - fix effector map calculation (deterministic mode) - fix custom mutator post_process functionality - document and auto-activate pizza mode on condition - afl-cc: - due a bug in lld of llvm 15 LTO instrumentation wont work atm :-( - converted all passed to use the new llvm pass manager for llvm 11+ 985621 c31081618de30e648f60e6df5c2d76c7 4.02c dimstar_suse - updated to 4.02c - afl-cc: - important fix for the default pcguard mode when LLVM IR vector selects are produced, thanks to @juppytt for reporting! - gcc_plugin: - Adacore submitted CMPLOG support to the gcc_plugin! :-) - llvm_mode: - laf cmp splitting fixed for more comparison types - frida_mode: - now works on Android! - afl-fuzz: - change post_process hook to allow returning NULL and 0 length to tell afl-fuzz to skip this mutated input (forwarded request 998343 from msmeissn) 998344 f8e7c5799b9dd24e69d6f6b174ec0dae 4.03c dimstar_suse - updated to 4.03c - Building now gives a build summary what succeeded and what not - afl-fuzz: - added AFL_NO_STARTUP_CALIBRATION to start fuzzing at once instead of calibrating all initial seeds first. Good for large queues and long execution times, especially in CIs. - default calibration cycles set to 7 from 8, and only add 5 cycles to variables queue items instead of 12. - afl-cc: - fixed off-by-one bug in our pcguard implemenation, thanks for @tokatoka for reporting - fix for llvm 15 and reenabling LTO, thanks to nikic for the PR! - better handling of -fsanitize=..,...,.. lists - support added for LLVMFuzzerRunDriver() - fix gcc_mode cmplog - obtain the map size of a target with setting AFL_DUMP_MAP_SIZE=1 note that this will exit the target before main() - qemu_mode: - added AFL_QEMU_TRACK_UNSTABLE to log the addresses of unstable edges (together with AFL_DEBUG=1 afl-fuzz). thanks to worksbutnottested! - afl-analyze broke at some point, fix by CodeLogicError, thank you! - afl-cmin/afl-cmin.bash now have an -A option to allow also crashing and timeout inputs - unicorn_mode: - updated upstream unicorn version - fixed builds for aarch64 - build now uses all available cores (forwarded request 1005008 from msmeissn) 1005009 41488260950ab98c20fd71a13c94af38 4.04c dimstar_suse - updated to 4.04c - fix gramatron and grammar_mutator build scripts - enhancements to the afl-persistent-config and afl-system-config - scripts - afl-fuzz: - force writing all stats on exit - afl-cc: - make gcc_mode (afl-gcc-fast) work with gcc down to version 3.6 - qemu_mode: - fixed 10x speed degredation in v4.03c - added qemu_mode/fastexit helper library - unicorn_mode: - Enabled tricore arch (by @jma-qb) - Updated Capstone version in Rust bindings - llvm-mode: - AFL runtime will always pass inputs via shared memory, when possible, ignoring the command line. (forwarded request 1030428 from msmeissn) 1030429 ebff9bafeb59b66e0a71e34f3ed150b5 4.04c dimstar_suse - Update file list for riscv64 (forwarded request 1030538 from Andreas_Schwab) 1030539 4c5a13c11482c4d07359af9f5371b238 4.05c dimstar_suse - updated to 4.05c - afl-fuzz: - added afl_custom_fuzz_send custom mutator feature. Now your can send fuzz data to the target as you need, e.g. via IPC. - cmplog mode now has a -l R option for random colorization, thanks to guyf2010 for the PR! - queue statistics are written every 30 minutes to out/NAME/queue_data if compiled with INTROSPECTION - new env: AFL_FORK_SERVER_KILL_SIGNAL - afl-showmap/afl-cmin - `-t none` now translates to `-t 120000` (120 seconds) - unicorn_mode updated - updated rust custom mutator dependencies and LibAFL custom mutator - several minor bugfixes (forwarded request 1056232 from msmeissn) 1056233