feat: add this week's findings to the security audit (2026-07-20)#38
Merged
Conversation
… the audit Second audit pass — 2026-07-20, commit 7c59137. Kept as an addition, not a rewrite: every existing finding, count, and section stays as written from the original July audit. Findings register: the 6 new findings render as their own array (findingsJul20) after a labeled divider row, so the table still shows which pass found what without adding a 5th column or otherwise touching the existing schema. Each new row links to its GitHub issue (#781-786). - High/Security: supply-chain signature verification never checks a cryptographic signature (Ed25519 format-only, Sigstore stub) — forged artifacts pass verify. Leaves spec 065 unimplemented. - High/Security: dev-any auth grants admin via the unsigned bearer literal "system_admin" and trusts any RFC1918-private peer. - Medium/Security: browser adapter allocates from unbounded Content-Length before reading the body, unlike the HTTP API's capped sibling. - Medium/Runtime: .NET Wasmtime bridge sets resource limits once at construction instead of per call; Rust core and Kotlin/Chicory are correctly implemented, .NET is the outlier. - Medium/Functional gap: agent execute validates real WASM packages fully, then routes through a hardcoded 7-ID example executor and fails anything else. - Low/Performance: resolve_version_range does a full registry scan+sort instead of a targeted lookup, recursive up to MAX_TRANSITIVE_DEPTH. Executive summary counts updated to match (High 4->6, Medium 7->10, Low 2->3; Critical and the spec/crate counts are untouched since this pass didn't audit those). Source line and JSON-LD dateModified note the second pass and its commit. Also folds in one confirmed-clean result as a strength-list addition: wasm32-unknown-unknown portability re-verified with native-only deps correctly feature-gated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Second audit pass, commit
7c59137. This is an addition to the existing audit, not a rewrite — every finding, count, and section from the original July audit is untouched.How history is preserved: the findings register table must keep its exact existing 4-column schema (
Severity | Domain | Location | Finding), so I couldn't add a "date found" column. Instead the 6 new findings render from their own array, after a labeled divider row (NEW FINDINGS — AUDITED 2026-07-20, COMMIT 7C59137) styled distinctly in accent color. The register now visibly shows two audit passes instead of silently merging them into one undated list.New findings (linked to their GitHub issues)
artifact verify. Leaves spec 065 unimplemented. #781dev-anyauth mode grants admin via the unsigned bearer literal"system_admin"and trusts any RFC1918-private peer, not just loopback. #782Content-Lengthbefore reading the body, unlike the HTTP API's capped sibling. #783agent executefully validates real WASM packages, then routes through a hardcoded 7-ID example executor and fails on anything else. #785resolve_version_rangedoes a full registry scan+sort instead of a targeted lookup. #786Also updated
dateModifiednote the second pass and its commit.wasm32-unknown-unknownportability re-verified, native-only deps correctly feature-gated.Test plan
npm run buildclean🤖 Generated with Claude Code