chicoxyzzy
JSC security specialist
Summary
Works almost exclusively in JavaScriptCore, and within it almost entirely on WebAssembly: GC reference types, the ESM module-integration path (reserved `wasm:`/`wasm-js:` specifier handling, mutable-global bindings, JS string builtins), and ARM64 codegen for Wasm stubs and address forms, alongside occasional core JS spec-conformance fixes such as ArrayBuffer grow/resize length handling, Date component range validation, and `Atomics.isLockFree` coercion. The work reads as spec-conformance and codegen tuning rather than dedicated security review, but a recurring subset lands directly on memory-safety boundaries — initializing Wasm GC arrays of references with `gcSafeMemfill`, forcing BoundsChecking for Memory64 accesses in BBQ, and range-checking lengths before narrowing to `size_t`. Systematic-variant candidate: the repeated `gcSafeMemfill` fixes across separate ref-array initialization sites suggest the sweep is incomplete — other Wasm GC allocation and fill paths are worth checking for reference-typed storage still written with non-GC-safe fills.
Components
Security Fix History
Hardening Commits
- 2026-08-28 [JSC][Wasm] Reserved wasm: and wasm-js: names should LinkError in ESM
- 2026-08-25 [JSC][Wasm] Use loadPair for targetInstance and entrypoint in wasmToWasm stubs
- 2026-08-05 [JSC][Wasm] Force BoundsChecking for Memory64 accesses in BBQ 2026-W31
- 2026-07-29 [JSC] Use overflow-safe range when choosing a switch jump table
Recent Commits
- 2026-09-15 [JSC] Do not crash on a TypeProfiler query with no location
- 2026-09-15 [JSC] Reject a NaN Error.stackTraceLimit before converting to unsigned
- 2026-09-11 [JSC][Wasm] Initialize ref arrays with gcSafeMemfill
- 2026-09-10 [JSC] Check ArrayBuffer grow/resize length before converting to size_t
- 2026-09-10 [JSC] Fill Wasm GC arrays of references with gcSafeMemfill
- 2026-09-10 [JSC] Reject Date components that do not fit in the ECMAScript time range
- 2026-09-09 [JSC] Atomics.isLockFree should use ToIntegerOrInfinity
- 2026-09-06 [JSC] Load ARM64 SIMD bitmask tower constants
- 2026-09-06 [JSC][Wasm] Accept bottom refs in i31.get_s and i31.get_u
- 2026-09-04 [JSC][Wasm] Use ARM64 post-index in the restore-frame copy
- 2026-09-04 [JSC][Wasm] Add memory.fill and memory.copy stress tests
- 2026-09-03 [JSC] Fold Shl into ARM64 WasmAddress index form
- 2026-09-03 [JSC][Wasm] Inline table.get for funcref 2026-W35
- 2026-09-03 [WPT] Import JSPI TestSandwich await and ESM worker message-shape fixes
- 2026-09-02 Give Sergey Rubanov committer status