aboutsummaryrefslogtreecommitdiffstats
path: root/syz-cluster/workflow/fuzz-step
Commit message (Collapse)AuthorAgeFilesLines
* syz-cluster: refactor DockerfilesAleksandr Nogikh2025-12-311-1/+0
| | | | | | | Copy everything into the build context. Add a .dockerignore file to avoid copying the definitely unnecessary files and folders. Check copyrights presence in Dockerfiles.
* syz-cluster: rewrite fuzz config generationAleksandr Nogikh2025-10-073-76/+59
| | | | | | | | Instead of a predefined set of manually written syz-manager configs, construct it dynamically from different bits. During triage, select not just one, but all matching fuzzer configurations and then merge them together.
* syz-cluster: switch to 7G qemu VMsAleksandr Nogikh2025-10-071-2/+2
| | | | | | 3G is not enough for kernels with KMSAN. Slightly decrease the number of used VMs to fit into the available CPUs/RAM.
* syz-cluster: prefix fuzzing-related stepsAleksandr Nogikh2025-10-011-9/+13
| | | | | Specify a track name for each fuzzing campaign. It will help distinguish them once there are multiple ones.
* syz-cluster: configure bug title filterAleksandr Nogikh2025-10-012-1/+28
| | | | | Instead of just checking whether the bug was observed on the base crash, accept a regexp of accepted bug titles as well.
* syz-cluster: pass fuzz config to the fuzz step as jsonAleksandr Nogikh2025-10-012-27/+36
| | | | | | Instead of passing the values individually, save the FuzzConfig object as JSON and pass it as an artifact. This will simplify adding more new fields.
* syz-cluster/workflow/fuzz-step: nuance archive upload errorsAleksandr Nogikh2025-09-031-5/+8
| | | | | If the archive turned out to be too large, just print an error message and don't return an error from the status update function.
* syz-cluster: log possible findings at the end of fuzzingAleksandr Nogikh2025-09-021-1/+15
| | | | | | | | | | It does happen that we detect a bug that was introduced in the patch series, but we don't report it becase no reliable reproducer was found. Let's at least log such cases to better understand the scale of the problem. 10 is an arbitrary cut-off value.
* syz-cluster: consider global/static variable valuesAleksandr Nogikh2025-08-292-24/+107
| | | | | | | | | When determining whether a patch series is worth fuzzing, consider not only the hashes of .text symbols, but also the hashes of the global (static and non-static) variables. As before, calculate the hashes during build and process them at the beginning of the fuzz step.
* syz-cluster: share base kernel crashes between fuzzing sessionsAleksandr Nogikh2025-08-211-11/+26
| | | | | | Report base kernel crashes observed during fuzzing. Consult the common API for each patched kernel crash to see if it was already observed on the base kernel.
* syz-cluster: fix hash comparison bugsAleksandr Nogikh2025-08-202-9/+18
| | | | And improve the tests for the method.
* syz-cluster: skip fuzzing if binaries are the sameAleksandr Nogikh2025-08-192-1/+47
| | | | | | | | If all symbol hashes between the base and the pathed kernel match, there's no reason to spend time fuzzing the series. Add a 'skipped' status to the enum of possible session test results and set it from the fuzz-step.
* syz-cluster: adjust fuzz step resource requirementsAleksandr Nogikh2025-08-141-2/+2
| | | | | Use a smaller upper limit on CPUs since we're now using 32 Core nodes. Request at least 3GB/VM of RAM.
* syz-cluster: skip coverage checks for some fuzz targetsAleksandr Nogikh2025-08-122-13/+24
| | | | | | | | There are cases when we do not need the "if the patched code is not reached within 30 minutes, abort fuzzing" check. This is e.g. the case of mm/ code that is not fully instrumented by KCOV.
* syz-cluster: add gcc to fuzz-step containerAleksandr Nogikh2025-08-071-1/+1
| | | | We use it for C repros by default.
* syz-cluster: add cpp to the fuzz containerAleksandr Nogikh2025-07-291-1/+1
| | | | It's required by pkg/csource to generate C reproducers.
* syz-cluster/wokflow/fuzz-step: don't mount /outputAleksandr Nogikh2025-07-281-7/+0
| | | | | | | The fuzzing step only takes inputs and communicates via API. This will reduce the number of Error: open /mainctrfs/output/result.json: no such file or director errors in our logs.
* syz-cluster: install llvm tools in the fuzz-step containerAleksandr Nogikh2025-07-231-1/+11
| | | | It's required for report symbolization and C repro generation.
* all: determine patched symbols for focused fuzzingAleksandr Nogikh2025-07-221-6/+41
| | | | | | | | | Hash the code section of the individual symbols from vmlinux.o and use it to determine the functions that changed their bodies between the base and the patched build. If the number of affected symbols is reasonable (<5%), fuzz it with the highest priority.
* pkg/manager: abort fuzzing if no patched code is reachedAleksandr Nogikh2025-07-181-7/+13
| | | | | Don't waste time doing focused fuzzing if no modified code has been reached in 30 minutes after corpus triage.
* syz-cluster: report reproducers for findingsAleksandr Nogikh2025-06-231-1/+13
| | | | | Move C repro generation from syz-manager to pkg/repro to avoid code duplication.
* pkg/manager: provide diff fuzzer state dumpsAleksandr Nogikh2025-04-151-11/+14
| | | | | | Make the fuzzing step of syz-cluster create the manager.DiffStore object explicitly and dump its state to the logs after finishing the fuzzing session.
* syz-cluster: log fuzz-step terminationAleksandr Nogikh2025-04-151-0/+3
| | | | | | | Some of the fuzz jobs seem to be unable to finish in time. Add some logging to better understand what part if preventing the termination.
* pkg/manager: wait until corpus is triaged for diff fuzzingAleksandr Nogikh2025-04-151-5/+6
| | | | | | | | | | | Track the right moment to start bug reproductions more exactly: 1) Either once 90% of the corpus is triaged (*). 2) Or once we are past 50% of the time dedicated for fuzzing. Whatever happens earlier. (*) The last percents are usually quite slow and they bring much less covered PCs that all the previous ones.
* syz-cluster: upload fuzz step artifactsAleksandr Nogikh2025-04-111-11/+73
| | | | | Compress and upload the artifacts folder every 30 minutes of fuzzing and once after the fuzzing is completed.
* syz-cluster: fix fuzz-step DockerfileAleksandr Nogikh2025-03-111-1/+1
| | | | | If we build the executor from an incomplete workdir, executor and the host process end up having different git revisions.
* syz-cluster: download latest corpuses from syzbotAleksandr Nogikh2025-03-112-2/+38
|
* syz-cluster: make image prefix and tag configurableAleksandr Nogikh2025-02-261-1/+1
| | | | | | | | | Accept IMAGE_PREFIX and IMAGE_TAG parameters that allow to reuse the Makefile and a lot of k8s configurations both for local and prod environments. Refactor Makefile: define build-* and push-* rules, use templates to avoid repetition.
* syz-cluster: report session resultsAleksandr Nogikh2025-02-141-1/+1
| | | | | | | | | | | | Provide an API to set up the reporting of finished sessions for which syz-cluster collected reportable findings. The actual sending of the results is to be done in a separate component that would: 1) Call Next() to get the next report to send. 2) Call Confirm() to confirm that the report has been sent. 3) Call Upstream() if the report has been moderated and needs to be sent to e.g. public mailing lists.
* syz-cluster: report series/sessions via APIAleksandr Nogikh2025-02-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | In the previous version of the code, series-tracker was directly pushing patch series into the DB and the controller auto-created fuzzing sessions. Mediate these via the controller API instead. Instead of creating Session objects on the fly, pre-create them and let processor take them one by one. The approach has multiple benefits: 1) The same API might be used for the patch series sources other than LKML. 2) If the existence of Session objects is not a sign that we have started working on it, it allows for a more precise status display (not created/waiting/running/finished). 3) We could manually push older patch series and manually trigger fuzzing sessions to experimentally measure the bug detection rates. 4) The controller tests could be organized only by relying on the API offered by the component.
* syz-cluster: fuzz for 3 hoursAleksandr Nogikh2025-02-061-2/+2
| | | | 2h session is too short (at least for now).
* syz-cluster: set resource limitsAleksandr Nogikh2025-02-041-5/+5
| | | | | It will be important once we deploy to GKE. For now, let's set just some limits, we'll adjust them over time.
* syz-cluster/workflow/fuzz-step: use deadline only for fuzzingAleksandr Nogikh2025-02-041-4/+8
| | | | | | We cannot use the single context with a deadline for all processing because it does not let us report the final status after finishing fuzzing.
* syz-cluster: integrate with syz-diffAleksandr Nogikh2025-02-044-0/+315
Run differential fuzzing as a workflow step.