Module 8 of 10 · 40 min

XBOM, compliance and reporting

Learn how XBOM inventories the software, cryptography and AI models in your repositories, how to record VEX statements and exchange BOMs, and how the Compliance view and reports turn findings into audit evidence. Plexicus produces mappings and evidence; your auditors decide on compliance.

By the end of this module you can

  • Explain what the SBOM, CBOM and AIBOM inventories contain and enable the BOM tools that populate them
  • Record VEX statements, set up watchlists and read the scan-to-scan diff for a repository
  • Import supplier BOMs and export CycloneDX, SPDX, CSV or a PDF attestation with the profile that fits the BOM type
  • Configure the frameworks you track and drill from the Compliance tab down to the findings behind a control
  • Produce a Findings Intelligence Report, a SARIF export or a repository CSV as evidence without claiming compliance

XBOM: one inventory for software, cryptography and AI models

A finding tells you something is wrong. An inventory tells you what you ship. XBOM, short for Extended Bill of Materials, is the Plexicus inventory of three kinds of assets in your repositories. Like Plexicus Automation, it works alongside the Validate, Understand, Remediate loop.

  • Software (SBOM): libraries, packages and dependencies.
  • Cryptography (CBOM): algorithms, key sizes, primitives and where they are used.
  • AI Models (AIBOM): machine-learning models with their providers, datasets and licenses.

Open XBOM from the main sidebar. The page is titled “Asset Inventory (XBOM)” and has three tabs: Software (SBOM), Cryptography (CBOM) and AI Models (AIBOM). The selected tab is kept in the URL, so a reload or a shared link opens the same tab, though not your filters. XBOM is available depending on your plan.

Enabling the BOM tools

Each tab stays empty until its tool is enabled and a repository has been scanned, or until you import a supplier BOM with that kind of component. An empty tab names the tool to enable and offers a Go to Connectors button.

The CBOM tool detects cryptography in JavaScript and TypeScript, Go, Ruby, PHP, C and C++, Python and Java code.

What each inventory shows

TabColumnsExtra filters
Software (SBOM)Component, Version, Repository, VEX status, Vulnerabilities, License, ActionsLicense category
Cryptography (CBOM)Algorithm, Key size / Params, Primitive, Context / Source, Repository, Compliance riskQuantum classification
AI Models (AIBOM)Model, Type, Provider, Version, Datasets, Licenses, Repository, Security / RiskProvider, Risk flag

Every tab also has a search box and a Repository filter. The SBOM Vulnerabilities column counts active findings whose library name and version match the component, by severity (C, H, M, L). The counts are not links; to see the findings, filter Findings by Library. Licenses fall into five categories: Permissive (such as MIT or Apache-2.0), Weak copyleft (such as LGPL or MPL-2.0), Strong copyleft (such as GPL or AGPL), Proprietary and Unknown.

Each CBOM asset gets a quantum classification:

  • Quantum Vulnerable: public-key cryptography a quantum computer could break, such as RSA, ECDSA, ECDH, DH and Ed25519.
  • Deprecated/Weak: broken or weak today, such as MD5, SHA-1, DES, 3DES and RC4.
  • Quantum Safe: NIST post-quantum standards such as ML-KEM and ML-DSA, plus symmetric and hash primitives that resist quantum attack.
  • Unknown: not enough information to classify.

AIBOM rows carry risk flags: Serialization Risk (model files such as .pkl or .pt), No Model Card, Unknown License, Restricted License (for example non-commercial or research-only terms), External API (a model called through a provider’s API), No Dataset Provenance and Unpinned Version (empty, “latest”, “main” and similar).

Click a row to open its Details panel: PURL, hashes, file paths, supplier and source tool for software, classification reasons for cryptography, datasets for AI models.

The executive overview

The Executive overview above the tabs shows five KPI cards: Total components, Repositories covered (split into SBOM, CBOM and AIBOM), Quantum readiness, AI models (with how many have risks) and License risk. Four charts follow: License categories, Quantum classification, Top vulnerable components and AI providers.

