New Features:
- New output modules will log all storage metadata to the console (LoggerMetadataOutput) or to a more easily machine readable CSV file (CSVMetadataOutput)
- This feature includes a refactoring of StatsOutput that moves the computation of storage-based output statistics to a new ComputeStats module. ComputStats writes each of these metrics to storage metadata.
- Note: the StatsOutput now relies on ComputeStats, so existing configuration files may need to be updated
- New data types in StorageModule
- unsigned integer
- VMF Core Modules have been updated to use unsigned values when appropriate.
- Note: Existing modules may need to be updated, if they rely on integer data that is output from Core Modules
- temporary buffer
- This provides for better memory utilization by VMF, because large buffers that are only needed during the current fuzzing loop can be cleared
- The AFL_TRACE_BITS and CMPLOG_MAP_BITS data fields are now of type temporary buffer
- unsigned integer
- VMF Controller modules will now keep all seed test cases in storage
- This is a behavioral change from VMF 4.0.0 and below. Use the controller.keepAllSeeds parameter to configure VMF with the old behavior.
- A new helper class, ModuleTestHelper, can be used to easily unit test modules
- See GAInputGenTest and AFLForkserverExecutorTest for example usage
- VmfRand now supports a configurable fixed seed, to enable control randomness for regression testing
Updates and Bug Fixes:
- Our example configuration files have been refactored for better ease of reuse
- Batched loading of large corpus updates for distributed fuzzing, for improved performance
- Command handling for distributed fuzzing is now accomplished via a new helper class, CDMSCommandAndCorpusHandler
- Module templates are now available as a starting point for new module developers (see vmf/src/samples)
- A new ControllerModulePattern class can be used as a starting point for module developers writing controller modules
- All VMF Core Modules controllers have been updated to use this base class
- Map-size autodetection fix to allow this feature to work with SUTs that capture SIGINT
- Minor bug fixes:
- AFLFavoredFeedback had incorrect data registration with storage, which has now been corrected
- Corrected memory errors in unit tests
Note: CDMS has not changed since VMF 3.2, so no upgrade is required for VMF 4.1.0
Release binaries SHA256:
- CDMS.war: 052b61544d9d2c084f2ff3632d2564eb3358cbff95e7aa441c2c9ddf47a00650
- emptycdms.db: 38788934bef348e0ce77c7a03145c1e969c4092b3505b1f7e98e5c3f8e099813