Ressourcer
Simulator Journal Ordliste Udvidelser Tillid Driftsstatus KontaktSkift sprog
Det vi beskytter, mod hvem, hvordan, og det vi <em>ikke</em> beskytter. Bedre med en navngiven perimeter end skjulte løfter.
Version v1.0 · revideret den {{ "now"|date("d/m/Y") }} · revideret ved hver større release.
Metode: STRIDE (Spoofing / Tampering / Repudiation / Information disclosure / Denial of service / Elevation of privilege) anvendt på fem af produktets overflader. Hver linje: trussel - ARDNTECH-mitigering - antaget trade-off.
Dokument henvendt til CISO'er, auditorer og sikkerhedsforskere. AGPL-kildekoden er offentlig på github.com/aegirex/server. De detaljerede operationelle runbooks er fortsat forbeholdt design partners under NDA.
De ni angriberprofiler, der tages højde for i modellen.
| Aktør | Beskrivelse | Kapaciteter |
|---|---|---|
| Ekstern angriber | Internet, ingen indledende adgang | Brute force, phishing, web-exploits, netværks-MITM |
| Phishet bruger | Bruger der er mål for et klonet site | Indsender sine loginoplysninger til et angriberdomæne |
| Ondsindet medlejer | Bruger i en anden ARDNTECH-organisation | Forsøger at læse nabo-organisationers hemmeligheder |
| Kompromitteret browser | Browser inficeret af malware eller ondsindet udvidelse | Adgang til DOM, kan læse indtastningsfelterne |
| Serveradministrator | Infrastrukturoperatør med SSH-adgang til serveren | Læser databasen, læser hukommelsen, ændrer koden |
| Eksfiltrering af database | Stjålet backup, lækket SQL-dump | Komplet snapshot af databasen |
| Retsmyndighed | Lovlig rekvisition, administrativt mandat | Tvinger hostingudbyderen til at levere de lagrede data |
| ARDNTECH-insider | Fremtidig medarbejder eller leverandør hos ARDNTECH | Kodereview, udrulningsadgang, læsning af logs |
| Kvantemodstander | Operationel kvantecomputer (horisont > 2030) | Bryder RSA / ECC i polynomiel tid (Shor) |
Klassificering af data og beskyttelsesniveau at-rest.
| Data | Følsomhed | Lagring |
|---|---|---|
| Brugerens hovedadgangskode | Kritisk | Kun Argon2id-hash (RFC 9106) |
| Hemmelighedernes indhold (payload) | Kritisk | End-to-end-krypteret (OpenPGP), serveren lagrer en uigennemsigtig blob |
| Brugerens private OpenPGP-nøgle | Kritisk | Aldrig på serveren. Lagret lokalt, beskyttet af brugerens passphrase |
| TOTP-hemmeligheder at-rest | Kritisk | Krypteret XChaCha20-Poly1305 (nøgle uden for databasen) |
| Webhook-hemmeligheder at-rest | Kritisk | Krypteret XChaCha20-Poly1305 (nøgle uden for databasen) |
| Navne på hemmeligheder og mapper | Moderat | I klartekst på serversiden. Trade-off dokumenteret 5.1 |
| Auditlog | Høj | HMAC-SHA-256-kæde, tamper-evidence i O(1) |
| Trussel | Mitigering | Status |
|---|---|---|
| Brute force på adgangskoden | Rate limiter 5 forsøg / 15 min pr. IP + Argon2id (256 MiB, 5 passes) - 1 s pr. lokalt forsøg | Leveret |
| Credential stuffing | Samme rate limiter + HIBP-scan opt-in efter login (eksplicit GDPR-samtykke) | Leveret |
| 2FA-bypass | TOTP RFC 6238 med issuer pinning + engangs-gendannelseskoder + WebAuthn PRF | Leveret |
| Lagret eller reflekteret XSS | Striks CSP (script-src 'self' 'wasm-unsafe-eval'), Trusted Types aktiveret, automatisk Twig-escaping | Leveret |
| Kompromittering af OpenPGP.js-afhængigheden | Bibliotek vendoreret med SHA-256-fingeraftryk verificeret ved build (SRI-integritetsmanifest) | Leveret |
| Phishing af hovedadgangskoden | Stærk mitigering kommende: WebAuthn PRF-passkeys, der fjerner overførslen af adgangskoden og bindes til oprindelsesdomænet af browseren. I mellemtiden: brugeruddannelse + UI-indikatorer. | Kommende |
| Trussel | Mitigering | Status |
|---|---|---|
| Stjålet dump af databasen | OpenPGP E2E-krypteret payload ulæselig uden brugerens private nøgle. Adgangskoder i Argon2id-hash kan ikke gendannes | Leveret |
| Stjålet backup | Krypterede backups (Argon2id + ChaCha20-Poly1305), multi-modtager. Automatiseret gendannelsestest i CI | Leveret |
| Serveradministrator læser indholdet af en hemmelighed | Umuligt uden brugerens private nøgle. Serveren lagrer kun uigennemsigtige blobs | Leveret |
| Ændring af auditloggen (tampering) | HMAC-SHA-256-kæde, detektering i O(1) ved verifikation. Detaljer om kæden | Leveret |
| Trussel | Mitigering | Status |
|---|---|---|
| Cross-organisations-datalækage | Hvert API-token knyttet til en enkelt organisation. Systematisk filtrering ved hvert endpoint. Eksplicitte isolationstests i CI ved hvert commit | Leveret |
| Tyveri af API-token | Token hashet med Argon2id i databasen. Fri rotation af brugeren. Minimal scope (læsning / skrivning) konfigurerbar | Leveret |
| Applikations-denial of service | Rate limiter pr. token og pr. IP (Symfony-rammeværk) | Leveret |
| Trussel | Mitigering | Status |
|---|---|---|
| Kompromittering af build-pipelinen | SHA-256-fingeraftryksverifikation af afhængighederne kædet til buildet. Signeret SBOM planlagt | Leveret |
| Lukning af popup = midlertidigt adgangstab | Trade-off i den første version: den private nøgle persisteres ikke for at begrænse angrebsfladen. Kommende: konfigurerbar auto-lock + persistens via en kontrolleret service worker. | Kommende |
| Opfangning af loginoplysninger på et phishing-site | Brugeren ser det reelle domænenavn i udvidelsens popup, før der klikkes på «Gem» | Leveret |
| Trussel | Mitigering | Status |
|---|---|---|
| Kompromitteret Docker-image | Automatiseret sårbarhedsscanning i CI. Sigstore-signatur planlagt til brugerverifikation på udrulningssiden | I gang |
| Utestet backup | Automatiseret gendannelsestest i CI ved hver release. Ingen uverificeret backup i produktion | Leveret |
| mTLS i produktion | Kan aktiveres via konfiguration. Audit-tilstand (kun logs) og derefter enforcement tilgængelig | Leveret |
Redaktionel ærlighed: her er de overflader, ARDNTECH ikke dækker alene, og den anbefalede mitigering.
| Grænse | Hvorfor | Anbefalet mitigering |
|---|---|---|
| Komplet kompromittering af brugerens arbejdsstation | En malware med adgang til browserens RAM kan læse den dekrypterede private nøgle | Hardware-passkey (YubiKey, TPM), der indkapsler nøglen i et sikkert element |
| Kompromittering af ARDNTECH-serveren (root) | En root-angriber kan læse de aktive HTTP-sessioner | De lagrede hemmeligheder forbliver ulæselige (zero-knowledge). Kun de sessioner, der er åbne på kompromitteringstidspunktet, er i fare. Kort auto-lock anbefales |
| Tab af hovedadgangskoden | Direkte konsekvens af striks zero-knowledge: ingen måde på serversiden at gendanne nøglen | Gendannelseskoder udskrevet ved oprettelsen. Kommende: Shamir-deling M-af-N til Enterprise-planer |
| Kvantemodstander (horisont > 2030) | OpenPGP v6 + AES-256 vurderes sikre i 5 til 10 år ifølge RGS ANSSI 2024 | Post-kvante-migration (ML-KEM, ML-DSA) under langsigtet evaluering |
| Fysisk angreb på brugerarbejdsstationen | ARDNTECH er en logisk boks, ikke en fysisk boks | Kort auto-lock af boksen + fysisk WebAuthn-passkey |
| ARDNTECH-insider (fremtidig medarbejder) | Antaget grænse for SaaS-udgiverens tillidsmodel | NDA, opdeling af ansvar, obligatorisk kodereview, tamper-evident audit chain, princippet om mindste privilegium |
Valg: navne lagret i klartekst på serversiden.
Hvorfor: øjeblikkelig søgning på serversiden, visning af træstrukturen uden dekryptering ved hver navigation, hierarkisk mappedeling mulig.
Indvirkning: en angriber, der eksfiltrerer databasen, ser, at en hemmelighed ved navn «AWS Prod» findes i mappen «DevOps / Cloud». Han ser IKKE indholdet (E2E-krypteret payload).
Overvejet alternativ: en «anonymise me»-option, der også krypterer navnene. Betydelig UX-omkostning: ingen søgning på serversiden, fuld klientscanning ved hver forespørgsel.
Valg: OpenPGP krypterer payloaden, efter at brugeren har tastet sin adgangskode.
Hvorfor: intet alternativ - browseren skal se klarteksten for at give brugeren mulighed for at taste den.
Mitigeringer: Trusted Types CSP forhindrer DOM XSS i at injicere eksfiltrerende JavaScript. Kommende: WebAuthn-passkeys, der fuldstændigt fjerner overførslen af adgangskoder.
Valg: ingen gendannelse, hvis brugeren mister både sin hovedadgangskode OG sine gendannelseskoder.
Hvorfor: striks zero-knowledge. Hvis vi kunne gendanne, ville der være en dekrypteringsvej på serversiden.
Kommende mitigering: Shamir-deling af den private nøgle (M-af-N dele), en del hos ARDNTECH med proceduremæssige værn (oplåsning kun med tilstedeværelse af N-1 andre dele valideret af brugeren). Forbeholdt Enterprise-planer.
| Niveau | Udløser | Handling |
|---|---|---|
| L1 Mistanke | Anomali i auditloggen, brugerindberetning | Intern undersøgelse inden for 24 t, verifikation af audit chain |
| L2 Bekræftet kompromittering | Teknisk kompromittering bekræftet af undersøgelsen | Brugernotifikation inden for 72 t (GDPR Art. 33), rotation af de berørte nøgler, iværksættelse af mitigeringer |
| L3 Større kompromittering | Database eller kildekode kompromitteret | CNIL- og ANSSI-notifikation, offentlig transparency report, eksternt forensisk audit |
Ansvarlig offentliggørelse: I overensstemmelse med RFC 9116 angiver en fil /.well-known/security.txt i sitets rod vores kontaktadresse security@aegirex.eu. Frist for kvittering for modtagelse: 72 t.
Denne threat model er et levende dokument. Hvis du er CISO, auditor eller sikkerhedsforsker, og en trussel er dårligt modelleret, så kontakt os direkte.