Skip to content

v2.0.0

Latest

Choose a tag to compare

@OleksiiOleksenko OleksiiOleksenko released this 07 Jan 14:26
· 4 commits to main since this release
e6961ff

This release contains a major refactoring of the codebase, including many of the core modules. This breaks compatibility with previous versions, hence the major version bump.

In addition, several significant enhancements have been made:

  • ARM64 is now fully supported.
  • New DynamoRIO-based model backend has been added, which vastly improves ISA coverage on x86.
  • The documentation has been fully restructured and expanded.

Added

ARM64 Support

  • Full hardware tracing support for ARM64 CPUs (#137)
  • ARM64 executor, fuzzer, and code generator implementations
  • ARM64 test suite with acceptance and unit tests
  • ARM64 ISA specification and target description

DynamoRIO Model Backend

  • New DynamoRIO-based model backend added, which completely re-implements the leakage modeling functionality
  • New tracers: indirect memory access (IND) tracer and poisoning of faulty loads (#133)
  • Contract-based input generation for DynamoRIO backend (#138)

Documentation

  • Complete documentation restructure with tutorials, reference guides, and topic guides
  • Five comprehensive tutorials covering first fuzzing campaign, vulnerability detection, fault handling, isolation, and extending Revizor
  • Detailed primer on contracts and leakage models
  • In-depth guides on choosing contracts, designing campaigns, interpreting results, and root-causing violations
  • Architecture overview with detailed diagrams
  • DynamoRIO backend instrumentation diagrams
  • Sandbox and binary format documentation
  • Actor and test case generation topics
  • Glossary of key terms

Demos and Examples

  • TSA-L1D demo configuration and template
  • TSA-SQ demo files
  • Improved detection demos for various Spectre variants

Testing and Development

  • Unified tests for Unicorn and DynamoRIO backends
  • Unit tests for traces, stats, and test case components
  • Utility scripts for generating RCBF/RDBF test files
  • Interface to run individual testing stages
  • Improved test coverage and CI integration

Misc. Features

  • Special value generation option for input data (not just random values)
  • More verbose configuration error messages
  • Better visibility for warnings in logger output
  • Support for FS/GS segment register instructions in ISA specification
  • Input differential minimization for observer actors

Changed

WARNING: This release contains breaking changes! The release introduces a complete refactoring of the code structure, including many of the core modules. See docs/internals/architecture/overview.md for details.

Code Structure

  • Renamed source directory from src/ to rvzr/ for better compliance with Python packaging standards
  • Encapsulated all core components into dedicated modules (sandbox.py, actor.py, etc)
  • Moved all test case components into a dedicated directory rvzr/tc_components
  • Refactored fuzzer.py to isolate the multi-stage filtering logic into a dedicated class
  • Isolated utility classes into dedicated modules stats.py and logs.py
  • Unicorn-based backend split into logical classes: Tracer, Speculator, TaintTracker, etc. (rvzr/model_unicorn)
  • Reorganized into architecture-specific subdirectories (rvzr/arch/x86, rvzr/arch/arm64)
  • Minimizer refactored to encapsulate each pass into a separate class (rvzr/postprocessing)
  • Executor KM is now shared between x86 and ARM to avoid code duplication
  • Consistent naming conventions for generators across architectures
  • Improved code style and formatting

Configuration Options

  • Many config options have been renamed during the refactoring process
  • Refer to the updated documentation (docs/ref/config.md)for the new option names and their usage.

ISA Spec Format

  • Renamed several fields in the json produced by the download_spec command

Testing Infrastructure

  • Cleaner interface for test scripts
  • GitHub Actions aligned with internal test scripts

Documentation Structure

  • Reorganized into intro/, howto/, ref/, topics/, and internals/ sections
  • Split architecture documentation into per-module pages
  • Updated navigation structure in MkDocs

Deprecated

  • MPX support