Bronnen
Simulator Journaal Woordenlijst Extensies Vertrouwen Servicestatus ContactTaal wijzigen
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.
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) |
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) |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
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 |
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.
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.
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.
| 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.
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.