Solidarumas su Ukraina. Paslauga siūloma nemokamai Ukrainos įmonėms visą karo laikotarpį. Prašyti nemokamos prieigos
Saugumas : viešas dokumentas

Viešas <em>grėsmių modelis.</em>

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.

1. Modeliuojami veikėjai

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)

2. Saugomi duomenys

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)

3. Grėsmės ir jų mažinimas pagal paviršių

3.1 SaaS žiniatinklio programa

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

3.2 Užšifruotas saugojimas

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

3.3 REST API

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

3.4 Naršyklės plėtiniai

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

3.5 Savarankiškai talpinama infrastruktūra

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

4. Apsaugos perimetras, pripažinti apribojimai

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

5. Pripažinti kompromisai

5.1 Paslapčių ir aplankų pavadinimai atviru tekstu serverio pusėje

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.

5.2 Slaptažodis atviru tekstu DOM įvedimo 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ą.

5.3 Pagrindinis slaptažodis = vienintelis seifo raktas

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.

6. Incidentų reagavimo planas

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.

Patikslinti dokumentą ?

Š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.