Solidariteit met Oekraïne. Service gratis aangeboden aan Oekraïense bedrijven zolang de oorlog duurt. Gratis toegang aanvragen
Beveiliging - openbaar document

<em>Openbaar</em> threat model.

Wat wij beschermen, tegen wie, hoe, en wat wij <em>niet</em> beschermen. Een benoemde perimeter is beter dan verborgen beloften.

Versie v1.0 · herzien op {{ "now"|date("d/m/Y") }} · herzien bij elke grote release.

Methodologie: STRIDE (Spoofing / Tampering / Repudiation / Information disclosure / Denial of service / Elevation of privilege) toegepast op vijf oppervlakken van het product. Elke regel: dreiging - mitigatie ARDNTECH - aangenomen trade-off.

Document bestemd voor CISO's, auditoren en beveiligingsonderzoekers. De AGPL-broncode is openbaar op github.com/aegirex/server. De gedetailleerde operationele runbooks blijven voorbehouden aan design partners onder NDA.

1. Gemodelleerde actoren

De negen in het model in aanmerking genomen aanvallersprofielen.

Actor Beschrijving Capaciteiten
Externe aanvaller Internet, geen initiële toegang Brute force, phishing, web-exploits, netwerk-MITM
Gephishte gebruiker Gebruiker als doelwit van een klonensite Geeft zijn inloggegevens aan een aanvallersdomein
Kwaadaardige medehuurder Gebruiker van een andere ARDNTECH-organisatie Probeert de secrets van naburige organisaties te lezen
Gecompromitteerde browser Browser geïnfecteerd door malware of een kwaadaardige extensie Toegang tot de DOM, kan de invoervelden lezen
Serverbeheerder Infrastructuuroperator met SSH-toegang tot de server Leest de database, leest het geheugen, wijzigt de code
Exfiltratie van de database Gestolen back-up, gelekte SQL-dump Volledige snapshot van de database
Gerechtelijke autoriteit Wettelijke vordering, administratief mandaat Dwingt de hoster de opgeslagen gegevens te leveren
ARDNTECH-insider Toekomstige werknemer of dienstverlener van ARDNTECH Codereview, uitroltoegang, lezen van de logs
Quantumtegenstander Operationele quantumcomputer (horizon > 2030) Breekt RSA / ECC in polynomiale tijd (Shor)

2. Beschermde gegevens

Classificatie van de gegevens en beschermingsniveau in rust.

Gegeven Gevoeligheid Opslag
Hoofdwachtwoord van de gebruiker Kritiek Enkel Argon2id-hash (RFC 9106)
Inhoud van de secrets (payload) Kritiek End-to-end versleuteld (OpenPGP), de server slaat een ondoorzichtige blob op
OpenPGP-privésleutel van de gebruiker Kritiek Nooit op de server. Lokaal opgeslagen, beschermd door een gebruikerspassphrase
TOTP-secrets in rust Kritiek Versleuteld met XChaCha20-Poly1305 (sleutel buiten de database)
Webhook-secrets in rust Kritiek Versleuteld met XChaCha20-Poly1305 (sleutel buiten de database)
Namen van secrets en mappen Matig In klare tekst aan serverzijde. Trade-off gedocumenteerd 5.1
Auditlog Hoog HMAC-SHA-256-keten, tamper-evidence in O(1)

3. Dreigingen en mitigaties per oppervlak

3.1 SaaS-webapplicatie

