Сценарий 14 ищет вызывающие функции, точки входа, уязвимые использования и доступные потоки данных для конкретного вопроса об инциденте. Он помогает расследованию, но не выполняет оперативное реагирование и не закрывает инцидент.
Начните с ограниченного вопроса
Укажите CVE, уязвимую функцию, открытый endpoint или наблюдаемый путь эксплуатации. Привяжите вопрос к карточке инцидента, ревизии исходников, затронутой среде и времени наблюдения. Не передавайте секреты, учётные данные, клиентские payload или неограниченные журналы.
Для проактивной гипотезы, не связанной с активным инцидентом, используйте отдельный процесс проверки гипотез безопасности. Это не точка входа сценария 14.
Запуск отдельной CLI-команды
Воспроизводимый локальный запуск требует явного пути к CPG:
python -m src.cli security incident "<query>" --db PATH --format json
Параметр --max-depth ограничивает глубину графа вызовов. Сохраняйте вместе команду, ревизию CPG, запрос и вывод. Без --db команда завершается закрыто с сообщением security incident requires explicit --db for CPG access.
Запуск типизированного сценария AppSec
Используйте ролевой маршрут при наличии управляемой задачи AppSec и runtime-контекста:
from src.digital_employees.runtime.scenarios import (
RoleBoundScenarioInvocationRequest,
invoke_role_bound_scenario_request,
)
request = RoleBoundScenarioInvocationRequest(
query="Проследи вызывающие функции и точки входа до уязвимого парсера.",
employee_id="codegraph_appsec",
scenario_id="scenario_14",
event_type="appsec_start",
context={
"project_key": "codegraph",
"namespace": "default",
"task_id": "<task-id>",
"source_refs": ["<incident-ref>", "<revision-ref>"],
"file_paths": ["<bounded-source-path>"],
},
)
result = invoke_role_bound_scenario_request(request)
CLI и ролевой маршрут — разные носители свидетельств. Для каждой находки фиксируйте, какой маршрут её создал.
Как читать результат
Результат помогает расставить приоритеты ручной проверки прямых и транзитивных вызовов, точек входа, уязвимых использований, путей атаки и наблюдений taint flow. Критические пути проверьте в привязанных исходниках и затронутой среде.
Рекомендации LLM или fallback — гипотезы. Пустой путь может означать неполный CPG, несовпадающий символ, малую глубину обхода или зависимость только времени выполнения, а не безопасность.
Операционные границы и полномочия
Разделяйте следующие элементы контроля:
| Контроль | Что доказывает сценарий 14 |
|---|---|
containment |
ничего; изоляция выполняется по утверждённой процедуре инцидента |
remediation |
только рекомендации; исправление реализуется и тестируется отдельно |
postmortem |
ничего; нужен ответственный разбор инцидента |
governed closure |
ничего; закрытие требует всех обязательных свидетельств и полномочий |
Анализ также не меняет секреты, не блокирует трафик, не развёртывает hotfix, не уведомляет участников и не разрешает раскрытие информации.
Ошибки и восстановление
- Явная база отклонена или недоступна: остановитесь и восстановите CPG нужной ревизии.
- Функция не найдена: проверьте точный символ, покрытие языка, точку входа и глубину обхода.
- Результат частичный или резервный: пометьте его как предварительный и получите исходные или runtime-свидетельства.
- Идёт активная эксплуатация или среда небезопасна: следуйте процессу командования инцидентом заказчика, не ожидая завершения анализа CodeGraph.
Контракт с исходным кодом
Статья привязана к следующим источникам:
src/cli/security_suite/security_commands.py— отдельная CLI-команда и обязательный путь к базе;src/workflow/scenarios/security/incident.py— evidence сценария и fallback;src/workflow/scenarios/security/incident_query_helpers.py— ограниченные запросы CPG;src/digital_employees/runtime/scenarios/role_bound_scenario_invoker.py— типизированная маршрутизация;src/digital_employees/runtime/scenarios/employee_scenario_invocation.py— владелец AppSec и политика события.