Skip to main content

Run Fuzz Tests remotely on a server

You can build one or multiple Fuzz Tests and bundle and upload them to CI Sense with the cifuzz remote-run command:

cifuzz remote-run [--option...] [<fuzz test>...]

For the syntax of the <fuzz test> argument see this section.

This command needs a token to access the API of the remote fuzzing server. You can specify this token via the CIFUZZ_API_TOKEN environment variable or by running the cifuzz login command first.

Options

The cifuzz remote-run command supports the following command specific options:

FlagDescription
--branch <name>Branch name to use in the config
By default, the currently checked out git branch is used
--build-command <command>The command to build the Fuzz Test for other build systems
--build-jobs uint[=0]Maximum number of concurrent processes to use when building
If argument is omitted the native build tool's default number is used
--bundle <path/to/bundle>Path to an existing bundle to start a remote run with
With this flag, the building and bundling is skipped and the specified bundle is uploaded to start a remote fuzzing run instead
--clean-command <command>The command to clean the Fuzz Test and its dependencies for other build systems
--commit <name>Commit to use in the config
By default, the head of the currently checked out git branch is used
--dict <path/to/file>A file containing input language keywords or other interesting byte sequences
This flag is only used if no default dictionary is found for the Fuzz Test
See https://llvm.org/docs/LibFuzzer.html#dictionaries
--docker-image <name>A Docker image which is used as the base for the container image
The image must contain all the dependencies required to run the Fuzz Test
By default, the image is chosen automatically based on the build system
("eclipse-temurin:20" for Java build systems, "cifuzz/cifuzz-ubuntu:latest" for others)
--engine-arg <argument>Command-line argument to pass to the fuzzing engine
See https://llvm.org/docs/LibFuzzer.html#options
This flag can be used multiple times
Not supported for Node.js projects
--env <VAR>=<value>Set environment variable when executing Fuzz Tests
To use the value of VAR in the local environment, use '--env VAR'
This flag can be used multiple times
--interactiveToggle interactive prompting in the terminal (default=true)
--jsonPrint output as JSON
-p, --project <name>The name of the CI Fuzz project you want to start a fuzzing run for, e.g. "my-project-c170bc17"
--project-dir <dir>The project root which is the parent for all the project sources
Defaults to the directory containing the cifuzz.yaml
--registry <name> The container registry to use for the upload of the container image
e.g. ghcr.io/my-org/my-project
-r, --resolveArgument of the command is a path to a source file instead of a test identifier.
The path can be either absolute or relative to the current working directory
and will be resolved to the identifier of the corresponding Fuzz Test.
-s, --seed-corpus <dir>A directory containing sample inputs used as seeds for fuzzing the code under test
This is used in addition to inputs found in the inputs directory of the Fuzz Test
This flag can be used multiple times
--server <address>Address of CI Sense (default="https://app.code-intelligence.com")
--timeout <duration>Maximum time to run the Fuzz Test, e.g. "30m", "1h"
The default is to run indefinitely
--tls-skip-verifyDisable TLS certificate verification
This means TLS will accepts any certificate presented by the server and any host name in that certificate