Dreiging Mitigatie Status
Brute force op het wachtwoord Rate limiter 5 pogingen / 15 min per IP + Argon2id (256 MiB, 5 passes) - 1 s per lokale poging Geleverd
Credential stuffing Dezelfde rate limiter + HIBP-scan opt-in na login (expliciete AVG-toestemming) Geleverd
Bypass van 2FA TOTP RFC 6238 met issuer pinning + eenmalige herstelcodes + WebAuthn PRF Geleverd
Opgeslagen of gereflecteerde XSS Strikte CSP (script-src 'self' 'wasm-unsafe-eval'), Trusted Types geactiveerd, automatische Twig-escaping Geleverd
Compromittering van de OpenPGP.js-afhankelijkheid Vendored bibliotheek met SHA-256-vingerafdruk geverifieerd bij de build (SRI-integriteitsmanifest) Geleverd
Phishing van het hoofdwachtwoord Sterke mitigatie binnenkort: WebAuthn PRF-passkeys, die de doorgifte van het wachtwoord schrappen en door de browser aan het oorspronkelijke domein gebonden zijn. In afwachting: gebruikerstraining + UI-indicatoren. Binnenkort

3.2 Versleutelde opslag

Dreiging Mitigatie Status
Gestolen dump van de database OpenPGP E2E-versleutelde payload onleesbaar zonder de privésleutel van de gebruiker. Wachtwoorden in Argon2id-hash niet herstelbaar Geleverd
Gestolen back-up Versleutelde back-ups (Argon2id + ChaCha20-Poly1305), multi-ontvanger. Geautomatiseerde restauratietest in CI Geleverd
Serverbeheerder leest de inhoud van een secret Onmogelijk zonder de privésleutel van de gebruiker. De server slaat enkel ondoorzichtige blobs op Geleverd
Manipulatie van het auditlog (tampering) HMAC-SHA-256-keten, detectie in O(1) bij de verificatie. Detail van de keten Geleverd

3.3 REST API

Dreiging Mitigatie Status
Cross-organisatie-datalek Elke API-token gekoppeld aan een unieke organisatie. Systematische filtering bij elk endpoint. Expliciete isolatietests in CI bij elke commit Geleverd
Diefstal van API-token Token gehasht met Argon2id in de database. Vrije rotatie door de gebruiker. Minimale scope (lezen / schrijven) configureerbaar Geleverd
Applicatieve denial of service Rate limiter per token en per IP (Symfony-kader) Geleverd

3.4 Browserextensies

Dreiging Mitigatie Status
Compromittering van de build-pipeline SHA-256-vingerafdrukverificatie van de afhankelijkheden geketend aan de build. Ondertekend SBOM gepland Geleverd
Sluiting van de popup = tijdelijk verlies van toegang Trade-off van de eerste versie: de privésleutel wordt niet gepersisteerd om het aanvalsoppervlak te beperken. Binnenkort: instelbare auto-lock + persistentie via een gecontroleerde service worker. Binnenkort
Onderschepping van inloggegevens op een phishingsite De gebruiker ziet de reële domeinnaam in de pop-up van de extensie voordat hij op "Opslaan" klikt Geleverd

3.5 Zelfgehoste infrastructuur

Dreiging Mitigatie Status
Gecompromitteerd Docker-image Geautomatiseerde kwetsbaarheidsscan in CI. Sigstore-handtekening gepland voor gebruikersverificatie aan uitrolzijde In uitvoering
Niet-geteste back-up Geautomatiseerde restauratietest in CI bij elke release. Geen niet-geverifieerde back-up in productie Geleverd
mTLS in productie Activeerbaar via configuratie. Modi audit (enkel logs) en daarna enforcement beschikbaar Geleverd

4. Beschermingsperimeter - aangenomen grenzen

Redactionele eerlijkheid: hier zijn de oppervlakken die ARDNTECH niet alleen dekt, en de aanbevolen mitigatie.

