Skip to content

panic-attack (advisory): 10 critical + 1 high on standards — 8 come from an outdated pin, 3 are already tracked #1306

Open

Description

@hyperpolymath

Summary

Since #1256, the Hypatia scan workflow really runs panic-attack, as an advisory step that never gates. On main it reports 10 critical, 1 high and 25 medium unsuppressed findings for this repository. Nothing has been tracking them; the earlier panic-attack triage issues (#178, #313) closed in August.

Most of the count comes from the scanner's pinned version, not from this repository's code:

Measured on main @ 333b06a Critical High Medium
CI pin 2dc1393c (2026-06-02, what hypatia-scan-reusable.yml builds) 10 1 25
panic-attack main b689a74 (2026-10-08) 2 1 37

Both rows come from a local build of each commit (cargo install --git … --rev <sha> --locked), run as CI runs it: panic-attack assail . --output report.json, counting weak_points with suppressed != true. The pinned row matches CI's step warning on main ("10 critical and 1 high").

The 11 critical and high findings

# Severity at the pin Category File Status
1–4 Critical UnboundedAllocation 9-archive/rhodium-standard-repositories/satellites/rsr-certifier/engine/src/compliance/{bronze,silver,gold,rhodium}.rs Medium on current panic-attack
5 Critical UnboundedAllocation hooks/playbook-to-recipe/src/main.rs Medium on current panic-attack
6 Critical UnboundedAllocation 2-protocols/k9-coordination/tools/k9-init/src/main.rs Medium on current panic-attack
7 Critical UnboundedAllocation tools/js-runtimes/src/lib.rs Medium on current panic-attack
8 Critical UnboundedAllocation 1-formats/sub-specs/inline-annotations/extractor/src/main.rs Medium on current panic-attack
9 Critical CommandInjection (eval) 9-archive/…/satellites/palimpsest-license/bof-meetings/presentations/demo-dns-discovery.sh still Critical; already acknowledged in Hypatia as eval_in_shell (#939)
10 Critical CommandInjection (eval) 9-archive/…/satellites/palimpsest-license/bof-meetings/presentations/demo-http-headers.sh still Critical; already acknowledged in Hypatia as eval_in_shell (#939)
11 High UnboundedLoop (while True) 1-formats/deed/tools/deed_lint.py still High; banned Python, tracked in #944 and removed by WO-5 in docs/reorg/2026-10-14-tidy/WORK-ORDERS-2026-10-19.adoc (#1298)

1. Eight of the ten criticals come from the outdated pin

UnboundedAllocation is a keyword heuristic. It fires on a whole file, with no line number, when the file contains, for example, read_to_string or read_to_end without .take( or a limit word. panic-attack downgraded it upstream in 3f7d0bb (2026-06-13), "fix(assail): UnboundedAllocation is Medium, not Critical". The comment in src/assail/analyzer.rs says that at Critical this one matcher was about 70% of all Criticals across the estate. CI's pin 2dc1393c predates that fix by 11 days and is 86 commits behind panic-attack main. The four live tools in rows 5–8 are local CLIs that read files from the repository itself.

Bumping PANIC_ATTACK_SHA changes the advisory counts for every caller of the reusable workflow, which is the point, so the bump should be measured first.

2. The three real items are already owned elsewhere

3. Rows 9–10 cannot currently be acknowledged in panic-attack

panic-attack at both commits has two suppression routes, and neither works here:

  • The inline marker // panic-attack: accepted applies only to a finding that carries a line number. That is the "same or preceding line" rule in apply_v255_context_suppression, and these findings have none.
  • The classification file is .panic-attack-classifications.a2ml (or audits/assail-classifications.a2ml), and A2ML is retired in this estate (D99, D269c, D312, D313). This repository cannot add one.

That leaves an owner decision, either:

  • exclude 9-archive/ from the assail scope, which is consistent with WO-4's archive freeze, or
  • have panic-attack accept a deed-format classification file upstream.

Readiness grades

The Grade B evidence line now reads "status: ran with zero critical and zero high". READINESS.md declares Grade C, so nothing conflicts today. After the pin bump and WO-5, rows 9–10 are the only blockers left for that line.

Proposed steps

  • Bump PANIC_ATTACK_SHA in .github/workflows/hypatia-scan-reusable.yml to a current panic-attack commit. Re-measure, and check that the panic-attack-v1-… cache key follows the SHA. This is an estate-wide reusable workflow, so the step stays advisory.
  • Land WO-5, deleting the Python deed tools. That clears row 11.
  • Owner decision on the archive: exclude 9-archive/ from assail, or ask for a non-A2ML classification format upstream. That clears rows 9–10.
  • Re-measure on main. Close this issue when the step reports status: ran with 0 critical and 0 high, or when the remaining items have an explicit, recorded acknowledgement.

Out of scope: the 25 medium findings (37 on current panic-attack). They are mostly CommandInjection and PathTraversal heuristics in scripts/.

Nothing was changed to open this issue. No licence content is involved.

Activity

  1. added
    bugSomething is broken or behaves incorrectly
    securitySecurity posture, secrets, scanning, advisories, supply chain
    on Oct 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is broken or behaves incorrectlysecuritySecurity posture, secrets, scanning, advisories, supply chain

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions