OVAL parser corrupts version bounds when the epoch is 10, 20 or the version contains "0:"
Mantenedores costumam responder em até 1 dia
@Ashutosh-Panda2004 já está trabalhando nisso.
Desde 26/10/2026.
- #2483 de @Ashutosh-Panda2004 — aberto
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 76/100
Direção de pesquisa
Comece por get_version_range_from_state em vulnerabilities/oval_parser.py e acompanhe como ele monta intervalos de versões a partir do texto do estado OVAL. Adicione cobertura de regressão para os casos de epoch listados, incluindo 10:, 20: e um 0: incorporado, e depois execute os testes relevantes do parser. O trabalho estará concluído quando apenas um 0: padrão no início for removido e o restante do conteúdo da versão permanecer inalterado.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Description
I found a data corruption bug in the OVAL parser while investigating how version ranges are built from OVAL states.
In vulnerabilities/oval_parser.py, get_version_range_from_state strips the default epoch using a plain string replacement:
version_range = version_range.replace("0:", "")This removes every occurrence of 0: from the entire range string, rather than removing it only when it appears at the beginning of a version.
Steps to Reproduce
Feed version state texts through OvalParser using the Debian translations.
The following transformations occur:
| Input version | Result | Status |
|---|---|---|
0:4.14-1.1 |
<4.14-1.1 |
Correct |
1:4.14-1.1 |
<1:4.14-1.1 |
Correct |
10:4.14-1.1 |
<14.14-1.1 |
Incorrect |
20:4.14-1.1 |
<24.14-1.1 |
Incorrect |
0:10:2.0-1 |
<12.0-1 |
Incorrect |
Expected Behavior
The parser should remove an explicit leading 0: only when it represents the default version epoch. All other parts of the version string, including nonzero epochs and version components containing 0:, should remain unchanged.
Actual Behavior
The unrestricted string replacement corrupts version ranges by removing 0: wherever it occurs, potentially changing version ordering and causing affected packages to be incorrectly reported as not vulnerable.
For example, with univers:
10:3.0-1 < 10:4.14-1.1 # True10:3.0-1 < 14.14-1.1 # FalseThe corrupted upper bound therefore causes an affected build to be reported as not affected.
Additional Context
This issue affects the Debian, Ubuntu, and SUSE OVAL importers because they all parse through OvalParser.
A potential fix is to strip the epoch only at the beginning of the version range. Since epoch 0 is the default, removing an explicit leading 0: preserves the version's meaning while leaving the rest of the version string untouched.
- Linguagem predominante
- Python
- Estrelas
- 716
- Forks
- 347
- Merge médio
- 12h 15min
- PRs com merge (30d)
- 9
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Sem modelo de pull request
- Sem guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de aboutcode-org/vulnerablecode
-
OSV parser drops all crates.io affected entries because the ecosystem mapping uses cargoTalvez já em andamento @Ashutosh-Panda2004 assumiu há 2 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
aboutcode-org/vulnerablecode#2485 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Docker Compose setup fails on wait-for-it host web:8000 and missing runtime .envTalvez já em andamento @Anurag-S1ngh assumiu há 5 dias. Aberta
Dificuldade 2/5 Meio dia Facilidade para iniciantes 77/100
aboutcode-org/vulnerablecode#2477 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
aboutcode-org/vulnerablecode#2426 ·
Mantenedores costumam responder em até 1 dia
-
Get NuGet package versions from federated PURL version data in https://github.com/aboutcode-data/Talvez livre de novo @Anshi321 assumiu há 24 dias e não há nenhum pull request aberto. Abertabug data-quality
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
aboutcode-org/vulnerablecode#2418 · 4 comentários ·
Mantenedores costumam responder em até 1 dia
-
We do not collect the affected range for Gitlab advisoriesTalvez já em andamento @akashrajeev assumiu há 11 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
aboutcode-org/vulnerablecode#2412 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de aboutcode-org/vulnerablecode
Issues semelhantes
-
changelog investigate
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 67/100
ramnes/notion-sdk-py#433 ·
-
docs pkg:core
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 84/100
pydantic/pydantic-ai#11929 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
intake/intake-esm#789 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
MemMachine/MemMachine#1877 ·
Mantenedores costumam responder em até 3 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
openedx/openedx-authz#579 ·
Mantenedores costumam responder em até 1 dia