docs(security): the attack surface here is data, so the report route had to say where a wrong entry gets fixed
org-ops recorded SECURITY.md as missing against the org standard (coord, 2026-08-11) and this repository owed it for a sharper reason than "given what the repo is about": nothing here runs, so a report is never a crash — it is a detection entry that looks like it works and is not looking. SECURITY.md therefore answers what an ordinary policy does not have to: how to report that a detection-table entry is WRONG, and why a confirmed defect in extracted data is decided in the runtime it was extracted from before it is changed here. Correcting it here would make the copy disagree with the implementation it was taken from — two runtimes, two answers on one input, the exact failure this repository exists to prevent. Two classes skip that routing: a real secret in the history, and data authored here rather than extracted. Fix latency is stated plainly as bounded by the owning runtime's schedule and the consumer's pull, not by ours. secret-egress 0.1.0 -> 0.2.0 is a staleness DISCLOSURE, not a data change: all 18 patterns byte-identical, one evidence_limits entry added. llm-security reports the source table at 19 entries now; recorded as their report and not reproduced, because the commit carrying it is not on their public remote — measured at b1ba1fb today. What was measured here: none of the 18 patterns matches a legacy sk-...T3BlbkFJ... shape. A consumer vendoring this file under-matches the seed hook by one entry, and now reads that in the file. manifest 0.3.0 -> 0.3.1 corrects the secret-egress blocker. Through 0.3.0 it named gcp-service-account-json and openai-api-key-legacy together as ids "absent here". Measured against the guard at e671edb by running this file's own 18 patterns over a service-account document: a COMPLETE service-account key file is matched here at order 11, since the PEM entry's prefix group is optional and the bare PKCS#8 header matches; the same document with private_key removed matches nothing here while the guard's marker still fires. That is a cut-point difference, which is what the blocker is about, not a missing entry. openai-api-key-legacy IS a real hole and is now recorded as one. Folded into the existing blocker string rather than a sibling key, because blockers is a map from table path to text. Verified: all JSON well-formed; every non-fixture JSON has a top-level version; charter clean (no executable code); patterns[] and count byte-identical to HEAD for secret-egress; manifest key set unchanged and count still 90; 90 case directories untouched; every spec still carries its normative marker. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T85QqeiWBEoBMjWaMiBnxD
This commit is contained in:
parent
d96fbbf791
commit
0e765a02eb
5 changed files with 201 additions and 4 deletions
|
|
@ -150,6 +150,13 @@ so the gap is visible rather than inferred.
|
|||
- **The homoglyph map is finite.** Confusable coverage is a long tail; absence from the map
|
||||
is not evidence a character is safe.
|
||||
|
||||
## Reporting a wrong entry
|
||||
|
||||
A wrong code point or a mis-escaped regex here is a silent false negative in every runtime
|
||||
that reads it, so it is a security report even though nothing runs. Send it privately — see
|
||||
[SECURITY.md](SECURITY.md), which also explains why a confirmed defect in extracted data is
|
||||
decided in the runtime it came from before it is changed here.
|
||||
|
||||
## Changelog
|
||||
|
||||
See [CHANGELOG.md](CHANGELOG.md).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue