CodeIntelligenceTesting / jazzer.js

Coverage-guided, in-process fuzzing for Node.js
https://code-intelligence.com
Apache License 2.0
279 stars 22 forks source link

how to fuzz functions with multilpe parameters? #765

Open 7c opened 5 months ago

7c commented 5 months ago
const os = require('os');
function encrypt_rc4_base32(body, keyString) {
    if (body) console.log(body)
    const key = Buffer.from(keyString)
    const cipher = crypto.createCipheriv('rc4', key, null);
    let encrypted = cipher.update(body, 'ascii');
    encrypted = Buffer.from([...encrypted, ...cipher.final()])
    let base32_encoded = base32.stringify(encrypted, { pad: false })
    return base32_encoded
}
// file: fuzzTarget.js
module.exports.fuzz = function (data) {
    encrypt_rc4_base32(data.toString());
};

thanks!

oetr commented 5 months ago

You can use the FuzzedDataProvider that can help you with splitting up data (which is a Buffer) that you get from the fuzzer. Here is an example: https://github.com/CodeIntelligenceTesting/jazzer.js/blob/main/examples/bug-detectors/command-injection/fuzz.js

harisab2547 commented 2 months ago

i want to know in the above example will the fuzzer will put the same corpus data in the both parameters or the different data?

oetr commented 2 months ago

In the example above, keyString will always be undefined.