Підтримка України. Сервіс надається українським компаніям безкоштовно на час війни. Отримати безкоштовний доступ
Безпека - публічний документ

Публічна <em>модель загроз.</em>

Те, що ми захищаємо, проти кого, як, і те, чого ми <em>не</em> захищаємо. Краще названий периметр, ніж приховані обіцянки.

Версія v1.0 · переглянуто {{ "now"|date("d/m/Y") }} · переглядається з кожним мажорним релізом.

Методологія: STRIDE (Spoofing / Tampering / Repudiation / Information disclosure / Denial of service / Elevation of privilege), застосована до п'яти поверхонь продукту. Кожен рядок: загроза - пом'якшення ARDNTECH - свідомий компроміс.

Документ призначений для RSSI, аудиторів та дослідників безпеки. Вихідний код AGPL публічний на github.com/aegirex/server. Детальні операційні раннбуки залишаються доступними лише design partners під NDA.

1. Змодельовані актори

Дев'ять профілів зловмисника, врахованих у моделі.

Актор Опис Можливості
Зовнішній зловмисник Інтернет, жодного початкового доступу Брутфорс, фішинг, вебексплойти, MITM мережі
Зафішений користувач Користувач - ціль сайту-клона Подає свої облікові дані на домен зловмисника
Зловмисний співорендар Користувач іншої організації ARDNTECH Намагається прочитати секрети сусідніх організацій
Скомпрометований браузер Браузер, заражений шкідливим ПЗ чи зловмисним розширенням Доступ до DOM, може читати поля введення
Адміністратор сервера Оператор інфраструктури з SSH-доступом до сервера Читає базу даних, читає пам'ять, змінює код
Ексфільтрація бази даних Викрадений бекап, витік SQL-дампу Повний знімок бази даних
Судовий орган Правова вимога, адміністративний ордер Змушує хостера надати збережені дані
Інсайдер ARDNTECH Майбутній співробітник чи підрядник ARDNTECH Огляд коду, доступ до розгортання, читання логів
Квантовий супротивник Працездатний квантовий комп'ютер (горизонт > 2030) Зламує RSA / ECC за поліноміальний час (Shor)

2. Захищені дані

Класифікація даних та рівень захисту у стані спокою.

Дані Чутливість Зберігання
Майстер-пароль користувача Критична Лише хеш Argon2id (RFC 9106)
Вміст секретів (payload) Критична Зашифровано наскрізно (OpenPGP), сервер зберігає непрозорий блоб
Приватний ключ OpenPGP користувача Критична Ніколи на сервері. Зберігається локально, захищений парольною фразою користувача
Секрети TOTP у стані спокою Критична Зашифровано XChaCha20-Poly1305 (ключ поза базою даних)
Секрети вебхуків у стані спокою Критична Зашифровано XChaCha20-Poly1305 (ключ поза базою даних)
Назви секретів і тек Помірна Відкрито на боці сервера. Компроміс задокументовано 5.1
Журнал аудиту Висока Ланцюг HMAC-SHA-256, tamper-evidence за O(1)

3. Загрози та пом'якшення за поверхнею

3.1 Вебзастосунок SaaS

Загроза Пом'якшення Статус
Брутфорс пароля Rate limiter 5 спроб / 15 хв на IP + Argon2id (256 MiB, 5 проходів) - 1 с на локальну спробу Доставлено
Credential stuffing Той самий rate limiter + сканування HIBP opt-in після входу (явна згода RGPD) Доставлено
Обхід 2FA TOTP RFC 6238 з issuer pinning + одноразові коди відновлення + WebAuthn PRF Доставлено
Збережений чи відбитий XSS Сувора CSP (script-src 'self' 'wasm-unsafe-eval'), активовані Trusted Types, автоматичне екранування Twig Доставлено
Компрометація залежності OpenPGP.js Вендорена бібліотека з відбитком SHA-256, перевіреним під час збірки (маніфест цілісності SRI) Доставлено
Фішинг майстер-пароля Сильне пом'якшення незабаром: паскі WebAuthn PRF, які усувають передачу пароля і прив'язані браузером до домену походження. Тим часом: навчання користувачів + UI-індикатори. Незабаром

3.2 Зашифроване зберігання

Загроза Пом'якшення Статус
Викрадений дамп бази даних Payload, зашифрований OpenPGP E2E, нечитабельний без приватного ключа користувача. Паролі у хеші Argon2id, невідновлювані Доставлено
Викрадений бекап Зашифровані бекапи (Argon2id + ChaCha20-Poly1305), для кількох одержувачів. Автоматизований тест відновлення в CI Доставлено
Адміністратор сервера читає вміст секрету Неможливо без приватного ключа користувача. Сервер зберігає лише непрозорі блоби Доставлено
Зміна журналу аудиту (tampering) Ланцюг HMAC-SHA-256, виявлення за O(1) під час перевірки. Деталі ланцюга Доставлено

3.3 REST API

Загроза Пом'якшення Статус
Витік крос-організаційних даних Кожен API-токен прив'язаний до унікальної організації. Систематична фільтрація на кожному ендпойнті. Явні тести ізоляції в CI на кожному коміті Доставлено
Викрадення API-токена Токен хешований Argon2id у базі. Вільна ротація користувачем. Налаштовуваний мінімальний scope (читання / запис) Доставлено
Застосункова відмова в обслуговуванні Rate limiter за токеном і за IP (фреймворк Symfony) Доставлено

