| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
Update #5308
|
| |
|
|
| |
Any is the preferred over interface{} now in Go.
|
| |
|
|
| |
It may be useful if the config value is synthesised programmatically.
|
| |
|
|
| |
It will be useful for new syz-agent binary in the future.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
1. Properly set up a manager config.
2. Use clang/ld.lld by default.
3. Set the right boot partition for qemu VMs.
|
| |
|
|
| |
It allows to reduce parameters count for some functions.
|
| |
|
|
|
| |
Add a sample syzkaller config with comments so that we could refer to it
in the tutorials.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some sub paths may not be covered due to hardware configuration, or lack
of interest. This patch allows them to be excluded from the stats. This
can be convenient if the excluded paths are deep in the hierarchy:
{
"name": "sound",
"path": [
"techpack/audio",
"-techpack/audio/asoc/aaa/bbb"
"-techpack/audio/asoc/aaa/ccc"
]
}
|
| |
|
|
|
| |
Check for the existence of fsck binaries and report their absence only
once.
|
| |
|
|
|
|
|
|
| |
We don't really need an HTTP server when running syz-manager during kernel
image testing and when running syz-diff automatically.
Don't require the config to be set and don't start the HTTP server in
this case.
|
| |
|
|
|
|
|
|
|
|
|
| |
In some build environments (notably Yocto), syzkaller host and target
binaries end up in separate packages for each built architecture, which
are then shipped with the respective image/SDK.
Add the "Execprog/ExecutorBinOnTarget" and "StraceBinOnTarget" options
to the manager config, which when set expects the respective binaries to
be shipped with the target image and does not attempt to copy them from
the host.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Syscall attributes are extended with a fsck command field which lets
file system mount definitions specify a fsck-like command to run. This
is required because all file systems have a custom fsck command
invokation style.
When uploading a compressed image asset to the dashboard, syz-manager
also runs the fsck command and logs its output over the dashapi.
The dashboard logs these fsck logs into the database.
This has been requested by fs maintainer Ted Tso who would like to
quickly understand whether a filesystem is corrupted or not before
looking at a reproducer in more details. Ultimately, this could be used
as an early triage sign to determine whether a bug is obviously
critical.
|
| |
|
|
|
|
|
|
|
| |
If we have converted one way of configuration into another, we should
reset the old one.
Otherwise after the processing in syz-ci both will be set and the
instance no longer starts due to
"you cannot use both cov_filter and focus_areas".
|
| |
|
|
|
| |
Switch from the CoverageFilter to the more flexible mechanism of focus
areas.
|
| |
|
|
|
|
| |
Previously we were assuming that QEMU with matching host/guest
architectures was using -enable-kvm, but for arm64 that's not always the
case.
|
| |
|
|
|
| |
Add automatic_helper attribute and enable it for system calls that are required to properly run automatically generated
descriptions. Enable these system calls when descriptions_mode = `Auto`.
|
| |
|
|
| |
This will enable the reuse of the functionality elsewhere.
|
| |
|
|
| |
It lets us get bug reproductions out of box.
|
| |
|
|
|
|
| |
written descriptions or both
Add "Auto" type and allow to choose descriptions mode in configurations. Defaults to using manual only.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
This mode allows to run local manager that only "helps" main instances
by uncovering more coverage and extracting useful reproducers.
Otherwise it spends too much time reproducing all bugs that already
have reproducers.
|
| | |
|
| |
|
|
|
|
|
| |
Move all syz-fuzzer logic into syz-executor and remove syz-fuzzer.
Also restore syz-runtest functionality in the manager.
Update #4917 (sets most signal handlers to SIG_IGN)
|
| |
|
|
|
| |
Lint started warning about duplicate "gvisor" const in pkg/cover.
Add gvisor/starnix consts to sys/targets package to avoid duplication.
|
| |
|
|
|
| |
VM-less mode stopped working after addition of RPCServer.createInstance.
Repair it.
|
| |
|
|
| |
Switch to flatrpc.ExecOpts.
|
| |
|
|
| |
To reduce diff in the next change.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Source files for Pixel devices are split between the common AOSP kernel
(path/to/kernel/aosp) and the device-specific drivers residing in a
separate dir (path/to/kernel/private/google-modules for Android 14
and path/to/kernel/gs/google-modules for older Android versions).
See https://source.android.com/docs/setup/build/building-pixel-kernels
for details.
Android build system may reference these dirs in various ways, for which
syzkaller cannot always understand where it should look for the source.
The newly introduced android_split_build flags handles the problem by adding a
list of "delimiters" used when normalizing the kernel source paths.
If the path contains any of such delimiters, then everything preceding the last
delimiter in the path is replaced with the contents of "kernel_src" from the
manager config.
By default we only support "/aosp/" and "/private/" corresponding to
modern Android systems as delimiters.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the cases where we do not / cannot sandbox individual prog executions
well enough, some share of progs end up being dependent on the
previously accumulated state of the whole VM.
As the result,
* We lose 5-10% of coverage/signal on every instance restart.
* A share of our corpus programs do not actually trigger the coverage
they were thought to reliably trigger.
This significantly affects fuzzing efficiency and prevents syzkaller
from accumulating bigger and better corpus over multiple runs.
Let's see if the situation becomes better if we restart syz-executor
before most of prog executions.
|
| | |
|
| | |
|
| |
|
|
|
| |
Updated ModuleObj documentation, as Syzkaller can now compare coverage
of dynamically loaded modules.
|
| | |
|
| |
|
|
|
|
|
|
| |
Let users set the asset storage config in the syz-manager config.
When running under syz-ci, pass the asset storage config from the syz-ci.
Create an asset storage instance on the start of syz-manager.
Refactor some of syz-manager code to make it less complex.
|
| |
|
|
|
|
|
|
|
|
| |
The comment-stripping regex doesn't work for multi-line comments,
because the regex looks for a substring that both starts _and_ ends with
a newline character. Since a single newline cannot be used into multiple
matches, only the first comment line is found and later lines are not
removed resulting in a parsing error.
Fix it by looking for substrings _until_ a newline.
|
| |
|
|
|
|
|
| |
* vm: add pool.Close() support
* vm: add proxyapp client implementation
* vm/proxyapp: autogenerate mocks
* vm/proxyapp: add proxyapp tests
* pkg/mgrconfig: add proxyapp type tests
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Allow manager configuration to specify that certain syscalls should not
be mutated. This is expected to be useful when mutating certain syscalls
is unlikely to produce interesting executions. For example, mutating a
`syz_mount_image` call will likely produce a corrupt image.
Some implementation details:
- Add a `no_mutate_syscalls` manager config entry, with the same format
as `enable_syscalls`. Ensure this is parsed and stored in the config
as a set of syscall IDs.
- Send this set to fuzzers when they connect to their managers via RPC.
Ensure each fuzzer stores a copy of the set.
- When mutating arguments of a syscall, check first whether it has been
specified as non-mutatable.
- For all mutations not managed by a `syz-manager`, retain previous
behaviour by ensuring that no syscalls are considered non-mutable.
|
| |
|
|
| |
syz-manager: introduce a new setting 'sandbox_arg' (#3263)
|
| |
|
|
| |
Slightly clarify what exactly each sandbox means.
|
| |
|
|
|
|
|
|
| |
If `strace_bin` is specified, syzkaller will invoke a reproducer with it
and save the output. This should help in debugging.
If syz-manager is attached to a dashboard, upload the strace-powered output
and report.
|
| |
|
|
|
|
|
|
|
| |
Raw coverage might be important when e.g. analysing the origins of
out-of-place coverage in coverage reports or understanding why the
fuzzer could not reach deeper code.
If "raw_cover" is set to true, syzkaller will remember unsorted and
unduplicated coverage (PCs) for each its corpus program.
|
| |
|
|
|
| |
Introduce a presere_progs parameter, which, if set to false, forces
syz-manager to purge unneeded programs from the corpus.
|
| |
|
|
|
|
|
| |
We have "suppressions" parameter to suppress non-interesting reports.
Add "interests" parameter which is an opposite of "suppressions" --
everything that's not in "interests" is suppressed.
It's matched against bug title, guilty file and maintainer emails.
|
| |
|
|
|
|
|
|
| |
Currenly there are no means to limit the total number of reproducing
instances and syzkaller can de facto suspend fuzzing when there are
many new bug types.
Introduce the option to control this behavior.
|