onefuzz

Containers in OneFuzz

An Azure Blob Storage Container. Each fuzzing task has a set of required and potentially optional containers that are used in a specific context.

As an example, the libFuzzer fuzzing task uses the following:

Tasks can target a container for an input queue. As an example, the crash reporting tasks queue off of specified crashes containers, processing files iteratively from the queue.

Considerations on naming Containers

Users can create arbitrary containers (see Container Name Requirements), including the ability to set arbitrary metadata for a container.

Templates use containers built from the context it’s being used (setup) and a namespaced GUID to enable automatic re-use of containers across multiple builds of the same target. NOTE: A helper utility is available to craft namespaced GUIDs onefuzz utils namespaced_guid.

As an example, setup and coverage containers are namespaced with the project, name, build, and platform (Linux or Windows). All other containers (inputs, crashes, reports, etc) use project and name.

Example:

The libfuzzer template with the project ‘myproject’, the name of ‘mytarget’, and build of build_1 on the Linux platform uses the following:

The same target, but build_2 uses the following containers:

The only difference is a unique oft-setup container.

In these examples, oft stands for OneFuzz Template “setup” container.