Package: security.debian.org Severity: important X-Debbugs-Cc: s...@debian.org
There are two classes of issue with different statuses in the security-tracker database and JSON feed that are not distinguished in the OVAL feeds. Consider the following two entries from the bullseye oval feeds[1]: CVE-2020-28200: <definition class="vulnerability" id="oval:org.debian:def:202028200" version="1"> <metadata> <title>CVE-2020-28200</title> <affected family="unix"> <platform>Debian GNU/Linux 11</platform> <product>dovecot</product> </affected> <reference ref_id="CVE-2020-28200" ref_url="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-28200" source="CVE"/> <description>The Sieve engine in Dovecot before 2.3.15 allows Uncontrolled Resource Consumption, as demonstrated by a situation with a complex regular expression for the regex extension.</description> <debian> <date>2021-11-07</date> <moreinfo></moreinfo> </debian> </metadata> <criteria comment="Release section" operator="AND"> <criterion comment="Debian 11 is installed" test_ref="oval:org.debian.oval:tst:1"/> <criteria comment="Architecture section" operator="OR"> <criteria comment="Architecture independent section" operator="AND"> <criterion comment="all architecture" test_ref="oval:org.debian.oval:tst:2"/> <criterion comment="dovecot DPKG is earlier than 0" test_ref="oval:org.debian.oval:tst:20281"/> </criteria> </criteria> </criteria> </definition> and CVE-2012-0833: <definition class="vulnerability" id="oval:org.debian:def:20120833" version="1"> <metadata> <title>CVE-2012-0833</title> <affected family="unix"> <platform>Debian GNU/Linux 11</platform> <product>389-ds-base</product> </affected> <reference ref_id="CVE-2012-0833" ref_url="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-0833" source="CVE"/> <description>The acllas__handle_group_entry function in servers/plugins/acl/acllas.c in 389 Directory Server before 1.2.10 does not properly handled access control instructions (ACIs) that use certificate groups, which allows remote authenticated LDAP users with a certificate group to cause a denial of service (infinite loop and CPU consumption) by binding to the server.</description> <debian> <date>2021-11-07</date> <moreinfo></moreinfo> </debian> </metadata> <criteria comment="Release section" operator="AND"> <criterion comment="Debian 11 is installed" test_ref="oval:org.debian.oval:tst:1"/> <criteria comment="Architecture section" operator="OR"> <criteria comment="Architecture independent section" operator="AND"> <criterion comment="all architecture" test_ref="oval:org.debian.oval:tst:2"/> <criterion comment="389-ds-base DPKG is earlier than 0" test_ref="oval:org.debian.oval:tst:4696"/> </criteria> </criteria> </criteria> </definition> These two OVAL definitions list essentially identical criteria, yet their actual status in bullseye is quite different: CVE-2020-28200 is still present in bullseye and is a legitimate finding by any scanner based on these definitions: https://security-tracker.debian.org/tracker/CVE-2020-28200 CVE-2012-0833 is not present in any bullseye and should not trigger a finding from a scanner: https://security-tracker.debian.org/tracker/CVE-2012-0833 If we look at the security-tracker's JSON feed [2], we see some details that should be reflected in the OVAL feed but aren't, in particular the "status" field: "CVE-2012-0833": { ... "releases": { ... "bullseye": { "status": "resolved", "repositories": { "bullseye": "1.4.4.11-2" }, "fixed_version": "0", "urgency": "unimportant" }, ... } and "CVE-2020-28200": { "releases": { ... "bullseye": { "status": "open", "repositories": { "bullseye": "1:2.3.13+dfsg1-2" }, "urgency": "not yet assigned" }, ... }, I'm not super familiar with the semantic expectations of OVAL, but I think logically we want to represent CVE-2012-0833 somewhat differently in OVAL using logic similar to: if status == resolved: if fixed_version == 0: # All versions of this package in this release's repos are fixed: OVAL_criterion = "package is earlier than min(values.repositories)" else OVAL_criterion = "package is earlier than fixed_version" In this case the criterion for CVE-2012-0833 would be: <criterion comment="389-ds-base DPKG is earlier than 1.4.4.11-2" test_ref="oval:org.debian.oval:tst:4696"/> Which I believe is correct. If a system is running bullseye and has 1.4.4.11-2 or later installed, then a scanner should determine that this vulnerability is not present. There are quite a few CVEs in a similar state to CVE-2012-0833 in the OVAL feeds, leading to a high false-positive rate, hence the "important" severity. Please let me know if I'm missing something with this assessment. Otherwise I can try to put together a patch to implement the proposed logic as described above. noah 1. https://www.debian.org/security/oval/oval-definitions-bullseye.xml 2. https://security-tracker.debian.org/tracker/data/json