O que zeroize-audit faz?
Detecta a ausência de zeragem de dados sensíveis no código-fonte e identifica zeragens removidas por otimizações do compilador, com análise em nível de assembly e verificação de fluxo de controle. Use para auditar código C/C++/Rust que lida com segredos, chaves, senhas ou outros dados sensíveis.
Funcionalidades
- Detecção de zeragem ausente: Varre o código-fonte em busca de buffers ou variáveis que armazenam dados sensíveis e não são zerados após o uso.
- Análise de otimizações do compilador: Identifica casos em que instruções de zeragem (como
memset_souzeroize) são removidas por otimizações como dead store elimination. - Verificação em assembly: Converte código relevante para assembly e confirma se a zeragem persiste no binário final.
- Análise de fluxo de controle: Rastreia caminhos de execução para garantir que a zeragem ocorra em todos os cenários, incluindo exceções e early returns.
Plataformas Suportadas
Este skill é compatível com:
- Claude Code
- Cursor
- Codex
Como Usar
- Adicione o skill ao seu ambiente de desenvolvimento.
- Execute a ferramenta no diretório do seu projeto contendo código C/C++ ou Rust.
- Revise os relatórios gerados, que destacam:
- Locais onde dados sensíveis não são zerados.
- Zeragens potencialmente removidas por otimizações.
- Confirmação visual no assembly gerado.
Exemplo
# Análise básica
zeroize-audit scan --path ./src
# Com verificação de assembly
zeroize-audit scan --path ./src --assembly
# Relatório detalhado
zeroize-audit scan --path ./src --output report.md
Requisitos
- Compilador C/C++ (gcc, clang) ou Rust (rustc) instalado.
- Acesso ao código-fonte que será auditado.
- Permissões para executar análises de assembly (se aplicável).
Saída Típica
[WARNING] Linha 42: variável 'secret_key' não é zerada após uso.
[WARNING] Linha 56: chamada para memset() pode ser removida pelo compilador - use memset_s() em vez disso.
[INFO] Zeragem confirmada em assembly para 'password_buffer'.
Contribuição
Relate problemas ou sugira melhorias no repositório oficial.
Licença
Este skill é distribuído sob licença Apache 2.0. Consulte o arquivo LICENSE para mais detalhes.