Two cards need care:

  • Quantum readiness is the share of all CBOM assets, Unknown included, classified Quantum Safe, scored out of 100 and noted against the NIST 2030/2035 deadlines. The card is green at 80 or above, yellow from 50 to 79 and red below 50. With no CBOM data the card reads 0/100, so confirm the CBOM tool is enabled before you read anything into it.
  • License risk counts components with strong copyleft, proprietary or unknown licenses. Weak copyleft such as LGPL is not counted. It tells you what to send for legal review; it is not a legal opinion.

A low quantum score is a planning signal. Suppose the CBOM shows RSA-2048 in your identity service (Quantum Vulnerable) and MD5 in a password-reset token generator (Deprecated/Weak). Fix the MD5 first, because it is weak today, and plan the RSA migration against the NIST deadlines.

VEX statements, watchlists and scan-to-scan diff

Your SBOM lists a component with a known CVE. That alone does not mean your product is exploitable. A VEX (Vulnerability Exploitability eXchange) statement records your assessment of one vulnerability in one component, so the next reviewer does not repeat the analysis.

Setting a VEX statement

On the component’s row, open XBOM Software (SBOM) Actions Set VEX . The VEX statement form has Component (prefilled), Vulnerability ID (for example CVE-2024-12345), Status, Justification and an optional Detail. Status starts at Under investigation. Click Save statement.

StatusUse it whenJustification
AffectedThe vulnerable code is present and applies to your product, and you are working on itOptional, but say what you are doing
Not affectedThe component is present but the vulnerability does not apply, for example the vulnerable function is never calledRequired by the form
FixedYou upgraded or patched to a version without the vulnerabilityOptional, but name the version
Under investigationYou have not finished the assessmentOptional, but say what is being checked

Example: your payments service pulls in a YAML library with a deserialization CVE in its unsafe loader. Your review, for example with Deep Code Analysis (module 5), shows that your code only ever calls the safe loader. Record Not affected with a justification such as “The unsafe loader is never called; every parse uses the safe loader, see the finding’s trace.”

The VEX status column shows the most recent statement for the component. If a component has statements for several vulnerabilities, the column shows only the newest one, whatever vulnerability it covers. A Not affected badge therefore does not clear every CVE in that component, so check its findings in Findings before you treat it as cleared. Saving a statement needs the same write permission as triaging findings.

VEX statements stay in Plexicus. The CycloneDX, SPDX, CSV and PDF exports do not include them, so show reviewers the VEX status in XBOM or record the assessment in your own VEX document.

Watchlists

A watchlist alerts you when a software component (SBOM) you care about shows up in a new scan. Cryptographic assets and AI models do not trigger watchlist alerts. Open XBOM Watchlists , enter a Pattern, choose a Type, leave Notify on match on and click Add watchlist.

  • Name matches any component whose name contains the pattern, ignoring case. The pattern “log4j” matches log4j-core and log4j-api.
  • PURL matches components whose package URL starts with the pattern, such as pkg
    /lodash.

The Watch component row action on the SBOM tab is a shortcut: it creates a Name entry for that component with notifications on.

An alert fires only when a matching name and version was not present in earlier scans of that repository, so a long-standing component does not alert on every scan, while a new version of it does. Alerts arrive as in-app warning notifications that name the component, its version and the pattern it matched. Good candidates are libraries your team has banned, packages with a history of compromised releases and internal packages you want to trace across teams.

Changes vs previous scan

In the Repository filter, select exactly one repository. A Changes vs previous scan panel appears. It compares that repository’s two most recent scans and lists components as Added, Removed or Changed (the version differs). Check it after a merge to catch a dependency nobody discussed, or after an upgrade to confirm the old version is really gone.

Importing supplier BOMs and exporting

Importing a supplier BOM

Your product contains software you did not build. When a supplier sends a BOM, import it so its components sit next to your own: XBOM Import . The Import supplier SBOM form takes a CycloneDX or SPDX JSON file of up to 20 MB and a required Supplier name. A toast confirms how many components were imported.

In a CycloneDX file, cryptographic-asset components go to the CBOM inventory, machine-learning-model components go to AIBOM, and everything else goes to SBOM. When the same supplier sends an updated BOM, import it again under the same supplier name. Plexicus replaces that supplier’s previous imported snapshot instead of adding duplicates.

Export formats

Choose the tab first, then open Export.

FormatWorks onWhat you get
CycloneDX JSONSBOM, CBOM, AIBOMA CycloneDX 1.6 document
SPDX JSONSBOM onlyAn SPDX 2.3 document
CSVSBOM, CBOM, AIBOMA spreadsheet of the inventory, downloaded at once
PDF attestationSBOM, AIBOM (listed on CBOM too, but fails there)An XBOM Attestation Report scored against a compliance profile

For CycloneDX, SPDX and PDF, a dialog asks for Product name (blank uses the name shown, such as the repository or organization) and Product version (blank uses the export date). For CycloneDX and SPDX, these fields name the root component of the document, so fill in both for anything that leaves your team. The PDF attestation does not print the product name or version. It names only your organization, so send it with the matching CycloneDX export and state the release in your cover note.

What an export covers:

  • The latest scan snapshot, not history.
  • The first repository selected in the filter, or the whole organization when none is selected.
  • For SBOM, one entry per PURL: a package found in several repositories appears once, with its file paths merged as evidence.

Both formats name your product as the root and carry a creation timestamp and your organization. CycloneDX adds a unique serial number and lists your organization as supplier; SPDX uses a unique document namespace instead. Dependency relationships appear only where they were resolved, and the CycloneDX document declares the component list complete but the transitive dependency graph incomplete. That is an accurate statement a reviewer can rely on.

PDF attestation and compliance profiles

ProfileBOM typePer-component fields checked
EU CRA (BSI TR-03183-2)SBOMName, version, PURL, licenses, hashes, supplier, file paths
CISA 2025SBOMName, version, PURL, licenses, hashes, supplier, source tool
PCI DSS 6.3.2SBOMName, version, repository, source tool
EU AI ActAIBOMName, version, provider, licenses, datasets, model card

The report states the BOM type, organization, generation time and a SHA-256 hash of the BOM content. A Summary section follows, then a completeness score out of 100 for the chosen profile, with a Present, Missing and Coverage table per field and regulatory notes. The score averages field coverage with document checks: root component, spec version, serial number, timestamp, creator, no duplicates, a dependency graph and resolvable dependency references.

The hash covers a CycloneDX rendering made at export time, so it will not match a CycloneDX file you download separately. Do not present it as a way to verify another file.

The completeness score rates the document, not your compliance. The Missing column shows how many components lack each required field. The document checks are folded into the score but not listed, so if every field reads 100% and the score is still lower, the gap is at document level, most often a missing or partial dependency graph. Review the gaps before you send the attestation, and tell the recipient about any you cannot close.

The Compliance view

Choose your frameworks first

The Compliance view only shows the frameworks your organization tracks. Pick them in Settings Organization Regulations : click Edit, select frameworks from the catalog, then click Save changes. Both Configure frameworks buttons on the Compliance tab lead there. Until you select at least one, the tab shows “No compliance frameworks configured”.

The catalog holds 50 frameworks, including NIS2, DORA, CRA, GDPR, PCI DSS v4.0.1, ISO 27001

, SOC 2, NIST CSF, NIST 800-53r5, HIPAA, ENS and ISA/IEC 62443. Some frameworks depend on your plan: they carry a badge naming the plan they require, and selecting one opens an upgrade prompt. Frameworks outside the catalog are added by contacting Plexicus.

How findings are mapped

Mapping happens when Plexicus enriches a finding with AI. Each framework is evaluated, but a framework is attached only when a strict control exists, meaning one that could prevent the vulnerability. Controls that only help detect or respond are left out, and at most one control per framework is recorded. A SQL injection in a login handler can map to an input-validation or secure-development control. It is not mapped to a logging control merely because logging might have noticed the attack.

The result is stored on the finding as Regulation, Control and Control category. Open a finding and scroll to its Compliance & OWASP section, which lists each regulation with its control, control category and a short description. When nothing applies, it reads “This security finding does not activate any applicable compliance policies.” In Findings, All filters lets you filter by Regulation, Control and Control category, and the Regulation filter offers only the frameworks you enabled.

The mapping is AI-generated. Treat it as a strong starting point that a person confirms, especially for any control you plan to cite in an audit.

Reading the Compliance tab

Open Dashboard Compliance . The older Compliance page address redirects here. The filter bar has Repository, Asset type (All assets, Code, Cloud, SCM), Severity and Framework, plus Configure frameworks and Refresh. The tab and some frameworks are available depending on your plan.

WidgetWhat it shows
Framework cardsOpen findings, Critical / High, Fixed, Affected assets and a controls count for each framework
Risk DashboardA flow from Total Findings to Fixed and Remaining, then severity, asset group (Code, Cloud, SCM) and framework
Compliance FindingsA heatmap of open findings per repository and framework for your busiest repositories
Findings TrendWeekly new findings per framework over Last 30 days, Last 90 days (the default), Last 6 months or Last year
Framework Risk QuadrantOpen findings plotted against how many repositories each framework affects
Top Violated ControlsControl, Framework, Category, Severity, Findings and Assets, with the most findings first

Most widgets drill down to Findings with filters applied. A framework card or framework node filters to that regulation, a severity node to that severity, a heatmap cell to the framework and repository, and a Top Violated Controls row to the framework and control. The tab’s Repository and Severity filters carry over. Asset type does not carry over, and drill-downs open the Repo tab of Findings, so switch to the Cloud or SCM tab for those findings. A card that reads “No findings · mapping pending” has no mapped findings yet.

The counts exclude duplicates, sub-findings, false positives and deleted findings, and “open” means not yet solved. Triage quality shows up directly here: a false positive left open inflates a framework’s numbers, and solved findings move to Fixed.

Reports and evidence

Auditors, customers and your own leadership ask for evidence in different shapes. Plexicus gives you three report types beyond the XBOM exports.

The Findings Intelligence Report

In Findings, pick the tab (Repo, SCM, Cloud, Registry or App Pentest), set your filters, then click Findings Download PDF . The report is built in the background. A “Report being generated” toast tells you that you will get an email when it is ready. You then receive an email and an in-app Report Ready notification with a Download report button. Both open a download page in Plexicus that requires you to sign in. If the report is still generating or the link has expired, the page says so, and you can generate it again.

Things to know before you rely on it:

  • Your organization can request at most 5 reports per hour, shared across all users. Beyond that you see “Rate limit reached”. Each request, including a refused one, restarts the hour, so wait instead of retrying.
  • The report is written in the organization’s Scan & Report Language, set in Settings Platform . Finding titles and code stay in their source language.
  • PDF reports are available depending on your plan.

The report opens with a cover page (organization, generation date, total findings, repositories scanned, marked CONFIDENTIAL) and an Executive Summary with total, Critical, High, Medium, Low, Resolved, In Progress and repository counts. Charts include Severity Distribution, the top 5 findings by EPSS, Remediation Status, Findings by Repository and Findings by Language. A Findings Detail table (Severity, Title, Repository, Tool, EPSS, Status) lists up to 500 findings, worst first, while counters and charts still cover every finding in scope. Up to 10 critical findings get a detail section with AI remediation guidance.

Filter before you click. “Critical and High, payments repository, Regulation NIS2” is a report a reviewer can act on. An unfiltered export of a large backlog cuts the table off at 500 rows.

SARIF and CSV exports

  • Findings Download JSON downloads findings.json, a SARIF 2.1.0 document scoped to the current tab and filters. By default it includes only findings whose status is AI-Analysed. Findings that have moved on to Ready to Fix, Fix Submitted, Issued or Fixed are left out, so use the PDF report when you need to show remediation progress. Use the SARIF file to hand results to another tool that reads SARIF.
  • Download report on one finding’s detail view gives you a SARIF file for that one finding, handy for a ticket or a code review.
  • In Assets Repo Scan , the table’s download button exports the filtered repositories as repositories.csv, a ready-made asset list for an auditor.

