fix(aruba): map "(AOS-10 & AOS-8)" to aruba-os, mark the Instant AP record reviewed
The 17.10 Netdisco run ended "1 ERR": the spelling guard from 89800c5c
found three HPE names no Aruba key knew. Two causes:
"HPE Aruba Networking Wireless Operating System (AOS-10 & AOS-8)"
(CVE-2026-23601, -23808, -23809) is the controller line, the same
product as CVE-2026-23812's "(AOS-8 & AOS-10)" with the generations in
the other order. The pattern only knew that order, so no controller
got these three CVEs. The aruba-os product_re now takes both.
"HPE/Hpe Aruba Networking InstantOS and Aruba Access Points running
ArubaOS 10" (CVE-2024-42393..42396) is Instant AP firmware, bounded at
8.10/8.12, which are controller build numbers too; HPE says controllers
are not affected. Mapping it would put findings on the wrong box, so it
goes into _ARUBA_KNOWN_UNMATCHED (lowercase covers both spellings).
The test builds these two records in an index of their own: their
ranges overlap CVE-2026-44857's builds that the shared fixture asserts on.
This commit is contained in:
@@ -619,6 +619,7 @@ _PRODUCT_PATTERNS: List[dict] = [
|
||||
# Devices" (CVE-2022-23677) and "AOS-Switch (AOS-S)" (CVE-2026-76742 ff.,
|
||||
# HPESBNW05156); "HPE Aruba Networking Wireless Operating System (AOS)"
|
||||
# (CVE-2026-44857), "... Systems (AOS-8 & AOS-10)" (CVE-2026-23812),
|
||||
# "... System (AOS-10 & AOS-8)" (CVE-2026-23601, -23808, -23809),
|
||||
# "ArubaOS (AOS)" (CVE-2026-23821) and "HPE Aruba Networking AOS"
|
||||
# (CVE-2025-23051). HPE renames the product between batches, and an
|
||||
# unknown spelling is a silent false negative: the 2026-10 AOS-S batch is
|
||||
@@ -647,7 +648,7 @@ _PRODUCT_PATTERNS: List[dict] = [
|
||||
"product_re": r"^(arubaos(\s+\(aos\))?|aruba\s+os|aos-w|"
|
||||
r"(hpe\s+)?aruba\s+networking\s+aos|"
|
||||
r"(hpe\s+)?aruba\s+networking\s+wireless\s+operating\s+"
|
||||
r"systems?\s+\(aos(-8\s*&\s*aos-10)?\)|"
|
||||
r"systems?\s+\(aos(-8\s*&\s*aos-10|-10\s*&\s*aos-8)?\)|"
|
||||
# The 2022-2024 controller records name the hardware, and
|
||||
# state each branch as prose (see aruba_switch_entries).
|
||||
r"aruba\s+mobility\s+conductor\s+\(formerly\s+mobility\s+"
|
||||
@@ -2546,6 +2547,10 @@ _ARUBA_KNOWN_UNMATCHED = frozenset({
|
||||
"aos-8 instant and aos-10 ap",
|
||||
"aruba access points running instantos and arubaos 10",
|
||||
"hpe aruba networking access points, instant aos-8, and aos-10",
|
||||
# CVE-2024-42393..42396: Instant AP firmware, bounded 8.10/8.12 — the
|
||||
# controllers' numbers too, so mapping it to aruba-os would be a finding
|
||||
# on the wrong box. HPE writes it "HPE" and "Hpe"; lowercase covers both.
|
||||
"hpe aruba networking instantos and aruba access points running arubaos 10",
|
||||
# CVE-2023-38484..38486: NVD carries them under arubanetworks:arubaos.
|
||||
"9200 series mobility controllers and sd-wan gateways, 9000 series "
|
||||
"mobility controllers and sd-wan gateways",
|
||||
|
||||
@@ -237,6 +237,27 @@ KNOWN_AP = [
|
||||
"versions": [{"lessThanOrEqual": "10.7.1.0", "status": "affected",
|
||||
"version": "10.7.0.0", "versionType": "semver"}]},
|
||||
]
|
||||
# CVE-2026-23601, verbatim affected[]: the controller line again, with the
|
||||
# AOS generations named in the OTHER order than CVE-2026-23812 does.
|
||||
AOS_23601 = [
|
||||
{"product": "HPE Aruba Networking Wireless Operating System (AOS-10 & AOS-8)",
|
||||
"vendor": "Hewlett Packard Enterprise (HPE)",
|
||||
"versions": [
|
||||
{"status": "affected", "version": "10.7.0.0", "lessThanOrEqual": "10.7.2.2",
|
||||
"versionType": "semver"},
|
||||
{"status": "affected", "version": "8.13.0.0", "lessThanOrEqual": "8.13.1.1",
|
||||
"versionType": "semver"}]},
|
||||
]
|
||||
# CVE-2024-42394, verbatim: Instant AP firmware. Its 8.10/8.12 numbers are the
|
||||
# controllers' numbers too, so it must stay out of aruba-os — and quiet.
|
||||
INSTANT_42394 = [
|
||||
{"product": "HPE Aruba Networking InstantOS and Aruba Access Points running "
|
||||
"ArubaOS 10",
|
||||
"vendor": "Hewlett Packard Enterprise (HPE)",
|
||||
"versions": [{"lessThanOrEqual": "<=8.12.0.1", "status": "affected",
|
||||
"version": "Version 8.12.0.0: 8.12.0.1 and below",
|
||||
"versionType": "semver"}]},
|
||||
]
|
||||
|
||||
# Must NOT enter the index: HPE files the whole Aruba management stack under
|
||||
# the same vendor, and every one of those carries a version line that would
|
||||
@@ -290,12 +311,12 @@ class FakeAsset:
|
||||
self.os_version = os_version
|
||||
|
||||
|
||||
def _build_index():
|
||||
def _build_index(records=RECORDS):
|
||||
"""Run the REAL index build over a ZIP shaped like cvelistV5's."""
|
||||
fd, path = tempfile.mkstemp(suffix=".zip")
|
||||
os.close(fd)
|
||||
with zipfile.ZipFile(path, "w") as zf:
|
||||
for cve, affected in RECORDS.items():
|
||||
for cve, affected in records.items():
|
||||
zf.writestr(
|
||||
f"cvelistV5-main/cves/{cve.split('-')[1]}/x/{cve}.json",
|
||||
json.dumps({"cveMetadata": {"cveId": cve},
|
||||
@@ -474,6 +495,13 @@ def demo():
|
||||
assert note and "HPE Aruba Networking AOS-CX Switch Series" in note, note
|
||||
assert "CVE-2026-99991" in note
|
||||
assert "AOS-10 AP" not in note and "ClearPass" not in note, note
|
||||
# "(AOS-10 & AOS-8)" is the controller line; the Instant AP record is not,
|
||||
# and neither name is news. Own build: their branches are 44857's builds.
|
||||
idx = _build_index({"CVE-2026-23601": AOS_23601, "CVE-2024-42394": INSTANT_42394})
|
||||
assert c5.aruba_unmatched_note() is None
|
||||
assert [c for c, *_ in _scan(idx, "8.13.1.0", "ArubaOS")] == ["CVE-2026-23601"]
|
||||
assert _scan(idx, "8.13.1.2", "ArubaOS") == []
|
||||
assert "CVE-2024-42394" not in {e["cve"] for k in idx for e in idx[k]}
|
||||
|
||||
# --- ArubaOS-Switch: the prose bounds ---------------------------------
|
||||
# A switch that has NOT been updated: inside both 16.11 prose bounds.
|
||||
|
||||
Reference in New Issue
Block a user