Ištekliai
Simuliatorius Žurnalas Žodynas Plėtiniai Pasitikėjimas Paslaugos būsena KontaktaiKeisti kalbą
Ką saugome, nuo ko, kaip ir ko <em>ne</em>saugome. Geriau įvardytas perimetras nei paslėpti pažadai.
Versija v1.0 · peržiūrėta {{ "now"|date("d/m/Y") }} · peržiūrima kiekvieno didelio leidimo metu.
Metodologija: STRIDE (Spoofing / Tampering / Repudiation / Information disclosure / Denial of service / Elevation of privilege), pritaikyta penkiems produkto paviršiams. Kiekviena eilutė : grėsmė : ARDNTECH sušvelninimas : prisiimtas kompromisas.
Dokumentas skirtas CISO, auditoriams ir saugumo tyrėjams. AGPL pirminis kodas yra viešas adresu github.com/aegirex/server. Išsamūs operaciniai runbook lieka prieinami tik design partners pagal NDA.
Devyni užpuoliko profiliai, įtraukti į modelį.
| Veikėjas | Aprašymas | Pajėgumai |
|---|---|---|
| Išorinis užpuolikas | Internetas, jokios pradinės prieigos | Brutalios jėgos atakos, fišingas, žiniatinklio eksploitai, tinklo MITM |
| Fišingo paveiktas naudotojas | Naudotojas, taikomas klonuotos svetainės | Pateikia savo prisijungimo duomenis užpuoliko valdomam domenui |
| Kenkėjiškas bendranuomininkas | Kitos ARDNTECH organizacijos naudotojas | Bando skaityti kaimyninių organizacijų paslaptis |
| Pažeista naršyklė | Naršyklė, užkrėsta kenkėjiška programa arba kenkėjišku plėtiniu | Prieiga prie DOM, gali skaityti įvesties laukus |
| Serverio administratorius | Infrastruktūros operatorius, turintis SSH prieigą prie serverio | Skaito duomenų bazę, skaito atmintį, keičia kodą |
| Duomenų bazės eksfiltracija | Pavogta atsarginė kopija, nutekintas SQL dump | Visa duomenų bazės momentinė kopija |
| Teisminė institucija | Teisinis reikalavimas, administracinis orderis | Verčia prieglobos teikėją pateikti saugomus duomenis |
| ARDNTECH viduje esantis asmuo | Būsimas ARDNTECH darbuotojas arba rangovas | Kodo peržiūra, diegimo prieiga, žurnalų skaitymas |
| Kvantinis priešininkas | Veikiantis kvantinis kompiuteris (horizontas > 2030) | Laužo RSA / ECC polinominiu laiku (Shor) |
Duomenų klasifikacija ir apsaugos lygis saugojimo metu.
| Duomenys | Jautrumas | Saugojimas |
|---|---|---|
| Naudotojo pagrindinis slaptažodis | Kritinis | Tik Argon2id maiša (RFC 9106) |
| Paslapčių turinys (payload) | Kritinis | Užšifruota visapusiškai (OpenPGP), serveris saugo neperskaitomą blob |
| Naudotojo OpenPGP privatusis raktas | Kritinis | Niekada serveryje. Saugoma lokaliai, apsaugota naudotojo slaptafraze |
| TOTP paslaptys saugojimo metu | Kritinis | Užšifruota XChaCha20-Poly1305 (raktas už duomenų bazės ribų) |
| Webhook paslaptys saugojimo metu | Kritinis | Užšifruota XChaCha20-Poly1305 (raktas už duomenų bazės ribų) |
| Paslapčių ir aplankų pavadinimai | Vidutinis | Atviru tekstu serverio pusėje. Kompromisas dokumentuotas 5.1 |
| Audito žurnalas | Aukštas | HMAC-SHA-256 grandinė, klastojimo aptikimas O(1) |
| Grėsmė | Rizikos mažinimas | Būsena |
|---|---|---|
| Brutalios jėgos ataka prieš slaptažodį | Spartos ribotuvas 5 bandymai / 15 min vienam IP + Argon2id (256 MiB, 5 perėjimai), 1 s per lokalų bandymą | Įgyvendinta |
| Credential stuffing | Tas pats spartos ribotuvas + HIBP nuskaitymas pasirinktinai po prisijungimo (aiškus BDAR sutikimas) | Įgyvendinta |
| 2FA apėjimas | TOTP RFC 6238 su issuer pinning + vienkartiniai atkūrimo kodai + WebAuthn PRF | Įgyvendinta |
| Saugomas arba atspindėtas XSS | Griežta CSP (script-src 'self' 'wasm-unsafe-eval'), įjungti Trusted Types, automatinis Twig ekranavimas | Įgyvendinta |
| OpenPGP.js priklausomybės kompromitavimas | Vendored biblioteka su SHA-256 atspaudu, patikrintu kompiliavimo metu (SRI vientisumo manifestas) | Įgyvendinta |
| Pagrindinio slaptažodžio fišingas | Stiprus rizikos mažinimas ateityje : WebAuthn PRF passkeys, kurie pašalina slaptažodžio perdavimą ir naršyklės yra susieti su kilmės domenu. Tuo tarpu : naudotojų mokymas + sąsajos indikatoriai. | Ateityje |
| Grėsmė | Rizikos mažinimas | Būsena |
|---|---|---|
| Pavogtas duomenų bazės dump | OpenPGP E2E užšifruotas payload neperskaitomas be naudotojo privačiojo rakto. Slaptažodžiai Argon2id maišoje, neatkuriami | Įgyvendinta |
| Pavogta atsarginė kopija | Užšifruotos atsarginės kopijos (Argon2id + ChaCha20-Poly1305), keli gavėjai. Automatizuotas atkūrimo testas CI | Įgyvendinta |
| Serverio administratorius skaito paslapties turinį | Neįmanoma be naudotojo privačiojo rakto. Serveris saugo tik neperskaitomus blob | Įgyvendinta |
| Audito žurnalo klastojimas (tampering) | HMAC-SHA-256 grandinė, aptikimas O(1) tikrinimo metu. Grandinės detalės | Įgyvendinta |
| Grėsmė | Rizikos mažinimas | Būsena |
|---|---|---|
| Tarporganizacinis duomenų nutekėjimas | Kiekvienas API raktas susietas su unikalia organizacija. Sistemingas filtravimas kiekviename endpoint. Aiškūs izoliacijos testai CI kiekvieno commit metu | Įgyvendinta |
| API rakto vagystė | Argon2id maišoje saugomas raktas duomenų bazėje. Laisva rotacija naudotojo iniciatyva. Konfigūruojama minimali apimtis (skaitymas / rašymas) | Įgyvendinta |
| Programos paslaugų trikdymas (DoS) | Spartos ribotuvas pagal raktą ir IP (Symfony karkasas) | Įgyvendinta |
| Grėsmė | Rizikos mažinimas | Būsena |
|---|---|---|
| Kompiliavimo grandinės kompromitavimas | Priklausomybių SHA-256 atspaudo tikrinimas, susietas su kompiliavimu. Suplanuotas pasirašytas SBOM | Įgyvendinta |
| Iškylančiojo lango uždarymas = laikinas prieigos praradimas | Pirmosios versijos kompromisas : privatusis raktas nesaugomas, kad būtų sumažintas atakos paviršius. Ateityje : konfigūruojamas automatinis užrakinimas + saugojimas per valdomą service worker. | Ateityje |
| Prisijungimo duomenų gaudymas fišingo svetainėje | Naudotojas mato tikrąjį domeno pavadinimą plėtinio iškylančiajame lange prieš spustelėdamas „Įrašyti“ | Įgyvendinta |
| Grėsmė | Rizikos mažinimas | Būsena |
|---|---|---|
| Kompromituotas Docker atvaizdas | Automatizuotas pažeidžiamumų nuskaitymas CI. Suplanuotas Sigstore parašas naudotojo tikrinimui diegimo pusėje | Vykdoma |
| Nepatikrinta atsarginė kopija | Automatizuotas atkūrimo testas CI kiekvieno leidimo metu. Jokių nepatikrintų atsarginių kopijų gamyboje | Įgyvendinta |
| mTLS gamyboje | Įjungiama konfigūracija. Galimi audito (tik žurnalai), o vėliau vykdymo (enforcement) režimai | Įgyvendinta |
Redakcinis sąžiningumas : štai paviršiai, kurių ARDNTECH nedengia vienas, ir rekomenduojamas rizikos mažinimas.
| Apribojimas | Kodėl | Rekomenduojamas rizikos mažinimas |
|---|---|---|
| Visiškas naudotojo darbo stoties kompromitavimas | Kenkėjiška programa, turinti prieigą prie naršyklės RAM, gali nuskaityti iššifruotą privatųjį raktą | Aparatinis passkey (YubiKey, TPM), kuris izoliuoja raktą saugiame elemente |
| ARDNTECH serverio kompromitavimas (root) | Root teisių užpuolikas gali nuskaityti aktyvias HTTP sesijas | Saugomos paslaptys lieka neperskaitomos (zero-knowledge). Rizikuojama tik sesijomis, atvertomis kompromitavimo metu. Rekomenduojamas trumpas automatinis užrakinimas |
| Pagrindinio slaptažodžio praradimas | Tiesioginė griežto zero-knowledge pasekmė : serverio pusėje nėra galimybės atkurti raktą | Atkūrimo kodai, atspausdinti kūrimo metu. Ateityje : Shamir M-iš-N dalijimasis Enterprise planams |
| Kvantinis priešininkas (horizontas > 2030) | OpenPGP v6 + AES-256 laikomi saugiais 5 iki 10 metų pagal ANSSI RGS 2024 | Pokvantinė migracija (ML-KEM, ML-DSA) vertinama ilgalaikėje perspektyvoje |
| Fizinė ataka prieš naudotojo darbo stotį | ARDNTECH yra loginis, o ne fizinis seifas | Trumpas automatinis seifo užrakinimas + aparatinis WebAuthn passkey |
| ARDNTECH viduje esantis asmuo (būsimas darbuotojas) | Pripažintas SaaS leidėjo pasitikėjimo modelio apribojimas | NDA, atsakomybių atskyrimas, privaloma kodo peržiūra, klastojimą atskleidžianti audito grandinė, mažiausių privilegijų principas |
Pasirinkimas : pavadinimai saugomi atviru tekstu serverio pusėje.
Kodėl : momentinė paieška serverio pusėje, medžio rodymas be iššifravimo kiekvienos navigacijos metu, galimas hierarchinis aplankų bendrinimas.
Poveikis : užpuolikas, eksfiltravęs duomenų bazę, mato, kad aplanke „DevOps / Cloud“ egzistuoja paslaptis pavadinimu „AWS Prod“. Jis NEMATO turinio (E2E užšifruotas payload).
Apsvarstyta alternatyva : parinktis „anonymise me“, kuri šifruoja ir pavadinimus. Reikšminga UX kaina : nėra paieškos serverio pusėje, pilnas kliento nuskaitymas kiekvienos užklausos metu.
Pasirinkimas : OpenPGP šifruoja payload po to, kai naudotojas įveda slaptažodį.
Kodėl : nėra alternatyvos, naršyklė turi matyti atvirą tekstą, kad naudotojas galėtų jį įvesti.
Rizikos mažinimas : Trusted Types CSP neleidžia DOM XSS įterpti eksfiltruojančio JavaScript. Ateityje : WebAuthn passkeys, kurie visiškai pašalina slaptažodžių perdavimą.
Pasirinkimas : nėra atkūrimo, jei naudotojas praranda ir pagrindinį slaptažodį, IR atkūrimo kodus.
Kodėl : griežtas zero-knowledge. Jei galėtume atkurti, būtų iššifravimo kelias serverio pusėje.
Rizikos mažinimas ateityje : Shamir privačiojo rakto dalijimasis (M-iš-N dalys), viena dalis ARDNTECH su procedūrinėmis apsaugomis (atrakinimas tik esant N-1 kitoms dalims, patvirtintoms naudotojo). Skirta tik Enterprise planams.
| Lygis | Trigeris | Veiksmas |
|---|---|---|
| L1 Įtarimas | Anomalija audito žurnale, naudotojo pranešimas | Vidinis tyrimas per 24 val., audito grandinės tikrinimas |
| L2 Patvirtintas kompromitavimas | Tyrimo patvirtintas techninis kompromitavimas | Naudotojų informavimas per 72 val. (BDAR 33 str.), paveiktų raktų rotacija, rizikos mažinimo priemonių diegimas |
| L3 Didelis kompromitavimas | Kompromituota duomenų bazė arba pirminis kodas | CNIL ir ANSSI informavimas, viešas skaidrumo pranešimas, išorinis teismo ekspertizės auditas |
Atsakingas atskleidimas: Pagal RFC 9116, failas /.well-known/security.txt svetainės šaknyje nurodo mūsų kontaktinį adresą security@aegirex.eu. Patvirtinimo gavimo terminas : 72 val.
Šis grėsmių modelis yra gyvas dokumentas. Jei esate CISO, auditorius ar saugumo tyrėjas ir kokia nors grėsmė modeliuojama netiksliai, kreipkitės į mus tiesiogiai.