LLM security: агенту нужен policy layer, а не доверие
Схема лабораторной проверки: от проблемы к доказательству, решению и ретесту.
Коротко: AI в security-инструменте должен быть аналитиком, а не root-shell. Он может строить гипотезы, объяснять риск и искать gaps, но команды исполняет только deterministic layer с policy checks.

Проблема

Security automation постоянно читает недоверенный HTML, README, OpenAPI, headers и error pages. Любой такой текст может попытаться изменить поведение агента.

Если модель получает право запускать команды напрямую, prompt injection становится не текстовой атакой, а изменением состояния инфраструктуры.

Решение

Нужны redacted fact-pack, allowlisted техники, scope enforcement, approval gates, kill switch и запись decision records без скрытого chain-of-thought.

Модель предлагает план, policy engine принимает или отклоняет действие, runner выполняет только безопасный каталог команд.

Что проверить руками

  • Разделить untrusted target content и trusted operator instruction.
  • Запретить model-to-shell без policy decision.
  • Редактировать cookies, tokens, PII и raw HTTP перед LLM.
  • Проверять prompt injection как отдельный test case в CI.

Безопасный пример кода

Простой policy gate для AI-плана. Пример рассчитан на owned/lab-среду и не выполняет вредоносных действий.

ALLOWED_TECHNIQUES = {
    "recon.http_headers",
    "recon.tls_inventory",
    "api.inventory_from_har",
    "session.authenticated_replay_readonly",
}

def policy_decision(step: dict) -> tuple[bool, str]:
    technique = step.get("technique")
    method = step.get("http_method", "GET").upper()
    if technique not in ALLOWED_TECHNIQUES:
        return False, "technique is not allowlisted"
    if method not in {"GET", "HEAD", "OPTIONS"}:
        return False, "state-changing replay requires approval gate"
    if step.get("target_out_of_scope"):
        return False, "target is outside verified scope"
    return True, "allowed"

print(policy_decision({"technique": "api.inventory_from_har", "http_method": "GET"}))

Как это должно попасть в отчёт

  • Decision record: hypothesis, facts, proposed action, policy decision, result.
  • Coverage: prompt injection tested, excessive agency blocked, secrets redacted.
  • Retest: malicious target content cannot change approved action set.
Этическая рамка: материал предназначен для defensive security, аудита собственных систем, обучения и подготовки remediation. Он не содержит инструкций для несанкционированного доступа, закрепления, обхода защит или эксфильтрации.