Findings exports are recorded in the audit log (module 10). AI Pentest reports are covered in module 6.

Supporting regulatory conversations

ConversationEvidence you can bring from Plexicus
NIS2, on vulnerability handling and supply-chain securityThe Compliance tab filtered to NIS2, a Findings Intelligence Report filtered by the NIS2 regulation, the Findings Trend and an SBOM export
DORA Art. 28, on ICT third-party riskImported supplier BOMs, SBOM exports, VEX statements on third-party components recorded in XBOM (shown in the app, not in exports) and the Compliance tab filtered to DORA
EU CRAAn SBOM in CycloneDX or SPDX, a PDF attestation with the EU CRA profile and the VEX statements you recorded in XBOM
EU AI ActThe AIBOM with providers, datasets and risk flags, and a PDF attestation with the EU AI Act profile

Key takeaways

  • XBOM is one inventory with three tabs, Software (SBOM), Cryptography (CBOM) and AI Models (AIBOM), filled by enabling Plexicus SBOM, CBOM and AIBOM on the Connectors page and scanning.
  • VEX statements record per component and per vulnerability whether you are Affected, Not affected (justification required), Fixed or Under investigation. They do not change finding status, so triage findings separately.
  • Watchlists alert on newly appearing software components by name or PURL, and the diff compares a repository’s last two scans.
  • Exports cover the latest snapshot: CycloneDX 1.6 for every tab, SPDX 2.3 for SBOM, CSV, and a PDF attestation whose profile must fit the BOM type.
  • The Compliance tab shows only the frameworks chosen in Settings, Organization, Regulations, maps findings only to controls that could prevent them, and drills down to the findings mapped to a framework or control.
  • Findings Intelligence Reports, SARIF and repository CSVs are evidence for NIS2, DORA, CRA and EU AI Act conversations. Plexicus produces the evidence; your auditors judge compliance.

Knowledge check

Check your understanding

Practice questions for this module. They do not count toward certification. Pass mark: 4 correct answers.

  1. Question 1 What does the Quantum readiness score on the XBOM executive overview measure?
  2. Question 2 When does the 'Changes vs previous scan' panel appear on the XBOM page?
  3. Question 3 Which XBOM export option is offered only on the Software (SBOM) tab?
  4. Question 4 When does Plexicus attach a compliance framework's control to a finding?
  5. Question 5 You download findings.json from Findings with the default settings. Which findings does the file leave out?

Qualification

Check whether AI Swarm Pentest fits your environment.

Share the minimum context. We will review the scope and tell you the next commercial step.

Before submitting — verify you fit

0 / 280

No commitment. If you don't fit, we'll tell you.

SAMPLE HANDOVER · ILLUSTRATIVE

Sample evidence handover

A trimmed view of what your team receives at the end of an AI Swarm Pentest engagement. Real engagements include full technical evidence, executive narrative, and a remediation plan.

VALIDATED FINDING Evidence attached

Server-Side Request Forgery in webhooks/receiver

demo-project/sample-app · src/webhooks/receiver.py:42

SeverityHigh CVSS 3.18.6 Priority79 Confirmedvia replay

Untrusted caller-supplied URLs reach an internal egress without an allowlist. Replayed in a sandbox against a fresh authorized target — the same control was validated to fail twice.

REVIEWER-READY REMEDIATION Merge-ready PR

Validate the target URL against an allowlist of permitted hostnames. Reject private/internal IP ranges. Enforce HTTPS only.

plexicus/remediation/webhooks-ssrf 3 changed · 0 new files
42resp = requests.get(target_url)
42+if not is_allowed_host(target_url):
43+  raise WebhookRejected(target_url)
44+resp = requests.get(target_url, timeout=5)
Every engagement hands over:
  • Executive briefing
  • Validated findings list
  • Merge-ready PRs
  • Compliance mapping (NIS2 · DORA · CRA)
Private Round For investors