fix(lexicon,docs): the script-tag row reversed — commons is now the sole diverger
llm-security commit 90f576f (2026-08-10) dropped the closing-</script>-tag requirement from hybrid-xss:script-tag, matching what the guard has always had. Both now agree in shape (no closing tag required), still not byte-identical ([^><] vs [^>]). Commons' own extracted pattern is unchanged under behaviour-preservation, so it is the only one of the three still requiring a closing tag — the opposite of what the divergence doc said when it was written. injection-lexicon.json gains source_fidelity.post_extraction_drift: the existing 83/83-at-b0de0ca claim is untouched (extraction-commit fidelity never decays), and the new 82/83-at-b1ba1fb count carries its own commit and date so it doesn't read as a bare, decaying "vs HEAD" claim. Verified directly against both upstream trees this session, not relayed: llm-security's public remote re-fetched to b1ba1fb, guard read at HEAD 0dce50f.
This commit is contained in:
parent
532d70d5ed
commit
6f79a6ea57
3 changed files with 81 additions and 3 deletions
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"version": "0.5.1",
|
||||
"version": "0.6.0",
|
||||
"id": "injection-lexicon",
|
||||
"description": "Prompt-injection pattern lexicon: the four pattern families a detector matches against untrusted text, and the severity family each belongs to. Data only. The variant building that feeds these patterns (normalisation, homoglyph folding, rot13, unicode-tag escalation) and the buried-payload heuristic are engine behaviour and are deliberately NOT described here.",
|
||||
"owasp": "LLM01",
|
||||
|
|
@ -112,7 +112,27 @@
|
|||
"why_retracted": "The same transcription inversion in the opposite direction. The module writes pr[e\\u00e9]c[e\\u00e9]dentes? with escapes; this was the only one of the 83 patterns not byte-identical to source. Corrected in 0.4.0 to the module's spelling, which makes the count 83/83.",
|
||||
"behaviour_impact": "None. The two spellings are the same regular expression. Verified by compiling both forms and comparing match presence and offsets in Node (bare and `u` mode) and in Python `re` over accented, unaccented, uppercase and non-matching French inputs - identical results throughout."
|
||||
}
|
||||
]
|
||||
],
|
||||
"post_extraction_drift": {
|
||||
"$comment": "patterns_byte_identical_to_source above states fidelity AT the commit this file was extracted from (b0de0ca) and does not update when llm-security's source moves further - that is what behaviour-preservation means. Recorded here because llm-security has since moved on one pattern, and a consumer diffing this file against llm-security's current source would otherwise find an unexplained mismatch with no coordinate to resolve it against. See docs/lexicon-port-divergence.md for the full account.",
|
||||
"extracted_from_commit": "b0de0ca",
|
||||
"extracted_from_commit_date": "2026-08-09",
|
||||
"count_at_extraction": 83,
|
||||
"drift": [
|
||||
{
|
||||
"pattern_id": "hybrid-xss:script-tag",
|
||||
"source_commit": "90f576f",
|
||||
"source_commit_date": "2026-08-10",
|
||||
"change": "llm-security dropped the closing-tag requirement: <script\\b[^>]*>[\\s\\S]*?<\\/script> became <script\\b[^>]*>, closing a recall hole where `<script>alert(1)` (unclosed) and `<script src=x.js>` produced no finding.",
|
||||
"commons_pattern_unchanged": true,
|
||||
"reconfirmed_no_further_drift_at": "b1ba1fb",
|
||||
"reconfirmed_date": "2026-08-11",
|
||||
"reconfirmed_method": "git diff 90f576f..b1ba1fb -- scanners/lib/injection-patterns.mjs on a fresh fetch of the public remote is empty for this pattern; no later commit touched it a second time."
|
||||
}
|
||||
],
|
||||
"count_against_llm_security_head_as_of_2026_08_11": 82,
|
||||
"count_against_llm_security_head_note": "b1ba1fb was llm-security's public-remote HEAD when this was measured, 2026-08-11. Not re-checked automatically; re-verify before citing against a later HEAD."
|
||||
}
|
||||
},
|
||||
"families": [
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue