agents/skills/v8-poc-classification/SKILL.md
Use this skill to determine if a reported Proof-of-Concept (POC) crash is a security vulnerability or a regular bug.
mov rax, [rbx] is a Read.mov [rax], rbx is a Write.Caught harmless memory access violation or
Exiting process due to sandbox violation, the sandbox is working as
intended.DCHECK failure in a debug build or relies on experimental
flags, classify it as a Bug.When provided with a reproduction script (JS) and a set of d8 flags that cause
a crash, follow these steps to classify the bug:
Reproduce the crash using the provided flags to confirm the bug exists.
d8 <provided-flags> <poc.js>PushStackTraceAndDie, SBXCHECK, or FATAL in the backtrace. If these are
present, V8 has detected the corruption and is intentionally crashing.If the bug exists but does NOT cause a crash (e.g., a "stale value" or "logical type confusion"), you MUST attempt to escalate it to a memory safety violation.
RuntimeError (illegal
cast, OOB access) or safe termination without a memory violation, it is likely
a Bug, not a vulnerability. V8's runtime protections (like ref.cast and
Wasm bounds checks) are designed to mitigate such flaws.Run the reproduction with the appropriate meta-flags. This is the most important step for classification.
d8 --run-as-security-poc <provided-flags> <poc.js>d8 --run-as-sandbox-security-poc <provided-flags> <poc.js>If the crash stops reproducing with the security POC flags, identify which
restriction prevents the crash. Try running with individual flags (e.g.,
--disallow-unsafe-flags, --disallow-developer-only-features,
--no-experimental, or --fuzzing) to isolate the behavior.
Refer to reproducing-bugs.md and triaging.md to understand the implications. In general, if a POC stops reproducing when any of these flags are set, it is likely not a security bug.
Determine the appropriate Buganizer fields and the actual security impact based on your findings and the rules in triaging.md.
Findings from Local Reproduction: The classification MUST be supported by empirical evidence from the local reproduction:
Refer to triaging.md for the definitive rules. Summary:
--future), developer/unsafe flags,
nullptr dereference, DCHECK or reliable CHECK failure.SBXCHECK, FATAL, or hardened
libc++ checks (std::vector/std::span OOB).Reports using --sandbox-testing or the Sandbox API.
Caught harmless memory access violation
or similar. This is Intended Behavior.