Status atualizado em 2026-07-08 (branch
feat-valgrind). Histórico completo dos achados originais: commiteb006d27; rastreio item a item emdocs/migration-schedule.md(seção 2.0).
All medium and higher severity exploitable vulnerabilities discovered with static code analysis MUST be fixed in a timely way after they are confirmed. [
static_analysis_fixed]
Confirmados em 2026-06-14, corrigidos em ~3 semanas (referência usual do badge: ≤60 dias):
- CWE-119
strcpy×3 —map2check.cpp→setenv()(f0d6a28a) - Off-by-one OOB —
BTree.c(create loop588ba5f8; dump loope5442766) - VLA dangling return —
NonDetGeneratorKlee.ceNonDetGeneratorLibFuzzy.c(cópia extra achada na verificação) (f0d6a28a) - Shift UB —
NonDetGeneratorLibFuzzy.c(f0d6a28a) - Uninit vars —
AllocationLog.c,NonDetLog.c,ContainerBTree.c(ca2692c5,f0d6a28a) - Null-deref CWE-476 —
AnalysisModeMemtrack.c/AnalysisModeMemcleanup.c(checagens de NULL com corpo vazio) (e5442766)
Verificação (imagem Docker do CI, clang-16): cppcheck backend C com zero
achados error/warning (scan agora bloqueante no CI); cppcheck C++ enforced
exit 0; clang-tidy clang-analyzer-security/core sem achados.
All medium and higher severity exploitable vulnerabilities discovered with dynamic code analysis MUST be fixed in a timely way after they are confirmed. [
dynamic_analysis_fixed]
- UBSan: OOB write
BTree.c:276(CWE-787), disparado emBTreeTest/ContainerBTreeTest(588ba5f8) - ASan: leaks em
AllocationLogTesteAllocationLog.c:89(dd7f3268,e9287b95) - Valgrind memcheck (novo job): 8 defeitos em
BTreeTest, double-free/leak emAllocationLog, uninit emContainerBTree— todos corrigidos; falso positivo (pool eh da libstdc++) suprimido com justificativa emvalgrind.supp(ba4e3728) - CI não tolera mais achados:
sanitizer-testsestrito (detect_leaks=1,halt_on_error=1,0a0e6c08) evalgrind-memcheckbloqueante (--error-exitcode=1)
Verificação: suíte de 6 testes 100% verde sob ASan/UBSan estritos e
ctest -T memcheck com 0 defects (imagem Docker do CI).
It is SUGGESTED that ... at least one dynamic tool (e.g., a fuzzer or web application scanner) be routinely used in combination with a mechanism to detect memory safety problems such as buffer overwrites. [
dynamic_analysis_unsafe]
O que existe (atualizado): mecanismos de memory-safety duplicados — ASan/UBSan estritos + Valgrind memcheck bloqueante. O que falta (inalterado):
- Nenhum fuzzing do próprio Map2Check:
SKIP_LIB_FUZZER=ONnos jobs de teste; o LibFuzzer embarcado é feature do produto (gera entradas para os programas C analisados), não self-fuzzing - Sem harness
LLVMFuzzerTestOneInput, corpus ou integração OSS-Fuzz - Iniciativa real na roadmap: AFL++ (Phase 3, itens 3.1.1–3.1.4) — não iniciada
It is SUGGESTED that the project use a configuration for at least some dynamic analysis (such as testing or fuzzing) which enables many assertions. [
dynamic_analysis_enable_assertions]
- Configuração OK: nenhum job usa
-DNDEBUG(o job Valgrind buildaDebugexplicitamente) - Mas re-verificado em 2026-07-08: 0 ocorrências de
assert()/BOOST_ASSERT()emmodules/— não há asserts para habilitar. Adotarassert()em invariantes internos (ex.: invariantes estruturais do BTree, checagem de tipo dos containers); o.clang-tidyjá reconhece esses macros