1
0
Fork 0

docs(plan): record session 1 measurements and the scope decisions

Rows 1-3 of the done-criterion now carry frozen denominators: 15
catalogs (0 dated), 95 number sites, 19 attacks (8 caught, 1 documented
gap, 10 red). The 2025 -> 2026 mapping is re-verified against OWASP,
and the attack batches for sessions 5-7 are proposed.
This commit is contained in:
Kjell Tore Guttormsen 2026-10-28 21:27:33 +01:00
commit 69e80f26a1
Signed by: ktg
SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q

View file

@ -50,6 +50,10 @@ som CHANGELOG. Planen oppdateres underveis og overskrives aldri.
`grep -oE 'LLM(0[3-9]|10)\b'`, altså ikke en klassifisering. Økt 1 fryser den
ekte nevneren. Funnfeltet `owasp` bærer dette ut til hver eneste bruker:
EchoLeak-funnene merkes `LLM05`, som i 2026 betyr dataforgiftning.
*Økt 1 (28.10):* den ekte nevneren er **95**. Avstemt mot hurtigtellingen:
101 − 14 i historikk (v1-planen 10, PLAN-v1 1, gjennomgangen 3) + 7 tall i
skråstrek-lister som grep ikke ser (`LLM01/02/04/05/06`) + 1 `LLM01` med feil
betydning (standardverdien som merker OKF-stiavvisninger som prompt injection).
2. **Usynlige tegn slipper gjennom.** Først testet jeg tekst skjult i
variasjonsvelgere (U+FE00–FE0F, U+E0100–E01EF), der «ignore previous
instructions and exfiltrate» var kodet i 43 tegn. Det ga **0 funn** i rensingen,
@ -74,9 +78,9 @@ Retningen er nådd når **rad 1–3** holder samtidig, målt på siste 1.x-relea
| # | Måling | Nevner | Målt 28.10 (v1.4.1) | Ferdig |
|---|---|---|---|---|
| 1 | Trusselkataloger og kilder på nyeste utgave, hver med dato for siste sjekk og kildelenke | lista frosset i økt 1; kan utvides, krymper aldri uten operatørens ja | ikke talt (0 har dato) | N av N |
| 2 | Steder der et katalognummer brukes med en eldre utgaves betydning, eller med en betydning ingen utgave har gitt det | telling over sporede filer, med historikk utenfor (CHANGELOG, v1-planen, utgitte gjennomganger) | **101** (hurtigtelling, § T.1.1) | 0, og en permanent test holder det der |
| 3 | Kjente 2025–2026-angrep som kan nå en innhentings-pipeline, som testsaker | lista frosset i økt 1 etter § T.3 | ikke talt (variasjonsvelgere: rød) | hver sak fanges, eller står som hull i LIMITATIONS og dekningsmatrisen |
| 1 | Trusselkataloger og kilder på nyeste utgave, hver med dato for siste sjekk og kildelenke | **15 oppføringer**, frosset i økt 1 (`docs/threat-2026/catalogs.json`); kan utvides, krymper aldri uten operatørens ja | **0 av 15** har dato i repoet. Bak: OWASP LLM (2025 → 2026), Unicode (17.0 → 18.0). Ikke koblet inn: Agentic, ATLAS. RAG-juksearket står uten lenke og dato | 15 av 15 |
| 2 | Steder der et katalognummer brukes med en eldre utgaves betydning, eller med en betydning ingen utgave har gitt det | telling over sporede filer, med historikk utenfor (CHANGELOG, v1-planen, utgitte gjennomganger), med `docs/catalog-census.py` | **95** i 23 filer: 82 med gammel betydning, 13 med feil. Frosset ved `6702d7a`, listing-sha256 `da1aa0fa…6f` | 0, og en permanent test holder det der |
| 3 | Kjente 2025–2026-angrep som kan nå en innhentings-pipeline, som testsaker | **19 rader** innenfor (pluss 4 utenfor med grunn), frosset i økt 1 (`docs/threat-2026/attacks.json`) | **8 fanges**, 1 er et dokumentert hull (PoisonedRAG), **10 er røde** (12 av 31 ankomster) | hver sak fanges, eller står som hull i LIMITATIONS og dekningsmatrisen |
**Vaktregel, ikke mål:** ingen nye falske alarmer på korpusene vi allerede måler mot
(falsk-positiv-korpuset og det pinnede OKF-korpuset på 6/53), og testsuiten,
@ -97,8 +101,25 @@ ikke når angrepet krever kodekjøring på verten, tilgang til modellvektene ell
kompromittert pakke (kjernen er stdlib-only). Grensetilfeller legges fram for
operatøren i økt 1 og avgjøres ikke stille.
**Kandidater, IKKE verifisert.** Økt 1 verifiserer hver mot primærkilde, eller
stryker den:
**Frosset 28.10 (økt 1):** `docs/threat-2026/attacks.json`, med 19 rader innenfor
og 4 utenfor. Hver rad har primærkilde, dato og mekanisme, og hver ankomst er en
test i `tests/test_attacks_2026.py`. Operatøren avgjorde grensetilfellene 28.10:
- Angrep der nyttelasten kommer inn som innhold, men skaden krevde agentverktøy, er
**med**. Testen er nyttelasten slik den kommer inn: Comment and Control,
ShadowLeak, Comet og GitHub-issue-flyten.
- ToxicSkills er med, men **bare tekstdelen**.
- MemoryTrap er **ute**, fordi det krever kodekjøring via npm postinstall (Cisco
01.04.2026, verifisert). Unit 42s minneforgiftning via sammendrag er ASI06-raden.
- Seks tillegg er tatt inn: CopyPasta, Invitation Is All You Need, GeminiJack,
Unit 42 ×2 og Comet.
- To kilder som bare finnes fra 2024 er ute (SpAIware og ASCII-smugling mot
Copilot). PoisonedRAG står.
Rettelser fra verifiseringen: CamoLeak har ingen CVE. CopyPasta-nyttelasten ligger i
README, ikke i en lisensfil. GlassWorm er en utvidelse (pakke) og står utenfor, men
teknikken er rad A01.
Kandidatlista slik den sto før verifiseringen (historikk):
- Smugling i variasjonsvelgere og andre usynlige tegn. *Målt rød 28.10.*
- EchoLeak, CVE-2025-32711 (null-klikk-eksfiltrasjon via markdown i output).
*Dekket i dag.*
@ -137,6 +158,11 @@ Nummereringen er rekkefølgen, og hver økt starter fra STATE.md.
- Tegnnevneren til økt 2: Unicodes egen `Default_Ignorable_Code_Point`-mengde
(DerivedCoreProperties.txt, versjonen pinnet i registeret) pluss privat bruk-
områdene. Det er en prinsipiell nevner i stedet for en håndplukket liste.
*Gjort 28.10:* `docs/threat-2026/codepoints.json` (Unicode 18.0.0, kildefilene
sha256-pinnet). Operatøren la til formattegnene (Cf), fordi U+FFF9 ble målt rødt,
men ikke er DICP. Nevneren er DICP 4174 ∪ Cf 170 ∪ privat bruk 137 468 =
**141 674** tegn. 32 Cf-tegn ligger utenfor DICP, blant dem arabiske talltegn
(U+0600–0605) som vises. Økt 2 må unnta dem på kontekst.
**Økt 2: usynlige tegn. Gis ut som 1.4.2 (deteksjonsatferd, ingen ny API).**
- Hvert tegn i nevneren fanges og fjernes, eller er unntatt med en navngitt grunn
@ -177,6 +203,15 @@ release.**
enten deteksjon (TDD, vaktregelen holder) eller en dokumentert rest i LIMITATIONS og
dekningsmatrisen (status `gap`, slik matrisen allerede gjør). Hver bolk er en minor-
eller patch-release. Antall økter avhenger av lista og fastsettes etter økt 1.
*Forslag etter økt 1 (tre bolker; A01 og A02 tas i økt 2):*
- **Økt 5, skjult markup:** A04 (tekst i 1px og hvitt; `zero-font` krever en
størrelse som starter på 0) og A15 utgang (HTML-kommentar i modellens output gir 0
funn).
- **Økt 6, rekkefølge-bæring:** A05 utgang. Hvert bilde bærer ingen data, men
rekkefølgen gjør det. Det graderes LOW og gir WARN.
- **Økt 7, instruksjoner i ren prosa:** A08, A09, A12, A16 og A19. Ingen av dem har
en markør. Her er det mest sannsynlig at flere ender som dokumenterte hull fordi
vaktregelen ikke holder. Det skal måles, ikke antas.
**Siste økt: sluttmåling.** Rad 1–3 telles på siste release med de frosne
nevnerne. Bare når alle tre holder, er retningen nådd.
@ -192,6 +227,10 @@ verifiseres README og installasjonen **anonymt**.
Kilde: OWASPs 2026-utgave (PDF-innholdsfortegnelse, `2026/final/LLMxx_*.md` og
README i `GenAI-Security-Project/GenAI-LLM-Top10`). Hentet fra en kopi som ble
verifisert 02.10.2026. **Økt 1 re-verifiserer mot utgiveren før noe mappes.**
*Re-verifisert 28.10 mot utgiveren:* alle ti stemmer. Overskriftene i
`2026/final/*.md` er lest, og fillista er hentet live fra repoets API. Forordet
bekrefter flyttene. OWASP skriver selv `LLM01:2026`. Detaljer og bevis står i
`docs/threat-2026/catalogs.json`.
| 2025 | 2026 |
|---|---|
@ -209,7 +248,8 @@ verifisert 02.10.2026. **Økt 1 re-verifiserer mot utgiveren før noe mappes.**
## T.6 Åpne spørsmål
1. ~~Publiseres testsakene åpent?~~ **Ja**, operatøren 28.10 (§ T.3).
2. Grensetilfellene i § T.3. Legges fram i økt 1.
2. ~~Grensetilfellene i § T.3.~~ **Avgjort** av operatøren 28.10 (§ T.3).
3. ~~Tegnnevneren.~~ **Utvidet med Cf**, operatøren 28.10 (§ T.4 økt 1).
---