OVAL parser corrupts version bounds when the epoch is 10, 20 or the version contains "0:"
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 76/100
Rechercherichtung
Beginne mit get_version_range_from_state in vulnerabilities/oval_parser.py und verfolge, wie die Funktion aus OVAL-Statustext Versionsbereiche erstellt. Ergänze Regressionstests für die aufgeführten Epoch-Fälle, einschließlich 10:, 20: und eines eingebetteten 0:, und führe anschließend die relevanten Parser-Tests aus. Als abgeschlossen gilt die Aufgabe, wenn nur ein führendes standardmäßiges 0: entfernt wird und der übrige Versionsinhalt unverändert bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- Python
- Sterne
- 716
- Forks
- 347
- Ø Merge
- 12 Std. 15 Min.
- Gemergte PRs (30 T.)
- 9
Entwicklungsumgebung
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Kein Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus aboutcode-org/vulnerablecode
-
OSV parser drops all crates.io affected entries because the ecosystem mapping uses cargoEvtl. vergeben @Ashutosh-Panda2004 hat das vor 2 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
aboutcode-org/vulnerablecode#2485 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Docker Compose setup fails on wait-for-it host web:8000 and missing runtime .envEvtl. vergeben @Anurag-S1ngh hat das vor 5 Tagen übernommen. Offen
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 77/100
aboutcode-org/vulnerablecode#2477 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
aboutcode-org/vulnerablecode#2426 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Get NuGet package versions from federated PURL version data in https://github.com/aboutcode-data/Evtl. wieder frei @Anshi321 hat das vor 25 Tagen übernommen, und es ist kein Pull Request offen. Offenbug data-quality
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
aboutcode-org/vulnerablecode#2418 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
We do not collect the affected range for Gitlab advisoriesEvtl. vergeben @akashrajeev hat das vor 11 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
aboutcode-org/vulnerablecode#2412 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in aboutcode-org/vulnerablecode
Ähnliche Issues
-
priority middle
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 62/100
KATO-Hiro/AtCoderClans#12940 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 76/100
huggingface/huggingface_hub#5283 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 86/100
ccxt/ccxt#31045 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug example
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
Maintainer antworten meist innerhalb von 1 Tag