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 through empirical technical analysis.
DCHECK failure or
relies on experimental flags, classify it as a Bug.Confirm the bug exists as reported.
d8 <provided-flags> <poc.js>.SBXCHECK, FATAL, or traps). If
so, this is typically Intended Behavior (see guidelines below).Determine if the bug remains a vulnerability under production restrictions.
provided_flags + --run-as-[sandbox]-security-poc.--allow-natives-syntax? Is it an experimental compiler flag?%OptimizeFunctionOnNextCall(f) with a loop that
triggers Tier-up: for(let i=0; i<10000; i++) f();.%ArrayBufferDetach(b) with a standard way to
detach/transfer if possible.--fuzzing or a non-shipping experimental flag) to trigger the memory
corruption, the report is likely a Bug, not a vulnerability.Technical proof of the vulnerability's severity.
--future, you MUST identify the minimal set of flags responsible for the
behavior.
src/flags/flag-definitions.h for flags
implied by the reported flags.SBXCHECK, FATAL),
classify it as Intended Behavior or a Bug..js
file that crashes on a Release build.0x41414141)?--trace-maglev-graph-building) to confirm the discrepancy.The classification MUST be supported by empirical evidence from the local reproduction:
d8 <flags> <poc.js> (Exact command used locally).src/utils/version.h and the specific git hash
using git rev-parse HEAD for technical accuracy.ref.cast or bounds checks) without crashing, state this clearly.Summary of rules from triaging.md based on the threat model:
--run-as-security-poc).--future), developer
flags, or only triggers a DCHECK or reliable CHECK (safe termination).SBXCHECK, FATAL, or
hardened libc++ checks).
int3 (x64), brk #0 (arm64), or calls
to the Abort builtin or the runtime function in the backtrace/disassembly.
Also look for "Fatal error" or "Safely terminating process" in stderr, or
calls to v8::base::OS::Abort in the backtrace.--sandbox-testing.memset,
memcpy) hitting guard regions, or corrupting trusted objects with
well-formed data of the same type. Also includes breaking internal invariants
using testing-only natives (restricted by IsEnabledForFuzzing) if the impact
is safely contained.