Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .idea/.name

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/yatool.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/NSTTkgmb)
# Лабораторная работа №4 — Анализ и тестирование безопасности веб-приложения

## Цель
Expand Down
17 changes: 17 additions & 0 deletions artifacts/01_asset_inventory.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Этап 1 — Asset Inventory

## Таблица активов

| Актив | Тип | Ценность | Примечание |
|---|---|---|---|
| Данные пользователей (`userId`, `userName`) | Данные | Высокая | Используются в профиле и отчётах; компрометация ведёт к подмене профилей, XSS и ошибочным аналитическим выводам. |
| Данные о сессиях (время входа/выхода) | Данные | Высокая | Формируют метрики активности (`/totalActivity`, `/monthlyActivity`, `/inactiveUsers`); искажение влияет на бизнес-решения и целостность отчётности. |
| Файловая система сервера | Инфраструктура | Критическая | Через `/exportReport` формируется путь к файлу; при злоупотреблении возможна запись в нежелательные места с правами процесса. |
| Внутренняя сеть / метаданные окружения | Инфраструктура | Критическая | Через `/notify` выполняется запрос по произвольному `callbackUrl`; это открывает путь к SSRF и доступу к внутренним сервисам. |

## Наиболее критичные активы и почему

| Актив | Почему наиболее критичен |
|---|---|
| Файловая система сервера | Потенциальная запись произвольных файлов может повлиять на доступность/целостность приложения и создать условия для дальнейшей компрометации хоста. |
| Внутренняя сеть / метаданные окружения | SSRF позволяет атакующему использовать сервер как прокси к внутренним ресурсам, которые недоступны извне, и извлекать чувствительную информацию. |
23 changes: 23 additions & 0 deletions artifacts/02_stride_threat_model.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Этап 2 — Threat Modeling (STRIDE)

## Применимость STRIDE к приложению

| Категория угрозы | Расшифровка | Применимо? | Короткое обоснование |
|---|---|---|---|
| **S**poofing | Подмена идентификации | Да | Нет аутентификации/авторизации; любой клиент может действовать от имени любого `userId`. |
| **T**ampering | Модификация данных | Да | Данные сессий и отчётов меняются через публичные эндпоинты без проверки прав. |
| **R**epudiation | Отказ от авторства | Да | Нет механизма неизменяемого аудита и привязки действий к субъекту. |
| **I**nformation Disclosure | Утечка данных | Да | Возможна SSRF через `callbackUrl` с возвратом ответа внешнему клиенту. |
| **D**enial of Service | Отказ в обслуживании | Да | Нет rate limit и лимитов входных данных; внешние вызовы могут блокировать ресурсы. |
| **E**levation of Privilege | Повышение привилегий | Да | Анонимный клиент получает влияние на внутренние ресурсы/ФС сервера через SSRF и запись файлов. |

## Применимые угрозы: источник, поверхность атаки, ущерб

| Категория | Источник угрозы | Поверхность атаки | Потенциальный ущерб |
|---|---|---|---|
| **S**poofing | Внешний неаутентифицированный клиент | `POST /recordSession?userId=...`, `GET /totalActivity?userId=...`, `GET /monthlyActivity?userId=...` | Подмена личности пользователя, недостоверная аналитика, доступ к действиям от чужого имени. |
| **T**ampering | Внешний атакующий | `POST /recordSession` (подмена времён), `GET /exportReport?filename=...` (манипуляция путём) | Порча данных активности, запись файлов в неожиданные директории, нарушение целостности системы. |
| **R**epudiation | Любой клиент API | Все write-операции: `/register`, `/recordSession`, `/notify`, `/exportReport` | Невозможность доказать, кто инициировал вредоносное действие; усложнение расследования инцидентов. |
| **I**nformation Disclosure | Внешний атакующий, использующий сервер как прокси | `POST /notify?callbackUrl=...` | Чтение внутренних HTTP-ресурсов (метаданные, служебные сервисы), утечка их ответа в теле API-ответа. |
| **D**enial of Service | Внешний атакующий (массовые/тяжёлые запросы) | Повторные вызовы `/notify` к медленным URL, большие/частые запросы к публичным эндпоинтам | Исчерпание потоков/сокетов, деградация производительности и недоступность API для легитимных пользователей. |
| **E**levation of Privilege | Внешний низкопривилегированный клиент | Комбинация `callbackUrl` в `/notify` и `filename` в `/exportReport` | Переход от внешнего доступа к воздействию на внутренние зоны доверия и ресурсы, доступные только серверу. |
Loading