From: Thomas Perale via buildroot <buildroot@buildroot.org>
To: buildroot@buildroot.org
Cc: Thomas Perale <thomas.perale@mind.be>,
Ricardo Martincoski <ricardo.martincoski@datacom.com.br>
Subject: [Buildroot] [RFC PATCH 04/14] utils/generate-cyclonedx: support vulnerability details
Date: Wed, 24 Jun 2026 16:06:35 +0200 [thread overview]
Message-ID: <20260624140645.185318-5-thomas.perale@mind.be> (raw)
In-Reply-To: <20260624140645.185318-1-thomas.perale@mind.be>
Translate the OpenVex notation used to describe the vulnerabilities that
aren't patched in Buildroot into the CycloneDX format.
- fixed -> resolved
- not-affected-component-not-present -> false_positive
- not-affected-vulnerable-code-not-present -> not_affected &
code_not_present
- not-affected-vulnerable-code-not-in-execute-path -> not_affected &
code_not_reachable
- not-affected-vulnerable-code-cannot-be-controlled-by-adversary -> not_affected &
protected_by_mitigating_control
See https://cyclonedx.org/docs/1.7/json/#vulnerabilities_items_analysis
for more information
Signed-off-by: Thomas Perale <thomas.perale@mind.be>
---
utils/generate-cyclonedx | 83 +++++++++++++++++++++++++++++++++-------
1 file changed, 69 insertions(+), 14 deletions(-)
diff --git a/utils/generate-cyclonedx b/utils/generate-cyclonedx
index df12ee84c0..c1aa1f980d 100755
--- a/utils/generate-cyclonedx
+++ b/utils/generate-cyclonedx
@@ -403,6 +403,43 @@ def cyclonedx_dependency(ref, depends):
"dependsOn": sorted(depends),
}
+def openvex_to_cyclonedx_analysis(state) -> dict:
+ """Convert an OpenVex vulnerability state into a CycloneDX analysis.
+
+ Supported:
+ - fixed
+ - not-affected-component-not-present
+ - not-affected-vulnerable-code-not-present
+ - not-affected-vulnerable-code-not-in-execute-path
+ - not-affected-vulnerable-code-cannot-be-controlled-by-adversary
+
+ Args:
+ state (str): OpenVex status string.
+
+ Returns:
+ dict: CycloneDX analysis dict with 'state' and optional 'justification'.
+ """
+ MAPPING = {
+ "fixed": {
+ "state": "resolved",
+ },
+ "not-affected-component-not-present": {
+ "state": "false_positive",
+ },
+ "not-affected-vulnerable-code-not-present": {
+ "state": "not_affected",
+ "justification": "code_not_present",
+ },
+ "not-affected-vulnerable-code-not-in-execute-path": {
+ "state": "not_affected",
+ "justification": "code_not_reachable",
+ },
+ "not-affected-vulnerable-code-cannot-be-controlled-by-adversary": {
+ "state": "not_affected",
+ "justification": "protected_by_mitigating_control",
+ },
+ }
+ return MAPPING.get(state, {"state": "in_triage"})
def cyclonedx_vulnerabilities(show_info_dict):
"""Create a JSON list of vulnerabilities ignored by buildroot and associate
@@ -421,20 +458,38 @@ def cyclonedx_vulnerabilities(show_info_dict):
for cve in comp.get('ignore_cves', []):
cves.setdefault(cve, []).append(name)
- return [{
- "id": cve,
- "source": {
- "name": "NVD",
- "url": "https://nvd.nist.gov/vuln/detail/" + cve
- },
- "analysis": {
- "state": "resolved_with_pedigree" if cve in VULN_WITH_PEDIGREE else "in_triage",
- "detail": f"The CVE '{cve}' has been marked as ignored by Buildroot"
- },
- "affects": [
- {"ref": bomref} for bomref in components
- ]
- } for cve, components in cves.items()]
+ ret = []
+ for cve, components in cves.items():
+ # retrieve first occurance of the "cves_status" for this CVE.
+ cve_status = next(
+ (status for comp_name in components
+ if (status := show_info_dict.get(comp_name, {}).get("cves_status", {}).get(cve, {}))),
+ {}
+ )
+
+ if cve in VULN_WITH_PEDIGREE:
+ state = {"state": "resolved_with_pedigree"}
+ else:
+ state = openvex_to_cyclonedx_analysis(cve_status.get("status"))
+
+ detail = cve_status.get("detail", f"The CVE '{cve}' has been marked as ignored by Buildroot")
+
+ ret.append({
+ "id": cve,
+ "source": {
+ "name": "NVD",
+ "url": "https://nvd.nist.gov/vuln/detail/" + cve
+ },
+ "analysis": {
+ **state,
+ "detail": detail
+ },
+ "affects": [
+ {"ref": bomref} for bomref in components
+ ]
+ })
+
+ return ret
def br2_virtual_is_provided_by(ref, show_info_dict) -> list:
--
2.54.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
next prev parent reply other threads:[~2026-06-24 14:07 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-24 14:06 [Buildroot] [RFC PATCH 00/14] Add exportable vulnerability informations Thomas Perale via buildroot
2026-06-24 14:06 ` [Buildroot] [RFC PATCH 01/14] docs/manual: add vulnerability status and justification Thomas Perale via buildroot
2026-08-20 20:47 ` Thomas Petazzoni via buildroot
2026-06-24 14:06 ` [Buildroot] [RFC PATCH 02/14] utils/checkpackagelib/lib_mk.py: check _STATUS value is supported Thomas Perale via buildroot
2026-06-24 14:06 ` [Buildroot] [RFC PATCH 03/14] package/pkg-utils: show-info expose vuln details Thomas Perale via buildroot
2026-08-20 20:54 ` Thomas Petazzoni via buildroot
2026-06-24 14:06 ` Thomas Perale via buildroot [this message]
2026-06-25 18:01 ` [Buildroot] [RFC PATCH 04/14] utils/generate-cyclonedx: support vulnerability details Fiona Klute via buildroot
2026-06-24 14:06 ` [Buildroot] [RFC PATCH 05/14] package/sox: add vulnerabilities details Thomas Perale via buildroot
2026-06-24 14:06 ` [Buildroot] [RFC PATCH 06/14] package/php: add vulnerability details Thomas Perale via buildroot
2026-06-24 14:06 ` [Buildroot] [RFC PATCH 07/14] package/mupdf: add vulnerabilities details Thomas Perale via buildroot
2026-06-24 14:06 ` [Buildroot] [RFC PATCH 08/14] package/python-pip: add detail to vulnerability Thomas Perale via buildroot
2026-06-25 17:57 ` Fiona Klute via buildroot
2026-06-26 7:25 ` Thomas Perale via buildroot
2026-06-24 14:06 ` [Buildroot] [RFC PATCH 09/14] package/luajit: add details to vulnerabilities Thomas Perale via buildroot
2026-06-24 14:06 ` [Buildroot] [RFC PATCH 10/14] package/libuci: add vulnerability details Thomas Perale via buildroot
2026-06-24 14:06 ` [Buildroot] [RFC PATCH 11/14] package/glibc: " Thomas Perale via buildroot
2026-06-24 14:45 ` Romain Naour via buildroot
2026-06-24 15:06 ` Thomas Perale via buildroot
2026-06-24 14:06 ` [Buildroot] [RFC PATCH 12/14] package/freeradius-server: add vulnerabilities details Thomas Perale via buildroot
2026-06-24 14:06 ` [Buildroot] [RFC PATCH 13/14] package/flex: add vulnerability details Thomas Perale via buildroot
2026-06-24 14:06 ` [Buildroot] [RFC PATCH 14/14] package/clamav: " Thomas Perale via buildroot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260624140645.185318-5-thomas.perale@mind.be \
--to=buildroot@buildroot.org \
--cc=ricardo.martincoski@datacom.com.br \
--cc=thomas.perale@mind.be \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.