3.4 Розширення браузера

Загроза Пом'якшення Статус
Компрометація пайплайна збірки Перевірка відбитка SHA-256 залежностей, зчеплена зі збіркою. Заплановано підписаний SBOM Доставлено
Закриття попапа = тимчасова втрата доступу Компроміс першої версії: приватний ключ не персистується, щоб обмежити поверхню атаки. Незабаром: налаштовуваний автоблок + персистентність через контрольований service worker. Незабаром
Перехоплення облікових даних на фішинговому сайті Користувач бачить реальне доменне ім'я у попапі розширення перед кліком «Зберегти» Доставлено

3.5 Самостійно хостована інфраструктура

Загроза Пом'якшення Статус
Скомпрометований образ Docker Автоматизоване сканування вразливостей у CI. Заплановано підпис Sigstore для перевірки користувачем на боці розгортання В процесі
Неперевірений бекап Автоматизований тест відновлення в CI на кожному релізі. Жодного неперевіреного бекапу у продакшні Доставлено
mTLS у продакшні Активовується конфігурацією. Доступні режими аудиту (лише логи), а потім enforcement Доставлено

4. Периметр захисту - свідомі межі

Редакторська чесність: ось поверхні, які ARDNTECH не покриває самотужки, і рекомендоване пом'якшення.

Межа Чому Рекомендоване пом'якшення
Повна компрометація пристрою користувача Шкідливе ПЗ з доступом до RAM браузера може прочитати розшифрований приватний ключ Апаратний паскі (YubiKey, TPM), що замикає ключ у захищеному елементі
Компрометація сервера ARDNTECH (root) Зловмисник з root може читати активні HTTP-сесії Збережені секрети залишаються нечитабельними (zero-knowledge). Під ризиком лише сесії, відкриті на момент компрометації. Рекомендовано короткий автоблок
Втрата майстер-пароля Прямий наслідок суворого zero-knowledge: жодного способу на боці сервера відновити ключ Коди відновлення, надруковані при створенні. Незабаром: поділ Шаміра M-з-N для планів Enterprise
Квантовий супротивник (горизонт > 2030) OpenPGP v6 + AES-256 оцінені як безпечні на 5-10 років згідно з RGS ANSSI 2024 Постквантова міграція (ML-KEM, ML-DSA) на довгостроковій оцінці
Фізична атака на пристрій користувача ARDNTECH - це логічне сховище, а не фізичний сейф Короткий автоблок сховища + апаратний паскі WebAuthn
Інсайдер ARDNTECH (майбутній співробітник) Свідома межа моделі довіри SaaS-видавця NDA, розподіл обов'язків, обов'язковий огляд коду, tamper-evident ланцюг аудиту, принцип найменших привілеїв

5. Свідомі компроміси

5.1 Назви секретів і тек відкрито на боці сервера

Вибір: назви зберігаються відкрито на боці сервера.

Чому: миттєвий серверний пошук, відображення дерева без розшифрування на кожній навігації, можливе ієрархічне поширення тек.

Вплив: зловмисник, що ексфільтрує базу даних, бачить, що секрет з назвою «AWS Prod» існує в теці «DevOps / Cloud». Він НЕ бачить вмісту (payload, зашифрований E2E).

Розглянута альтернатива: опція «anonymise me», що шифрує також назви. Значна UX-вартість: жодного серверного пошуку, повне клієнтське сканування на кожному запиті.

5.2 Відкритий пароль у DOM під час введення

Вибір: OpenPGP шифрує payload після того, як користувач увів свій пароль.

Чому: немає альтернативи - браузер має бачити відкритий текст, щоб дозволити користувачеві його ввести.

Пом'якшення: Trusted Types CSP не дає DOM XSS впровадити JavaScript, що ексфільтрує. Незабаром: паскі WebAuthn, які повністю усувають передачу паролів.

5.3 Майстер-пароль = єдиний ключ сховища

Вибір: без відновлення, якщо користувач втрачає водночас і майстер-пароль, І свої коди відновлення.

Чому: суворий zero-knowledge. Якби ми могли відновити, існував би шлях розшифрування на боці сервера.

Пом'якшення незабаром: поділ Шаміра приватного ключа (M-з-N частин), одна частина в ARDNTECH із процедурними запобіжниками (розблокування лише за наявності N-1 інших частин, валідованих користувачем). Зарезервовано для планів Enterprise.

6. План реакції на інцидент

Рівень Тригер Дія
L1 Підозра Аномалія в журналі аудиту, повідомлення користувача Внутрішнє розслідування протягом 24 год, перевірка ланцюга аудиту
L2 Підтверджена компрометація Технічна компрометація, підтверджена розслідуванням Сповіщення користувачів протягом 72 год (RGPD Ст. 33), ротація уражених ключів, впровадження пом'якшень
L3 Серйозна компрометація Скомпрометована база даних чи вихідний код Сповіщення CNIL та ANSSI, публічний transparency report, зовнішній форензичний аудит

Відповідальне розкриття: Відповідно до RFC 9116, файл /.well-known/security.txt у корені сайту вказує нашу контактну адресу security@aegirex.eu. Строк підтвердження отримання: 72 год.

Уточнити документ?

Ця модель загроз - живий документ. Якщо ви RSSI, аудитор чи дослідник безпеки і якась загроза змодельована неправильно, зв'яжіться з нами безпосередньо.