Skip to content

[VRP] Untrusted fuzzer UI#5329

Open
PauloVLB wants to merge 5 commits into
masterfrom
vrp-untrusted-fuzzer-ui
Open

[VRP] Untrusted fuzzer UI#5329
PauloVLB wants to merge 5 commits into
masterfrom
vrp-untrusted-fuzzer-ui

Conversation

@PauloVLB

@PauloVLB PauloVLB commented Jun 17, 2026

Copy link
Copy Markdown
Collaborator

Problem

We need a way to identify fuzzers that are "untrusted" (e.g., external fuzzers provided by VRP researchers) so we can apply different security policies to them (like restricting where they can run). Currently, there is no field in the UI or Datastore to manage this state.

Proposed Solution

We added a trusted boolean field to the Fuzzer model in Datastore (defaulting to False for safety) and exposed it as a "Trusted" checkbox in the Fuzzer management UI. This ensures all new fuzzers are treated as untrusted by default, maximizing security.

Key changes:

  • Added trusted boolean property to Fuzzer model (default False).
  • Factored out job validation logic into a centralized helper check_job_supports_untrusted_workloads in data_handler.py for consistent enforcement between fuzzers and testcases.
  • Added a migration script to set trusted=True for existing fuzzers to maintain backward compatibility.

UI Change

image

Trying to run an untrusted fuzzer (i.e. trusted is unchecked) on a non-Linux job gives a clear error:

image

Testing

Validated by deploying to dev and verifying that the checkbox state is correctly persisted to and loaded from Datastore. Added/updated unit tests to cover the trusted property and validation helper.

Validation

I have uploaded a fuzzer with trusted set to false; here is a screenshot.

image

@PauloVLB
PauloVLB force-pushed the vrp-untrusted-fuzzer-ui branch from 37f5d31 to 8d2a70a Compare June 17, 2026 16:05
@PauloVLB PauloVLB changed the title Vrp untrusted fuzzer UI [VRP] Untrusted fuzzer UI Jun 17, 2026
@PauloVLB
PauloVLB force-pushed the vrp-untrusted-fuzzer-ui branch 3 times, most recently from 7feb0e9 to ec90403 Compare July 16, 2026 16:04
@PauloVLB
PauloVLB marked this pull request as ready for review July 16, 2026 23:10
@PauloVLB
PauloVLB requested a review from a team as a code owner July 16, 2026 23:10

@letitz letitz left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for sending this! Overall I think we should invert the trusted/untrusted bit to make trust explicit instead of implicit, and default to safety in the absence of an explicit trust signal.

Comment thread src/appengine/handlers/fuzzers.py Outdated
Comment thread src/appengine/private/components/fuzzers-page/edit-form.html Outdated
Comment thread src/clusterfuzz/_internal/datastore/data_types.py
Comment thread src/clusterfuzz/_internal/datastore/data_types.py Outdated
@PauloVLB
PauloVLB force-pushed the vrp-untrusted-fuzzer-ui branch from 1fec842 to cb4ac9c Compare July 20, 2026 19:40
@PauloVLB

Copy link
Copy Markdown
Collaborator Author

I have updated the PR description to reflect the changes requested by @letitz and added the migrate_fuzzer_trusted.py migration to set all existing fuzzers as trusted.

@letitz letitz left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM % responding to comments below and to avoid blocking on me further as I go OOO.

Comment thread src/appengine/handlers/fuzzers.py Outdated
Comment thread src/clusterfuzz/_internal/datastore/data_handler.py Outdated
Comment thread src/appengine/handlers/upload_testcase.py Outdated
Comment thread src/clusterfuzz/_internal/datastore/data_handler.py Outdated
Comment thread src/clusterfuzz/_internal/datastore/data_handler.py Outdated
Comment thread src/clusterfuzz/_internal/datastore/data_types.py Outdated
Comment thread src/clusterfuzz/_internal/tests/appengine/handlers/fuzzers_test.py Outdated
Comment thread src/clusterfuzz/_internal/datastore/data_handler.py Outdated
@PauloVLB
PauloVLB force-pushed the vrp-untrusted-fuzzer-ui branch from 727763b to f3b67a2 Compare July 21, 2026 14:53
Comment thread src/appengine/handlers/fuzzers.py
@PauloVLB
PauloVLB force-pushed the vrp-untrusted-fuzzer-ui branch from b33944b to 67180a2 Compare July 22, 2026 19:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants