Skip to content

v0.27

Compare
Choose a tag to compare
@k0retux k0retux released this 17 Jan 11:14
· 199 commits to master since this release

Fuddly 0.27

This release brings several enhancements and new features as well as
fixing bugs and doing some cleanup. Here under what is the most
noteworthy.

Highlighted New Features

  • Add a Knowledge Infrastructure (refer to the documentation) which enables
    to:

    • to dynamically collect data from Target/Probes, and extract
      information from it through dedicated handlers to create knowledge
    • to add knowledge about the target under tests (like kind of OS,
      used programming language, hardware, and so on)
    • to leverage this information in relevant fuddly subsystems (e.g.,
      fuzzing a Filename typed-node with tTYPE will adapt the test cases
      depending on the OS/Language/..., if this information is available)
  • Multiple targets can now be used at the same time in all relevant
    places of the framework.

    It makes possible to sequence different actions through various systems
    or on the same system but through different kinds of interfaces
    (represented by different targets); and to react on feedback retrieved
    from all the stimulated targets in a centralized way.

Enhancements

  • Some value types got enhanced to support more options and/or
    provide more fuzzing cases: INT_str(), String().
  • Scenarios can now be defined at project level through
    Project.register_scenarios()
  • Some disruptors got enhanced, especially tTYPE that now includes
    tSEP test cases and go beyond. C and tSEP have been slightly
    improved.
  • New generic disruptor created: OP.
  • Feedback logs have been harmonized
  • Add a configuration facility to Fuddly shell (through config command)
  • Add support in fmkDB.py for users to confirm or disprove automated
    impact analysis.
  • Disruptors and scenario Steps get the ability to mark data as
    altered or valid in order to enable different handling at Target
    level
  • Add a parameter to describe values of an INT() object
  • NetworkTarget, LocalTarget and TestTarget got improved
  • Data modeling got enhancements and bug fixes:
    • Non-terminal nodes support now finite+random attributes combination
    • Add support for absorption of non byte-aligned nodes
    • node_builder.RegexParser use INT_str() instead of String() in more cases
    • Fix NT.unfreeze(recursive=True) incorrect behavior in some condition
    • ...
  • Helpers/Templates enhancements:
    • XML helpers provide now way more flexibility.
    • Add JSON helpers
  • Add a new method DataModel.validation_tests() which is called automatically
    by fuddly own non-regression tests
  • Add send_loop cosmetics for nicer display (enable it via config shell send_loop aligned True)

API change

  • Due to a change in fmkDB structure, previous fmkDB versions are
    not recognized anymore
    .
  • Generic and specific parameters that can be specified for
    Generators, Disruptors and Operators are now merged into a single
    kind of parameters in order to simplify the API.
  • The class FeedbackHandler becomes FeedbackGate.
  • ProbeStatus get the new property value that replace
    set_status/get_status methods.
  • When iterating the FeedbackGate, the source parameter which was a string
    is now a FeedbackSource.
  • FmkShell.do_send_loop_noseed is now the default do_send_loop.
  • FmkShell.do_send_loop which was keeping a seed is now renamed do_send_loop_keepseed.
  • Refactor DataModel.absorb() to DataModel.create_node_from_raw_data().
  • Align semantics of raw format within fmkdb.py and the Logger() class.