AIKraft/Skills/Аудит zeroize

Аудит zeroize

Detects missing zeroization of sensitive data in source code and identifies zeroization removed by compiler optimizations, with assembly-level analysis, and control-flow verification. Use for auditing C/C++/Rust code handling secrets, keys, passwords, or other sensitive data.

trailofbits official Данные

Что делает навык

Skill обнаруживает отсутствие обнуления (zeroize) чувствительных данных в коде C/C++/Rust и выявляет случаи, когда обнуление удаляется оптимизациями компилятора. Анализ включает проверку на уровне ассемблера, LLVM IR, потока управления и генерацию PoC для подтверждения уязвимостей.

Когда применять

  • Аудит криптографических реализаций (ключи, сиды, nonces, секреты) на предмет безопасного очищения памяти.
  • Проверка систем аутентификации (пароли, токены, сессии) и кода, работающего с PII.
  • Выявление случаев, когда вызовы wipe (например, memset) исчезают при компиляции с уровнями оптимизации O1/O2.
  • Анализ безопасности распределения памяти (insecure heap alloc) и контроля потока управления (error paths).

Как работает

  1. Собрать входные данные: указать путь к репозиторию и обязательный контекст сборки (compile_commands.json для C/C++ или Cargo.toml для Rust).
  2. Запустить оркестратор, который выполняет фазы 0–7 последовательно, используя инструменты из {baseDir}/tools/ (emit_ir.sh, emit_asm.sh и др.).
  3. Агенты анализируют исходный код, генерируют LLVM IR/MIR/ASM, сравнивают оптимизации и проверяют CFG на наличие путей без очистки.
  4. Сгенерировать и валидировать Proof-of-Concept (PoC) программы для подтвержденных уязвимостей.
  5. Сформировать итоговый отчет (final-report.md) с результатами аудита и рекомендациями.

Примеры запросов агенту

Проведи аудит этого креста на наличие секретов, оставшихся в памяти.
Проверь, действительно ли эта C-библиотека обнуляет свои ключи при компиляции с оптимизациями.
Аудит кода обработки паролей на предмет отсутствия обнуления в ветках ошибок.

Что понадобится

  • Для C/C++: clang, compile_commands.json, инструменты {baseDir}/tools/ (emit_ir.sh, emit_asm.sh).
  • Для Rust: cargo +nightly, Cargo.toml, инструменты {baseDir}/tools/ (emit_rust_mir.sh, emit_rust_ir.sh).
  • uvx (для Serena MCP) и uv (для запуска скриптов Python).

Описание составлено по SKILL.md навыка, сверено 05.10.2026.

Как подключить

1Скачать навык
# возьмите папку навыка «zeroize-audit» из репозитория: # https://github.com/trailofbits/skills
2Положить папку с SKILL.md к навыкам ассистента
# положите папку навыка туда, где ассистент ищет skills: cp -r zeroize-audit/ ~/.claude/skills/zeroize-audit/

Навык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.