These 48 commits are when the Protocol Buffers files have changed:
| Commit: | 19db34f | |
|---|---|---|
| Author: | Lukas Bernhard | |
| Committer: | Lukas Bernhard | |
Add differential testing
The documentation is generated from this commit.
| Commit: | e54fd1b | |
|---|---|---|
| Author: | Samuel Groß | |
| Committer: | Samuel Groß | |
Remove runtime type collection support This feature is essentially replaced by the ExplorationMutator which also uses runtime type information but instead of forwarding it to Fuzzilli (which then later on selects actions to perform based on the type), it directly selects a "useful" action to perform. This is a lot simpler and easier to maintain as the complexity is contained in a single mutator instead of being spread throughout the codebase.
| Commit: | 62a5c80 | |
|---|---|---|
| Author: | Samuel Groß | |
| Committer: | Samuel Groß | |
Implement ExplorationMutator Quoting from the documentation: This mutator does the following: 1. it inserts Explore operations for random existing variables in the program to be mutated 2. It executes the resulting (temporary) program. The Explore operations will be lifted to a sequence of code that inspects the variable at runtime (using features like 'typeof' and 'Object.getOwnPropertyNames' in JavaScript) and selects a "useful" operation to perform on it (e.g. load a property, call a method, ...), then reports back what it did 3. the mutator processes the output of step 2 and replaces some of the Explore mutations with the concrete action that was selected at runtime. All other Explore operations are discarded. The result is a program that performs useful actions on some of the existing variables even without statically knowing their type. The resulting program is also deterministic and "JIT friendly" as it no longer relies on any kind of runtime object inspection.
| Commit: | 3fef2fb | |
|---|---|---|
| Author: | Samuel Groß | |
Make operation names and ProgramBuilder methods more consistent Now, for a simple operation OperationXYZ, the ProgramBuilder will generally have a method opXYZ(...), while for block operations BeginBlockXYZ and EndBlockXYZ, it will have a buildBlockXYZ(...) method with ensures that the begin and end operations always match.
| Commit: | a5ba4d1 | |
|---|---|---|
| Author: | Samuel Groß | |
Compute correctness and timeout rate over last 1000 samples Now that we do initial corpus generation with a different fuzzing engine, these statistics are somewhat skewed, at least during early fuzzing. Computing them over the last 1000 samples mitigates that.
| Commit: | 688eb07 | |
|---|---|---|
| Author: | Samuel Groß | |
| Committer: | Samuel Groß | |
Split call/construct operations into plain and spreading variants Spreading operations are not very "mutation friendly" since spreading rarely causes new interesting behaviour and will frequently cause invalid programs as only iterable objects can be spread. Therefore we now split up the CallFunction, Construct, CallMethod, and CallComputedMethod into "plain" versions and spreading versions which have the "WithSpread" suffix.
| Commit: | 8d1e575 | |
|---|---|---|
| Author: | Samuel Groß | |
Implement minimization and mutation of variadic instructions With this change, the Minimizer is now able to remove variadic inputs from instructions and the OperationMutations is able to add variadic inputs to them. To measure the impact of this, the average size of programs added to the corpus is now inlcluded in the statistics.
| Commit: | c1a3848 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Replace Types with Parameters in Function Signatures (#314)
| Commit: | 30ab226 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Add DestructObject and DestructObjectAndReassign operations (#309)
| Commit: | 7d764f1 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
simplify switch statement generation (#216)
| Commit: | cde2e15 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
CallSuperConstructor now supports spread arguments (#302)
| Commit: | 1335348 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Add array destruct support to ForOf (#303)
| Commit: | c41b205 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Add DestructArray and DestructArrayAndReassign operations (#300)
| Commit: | 7324bf6 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Add binary operation variants for StoreProperty, StoreElement, StoreComputedProperty and StoreSuperProperty (#296)
| Commit: | 60b68c5 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Implement LoadThis and LoadArguments operations (#262)
| Commit: | 590b6b0 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
CallMethod, CallComputedMethod and Construct now support Spread Elements (#238)
| Commit: | 630dab4 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Implements a strict-mode toggle for Function operations (#242)
| Commit: | 0cd2f83 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
add support for template literals (#208)
| Commit: | 98298d1 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Add support for switch statements (#207)
| Commit: | 87e9142 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Add assignment operators (#204)
| Commit: | d461c04 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Add support for conditional operator (#205)
| Commit: | 56a041e | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Add CallComputedMethod operation (#200)
| Commit: | 2e8f648 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Added support for finally blocks (#196)
| Commit: | 1408aab | |
|---|---|---|
| Author: | Samuel Groß | |
| Committer: | Samuel Groß | |
Added "fuzzer overhead" to statistics This represents the fraction of the total time that is not spent executing code in the target engine. It includes the time spent for things such as worker synchronization, restarting the target process after crashes or timeouts, lifting FuzzIL to the target language, performing mutations etc.
| Commit: | 687ad52 | |
|---|---|---|
| Author: | Samuel Groß | |
| Committer: | Samuel Groß | |
Improved shutdown logic
| Commit: | 738b855 | |
|---|---|---|
| Author: | Samuel Groß | |
| Committer: | Samuel Groß | |
Implemented JavaScript Classes
| Commit: | 2ccc0c2 | |
|---|---|---|
| Author: | Samuel Groß | |
| Committer: | Samuel Groß | |
Added inspection capabilities Currently, there are two inspection modes: History: When enabled, Fuzzilli will store the history of all programs that are added to the corpus in .fuzzil.history files. The history includes detailed information about every mutations performed on the sample and includes the program's code after every intermediate step (e.g. every execution of a mutator). Types: When enabled, Fuzzilli will output type all available type information for the programs that it writes to disk in the form of comments.
| Commit: | 3fa75af | |
|---|---|---|
| Author: | Samuel Groß | |
| Committer: | Samuel Groß | |
Cache duplicate types in the protobuf format
| Commit: | dcacbe5 | |
|---|---|---|
| Author: | Samuel Sládek | |
| Committer: | GitHub | |
Cache program types (#147)
| Commit: | 0f26cb9 | |
|---|---|---|
| Author: | Samuel Sládek | |
| Committer: | GitHub | |
Collect runtime types per instruction (#133)
| Commit: | 1cd76bf | |
|---|---|---|
| Author: | Samuel Groß | |
| Committer: | Samuel Groß | |
Added unary pre and post increment and decrement operators
| Commit: | e9dcff6 | |
|---|---|---|
| Author: | Samuel Groß | |
| Committer: | Samuel Groß | |
Remove Phis Now, every variable can be reassigned by a Reassign operation, without having to be explicitly marked as a "reassignable" variable. Also, the new Dup instruction can now be used to duplicate a variable.
| Commit: | f63197f | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Add support for Async Generators (#118)
| Commit: | 3ec31f9 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Support Block Statement generation (#116)
| Commit: | 300a953 | |
|---|---|---|
| Author: | Samuel Groß | |
Do-While loops now have the header inputs in BeginDoWhileLoop instead of EndDoWhileLoop This removes the somewhat arbitrary restriction that inputs to block ends have to come from the outer scope, which then allowed removal of various bits of code. Also, this cleans up block and block group related code a bit by moving the algorithms into the Blocks class as static methods while making them accessible via the Program class.
| Commit: | 7b24e1d | |
|---|---|---|
| Author: | WilliamParks | |
| Committer: | GitHub | |
Unary ops (#114)
| Commit: | d9ee3f7 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Eval generator (#97)
| Commit: | e2d97bf | |
|---|---|---|
| Author: | Samuel Sládek | |
| Committer: | GitHub | |
Save runtime type collection statistics (#110)
| Commit: | 385e8e9 | |
|---|---|---|
| Author: | Samuel Sládek | |
| Committer: | GitHub | |
Collect basic runtime types and send them to Fuzzilli (#99)
| Commit: | 215f158 | |
|---|---|---|
| Author: | Amar Menezes | |
| Committer: | GitHub | |
Added support for async arrow functions (#96)
| Commit: | e8b7b34 | |
|---|---|---|
| Author: | WilliamParks | |
| Committer: | Samuel Groß | |
Removes optional from type protobuf
| Commit: | a24e205 | |
|---|---|---|
| Author: | Samuel Groß | |
| Committer: | Samuel Groß | |
Fuzzilli now appends the content of stderr to crashing programs as comment
| Commit: | baa425f | |
|---|---|---|
| Author: | Carl Smith | |
| Committer: | Carl Smith | |
implemented RegExp literals
| Commit: | f8f43cb | |
|---|---|---|
| Author: | Carl Smith | |
| Committer: | Samuel Groß | |
implemented bigint support
| Commit: | fde8373 | |
|---|---|---|
| Author: | Samuel Groß | |
| Committer: | Samuel Groß | |
Added new function types to FuzzIL Generators and async functions are now supported.
| Commit: | e8b0ed2 | |
|---|---|---|
| Author: | Carl Smith | |
implemented support for arrow functions
| Commit: | 84babf0 | |
|---|---|---|
| Author: | amarekano | |
| Committer: | Samuel Groß | |
Added Exponentiation and Unsigned RightShift operator
| Commit: | 8b119db | |
|---|---|---|
| Author: | Samuel Groß | |
| Committer: | Samuel Groß | |
FuzzIL now uses Protobufs as serialization format This seems to roughly speed up encoding + decoding of Programs by a factor of 8, while reducing the size of the encoded data roughly by a factor of 4.