Solidaritet med Ukraine. Tjenesten tilbydes gratis til ukrainske virksomheder, så længe krigen varer. Anmod om gratis adgang
Sikkerhed - offentligt dokument

<em>Offentlig</em> threat model.

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.

1. Modellerede aktører

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)

2. Beskyttede data

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)

3. Trusler og mitigeringer pr. overflade

3.1 SaaS-webapplikation

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

3.2 Krypteret lagring

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

3.3 REST-API

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

3.4 Browserudvidelser

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

3.5 Selvhostet infrastruktur

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

4. Beskyttelsesperimeter - antagne grænser

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

5. Antagne trade-offs

5.1 Navne på hemmeligheder og mapper i klartekst på serversiden

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.

5.2 Adgangskode i klartekst i DOM under indtastning

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.

5.3 Hovedadgangskode = boksens eneste nøgle

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.

6. Hændelsesresponsplan

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.

Præcisere dokumentet?

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.