Comments (2)
As a general recommendation, I usually recommend fuzzing different file formats separately. The exception for this would be for very similar format where discovering coverage in one format can somehow help with discovering coverage in another.
There is a way to do this with current Jacaklope, but it requires multiple instances: You start one fuzzing instance as a server, and then you start a client instance for every extension that connects to the same server.
If you wanted to add something like this to Jackalope, the biggest question is where to put it. If you just put it when the fuzzer initializes, then the extension gets randomly selected once and the same extension is used for the entire session. But if you change the extension for every iteration that also doesn't work well because e.g. Jackalope might try to e.g. verify coverage of a sample and, if the extension changes, so could the coverage. So the best place would probably be in or around Fuzzer::FuzzJob
and store the current extension somewhere in ThreadContext
, which means each thread could have a different extension and the same extension would be used for 1000 iterations or so (depending on the mutator settings). You would also need to kill the target process whenever the extension changes, otherwise the target and the fuzzer could end up with a different filename. And you'd also need to update the target arguments in ThreadContext
whenever the extension changes, in addition to updating the filename used by FileSampleDelivery
.
Otherwise, a couple of comments on the code itself:
- I wouldn't read the extension list from file but rather from command line, e.g.
-file_extension_list png,gif,jpg
- There's no need to read both extension index and value, just the value is sufficient.
from jackalope.
Hi Ivan, make perfect sense. Thanks for your insight.!
I'm closing it
from jackalope.
Related Issues (20)
- PROGRAM ABORT : No interesting input files HOT 1
- The value of FUZZ_CHILD_CTRL_IN / OUT is too low. HOT 1
- Question about OOM in GrammarMutator HOT 4
- Question on Grammar-based mutation HOT 2
- Update README instructions for building on macOS HOT 13
- How to solve create process failed, GLE=2 error HOT 9
- sir fuzzer is running but errors are not identifying..
- Investigating performance HOT 25
- Wrong crashes count? HOT 1
- How can I add new samples to an existing session? HOT 2
- Help with running as server HOT 9
- Handling Wide strings HOT 7
- WARNING: Error delivering sample, retrying with a clean target
- Implementing network fuzzing HOT 2
- Program abort due to `Process hanged before reaching the target method` HOT 1
- "process dead" issue that is not occured by WinAFL or other Fuzzer HOT 6
- Question: Would Jackalope be able to track code coverage for a child process spawned by the target? HOT 2
- PROGRAM ABORT : Process exited before reaching the target method - due to partial memory read from process HOT 3
- Fuzzer quits without saving crash HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jackalope.