feat(cve): gate de imagem avalia bibliotecas contra a lista única [INFRA-69093] #86

Merged
tarcisio merged 1 commit from feat/INFRA-69093-gate-lang-pkgs into develop 2026-10-09 17:13:59 -03:00
Owner

O que

INFRA-69093, decisão do ORG: as exceções de bibliotecas de imagem vivem na lista única (ORG seguranca/referencia/excecoes-cve-os.yaml), e não em trivyignore local. Até aqui, o cve_os_gate.py só avaliava os-pkgs: ignorava lang-pkgs e casava a exceção só pelo nome, sem olhar o ecossistema.

  • scripts/ci/cve_os_gate.py --com-libs:
    • os lang-pkgs do Trivy casam com a lista por (ecossistema, pacote, produtos), com o nome pypi normalizado pela PEP 503;
    • tipos python-pkg/pip/pipenv/poetry/uv contam como pypi, e node-pkg/npm/yarn/pnpm como npm;
    • lib corrigível de outro ecossistema (rust-binary, gobinary, jar…) reprova, porque não há exceção possível na lista;
    • exceção os só cobre SO e exceção pypi só cobre lib Python. Antes, uma exceção pypi de lxml cobriria um pacote de SO de mesmo nome;
    • um ecossistema fora de os/npm/pypi reprova a lista inteira (saída 2), igual ao auditar_deps.py.
  • Sem a flag, o comportamento não muda, com uma única diferença: exceção pypi/npm deixa de aparecer como "MORTA" no scan só de SO.
  • reusable-image-cve-os.yml: novo input libs (padrão false), que liga junto --pkg-types os,library no Trivy e --com-libs no gate.

Prova

  • tests/cve-os: 32 testes, entre eles 11 novos de bibliotecas: cobertura pypi, nome normalizado, ecossistema cruzado não cobre, outro produto, rust reprova, ecossistema inválido, sem flag e exceção morta. Os testes novos rodados contra o gate antigo: 10 erros e 1 falha.
  • Suíte inteira no tmf-ci-python:3.12: 937 passed, 12 skipped.
  • Scans reais da tmf-superset com a lista do ORG #403:
    • candidata: rc=0, com as 5 CVEs de cryptography/msgpack/pyarrow cobertas até 31/12;
    • produção (02/08): rc=1, 489 reprovações;
    • candidata com --hoje 2027-01-01: reprova, porque a exceção venceu.

Depois do merge

O build da tmf-superset (tmf_imagens) passa a chamar este gate com --com-libs e a lista única, e o trivyignore.yaml local sai. Isso vai em PR à parte no tmf_imagens.

🤖 Generated with Claude Code

https://claude.ai/code/session_014axu8pSLigGKWaQj1sASKC

## O que INFRA-69093, decisão do ORG: as exceções de **bibliotecas** de imagem vivem na **lista única** (`ORG seguranca/referencia/excecoes-cve-os.yaml`), e não em `trivyignore` local. Até aqui, o `cve_os_gate.py` só avaliava `os-pkgs`: ignorava `lang-pkgs` e casava a exceção só pelo nome, sem olhar o ecossistema. - **`scripts/ci/cve_os_gate.py --com-libs`**: - os `lang-pkgs` do Trivy casam com a lista por **(ecossistema, pacote, produtos)**, com o nome pypi normalizado pela PEP 503; - tipos `python-pkg`/`pip`/`pipenv`/`poetry`/`uv` contam como `pypi`, e `node-pkg`/`npm`/`yarn`/`pnpm` como `npm`; - lib corrigível de outro ecossistema (`rust-binary`, `gobinary`, `jar`…) reprova, porque não há exceção possível na lista; - exceção `os` só cobre SO e exceção `pypi` só cobre lib Python. Antes, uma exceção pypi de `lxml` cobriria um pacote de SO de mesmo nome; - um `ecossistema` fora de os/npm/pypi reprova a lista inteira (saída 2), igual ao `auditar_deps.py`. - **Sem a flag, o comportamento não muda**, com uma única diferença: exceção pypi/npm deixa de aparecer como "MORTA" no scan só de SO. - **`reusable-image-cve-os.yml`**: novo input `libs` (padrão `false`), que liga junto `--pkg-types os,library` no Trivy e `--com-libs` no gate. ## Prova - `tests/cve-os`: 32 testes, entre eles 11 novos de bibliotecas: cobertura pypi, nome normalizado, ecossistema cruzado não cobre, outro produto, rust reprova, ecossistema inválido, sem flag e exceção morta. **Os testes novos rodados contra o gate antigo: 10 erros e 1 falha.** - Suíte inteira no `tmf-ci-python:3.12`: 937 passed, 12 skipped. - Scans reais da `tmf-superset` com a lista do ORG #403: - **candidata: rc=0**, com as 5 CVEs de cryptography/msgpack/pyarrow cobertas até 31/12; - **produção (02/08): rc=1**, 489 reprovações; - candidata com `--hoje 2027-01-01`: **reprova**, porque a exceção venceu. ## Depois do merge O build da `tmf-superset` (tmf_imagens) passa a chamar este gate com `--com-libs` e a lista única, e o `trivyignore.yaml` local sai. Isso vai em PR à parte no tmf_imagens. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_014axu8pSLigGKWaQj1sASKC
feat(cve): gate de imagem avalia bibliotecas contra a lista única, por ecossistema [INFRA-69093]
All checks were successful
PR checks (ci-shared) / testes (pull_request) Successful in 3m58s
99c14bf95b
cve_os_gate.py ganha --com-libs: lang-pkgs do Trivy (python-pkg/pip/poetry/uv → pypi; node-pkg/npm/
yarn/pnpm → npm) casam com a lista única por (ecossistema, pacote normalizado, produtos). Exceção os só
cobre SO e pypi só cobre lib Python (antes o casamento ignorava o ecossistema); lib de outro ecossistema
corrigível reprova. Sem a flag, comportamento igual, e exceção pypi/npm não aparece como morta.
reusable-image-cve-os.yml: input libs (padrão false) liga --pkg-types os,library e --com-libs juntos.
Prova com os scans reais da tmf-superset: candidata rc=0 (5 cobertas pela lista do ORG #403), imagem de
produção rc=1; vencida a validade, a candidata reprova.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014axu8pSLigGKWaQj1sASKC
tarcisio merged commit 54efa96f43 into develop 2026-10-09 17:13:59 -03:00
tarcisio deleted branch feat/INFRA-69093-gate-lang-pkgs 2026-10-09 17:14:01 -03:00
Sign in to join this conversation.
No reviewers
No labels
seguranca
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
TMF/ci-shared!86
No description provided.