Grens Waarom Aanbevolen mitigatie
Volledige compromittering van het apparaat van de gebruiker Malware met toegang tot het RAM van de browser kan de ontsleutelde privésleutel lezen Hardware-passkey (YubiKey, TPM) die de sleutel in een beveiligd element opsluit
Compromittering van de ARDNTECH-server (root) Een root-aanvaller kan de actieve HTTP-sessies lezen De opgeslagen secrets blijven onleesbaar (zero-knowledge). Enkel de sessies die op het moment van de compromittering open zijn, lopen risico. Korte auto-lock aanbevolen
Verlies van het hoofdwachtwoord Direct gevolg van de strikte zero-knowledge: geen enkele manier aan serverzijde om de sleutel te herstellen Herstelcodes afgedrukt bij de aanmaak. Binnenkort: Shamir-deling M-op-N voor de Enterprise-plannen
Quantumtegenstander (horizon > 2030) OpenPGP v6 + AES-256 worden volgens het RGS ANSSI 2024 als 5 tot 10 jaar veilig ingeschat Post-quantummigratie (ML-KEM, ML-DSA) in langetermijnevaluatie
Fysieke aanval op het gebruikersapparaat ARDNTECH is een logische kluis, geen fysieke kluis Korte auto-lock van de kluis + hardware WebAuthn-passkey
ARDNTECH-insider (toekomstige werknemer) Aangenomen grens van het vertrouwensmodel van een SaaS-uitgever NDA, scheiding van verantwoordelijkheden, verplichte codereview, manipulatiebestendige auditketen, principe van minimale rechten

5. Aangenomen trade-offs

5.1 Namen van secrets en mappen in klare tekst aan serverzijde

Keuze: namen opgeslagen in klare tekst aan serverzijde.

Waarom: onmiddellijk zoeken aan serverzijde, weergave van de boomstructuur zonder ontsleuteling bij elke navigatie, hiërarchisch delen van mappen mogelijk.

Impact: een aanvaller die de database exfiltreert, ziet dat een secret met de naam "AWS Prod" bestaat in de map "DevOps / Cloud". Hij ziet NIET de inhoud (E2E-versleutelde payload).

Overwogen alternatief: optie "anonymise me" die ook de namen versleutelt. Aanzienlijke UX-kosten: geen zoeken aan serverzijde, volledige clientscan bij elk verzoek.

5.2 Wachtwoord in klare tekst in de DOM tijdens het invoeren

Keuze: OpenPGP versleutelt de payload nadat de gebruiker zijn wachtwoord heeft getypt.

Waarom: geen alternatief - de browser moet de klare tekst zien om de gebruiker in staat te stellen deze in te voeren.

Mitigaties: Trusted Types CSP verhindert dat DOM XSS exfiltrerend JavaScript injecteert. Binnenkort: WebAuthn-passkeys die de doorgifte van wachtwoorden volledig schrappen.

5.3 Hoofdwachtwoord = unieke sleutel van de kluis

Keuze: geen herstel als de gebruiker zowel zijn hoofdwachtwoord ALS zijn herstelcodes verliest.

Waarom: strikte zero-knowledge. Als wij zouden kunnen herstellen, zou er een ontsleutelingspad aan serverzijde zijn.

Mitigatie binnenkort: Shamir-deling van de privésleutel (M-op-N delen), één deel bij ARDNTECH met procedurele waarborgen (ontgrendeling enkel met de aanwezigheid van N-1 andere delen, door de gebruiker gevalideerd). Voorbehouden aan de Enterprise-plannen.

6. Incidentresponsplan

Niveau Trigger Actie
L1 Vermoeden Anomalie in het auditlog, gebruikersmelding Intern onderzoek binnen 24 u, verificatie van de auditketen
L2 Bevestigde compromittering Technische compromittering bevestigd door het onderzoek Gebruikersmelding binnen 72 u (AVG Art. 33), rotatie van de getroffen sleutels, invoering van mitigaties
L3 Grote compromittering Database of broncode gecompromitteerd CNIL- en ANSSI-melding, openbaar transparantierapport, externe forensische audit

Responsible disclosure: Conform RFC 9116 geeft een bestand /.well-known/security.txt in de root van de site ons contactadres security@aegirex.eu aan. Termijn voor ontvangstbevestiging: 72 u.

Het document verduidelijken?

Dit threat model is een levend document. Als u CISO, auditor of beveiligingsonderzoeker bent en een dreiging slecht gemodelleerd is, neem dan rechtstreeks contact met ons op.