Case study · Product security and regulation

Clock-ready: Cyber Resilience Act vulnerability handling for a German industrial software maker, as AI-found reports surge

A German company sold machine-monitoring software to manufacturers across Europe: an edge gateway installed in factories and a cloud application. From September 2026 the EU Cyber Resilience Act required it to report actively exploited vulnerabilities on tight deadlines. At the same time, vulnerability reports were arriving faster, many of them written with AI. The company needed a product security process that could separate signal from noise, know which customers were exposed and start the regulatory clock at the right moment.

Case studyIndustrial software · Germany and EUSumanta Mukhopadhyay9 min read
#security#governance#ai
CASE STUDY · CASE STUDY · PRODUCT SECURITY AND REGULATION6 Nov 2026 · 15:50 GST
At a glance
SectorIndustrial software · Germany and EU
My roleFractional CTO and security architect
EngagementAssessment, process and architecture design, delivery leadership
ScopeVulnerability intake, AI-assisted triage, SBOMs, exploitation assessment, CRA reporting, signed releases, customer advisories
What changed
  • One intake route for every vulnerability report, with an owner and a record
  • Duplicate and low-quality reports filtered before engineers spent time on them
  • Any component answerable with which releases and which customers are affected
  • A written rule for when a vulnerability counts as actively exploited, so the reporting clock starts consistently
  • Fixes shipped as signed releases with advisories customers could act on
Disclosure policy and security.txtCase management for security reportsAI-assisted triage with no tool accessIsolated reproduction environmentsSBOM generated per release (CycloneDX)VEX statements for unaffected componentsSigned releases and update channelRelease-to-customer inventory

Anonymised composite. Client names, identifying details and confidential figures are withheld; public facts are cited in the references.

The situation

A German software company sold machine-monitoring software to manufacturers across Europe. Its product had two parts: an edge gateway installed on factory networks that collected data from machines, and a cloud application where customers viewed dashboards and alerts. Both were built on many open-source components. Security reports came in through a shared email address, were picked up by whichever engineer had time, and were tracked in the general bug tracker. Nobody could quickly say which customers ran which gateway release, or which releases contained a given library.

The product counted as a product with digital elements under the EU Cyber Resilience Act. From 11 September 2026, manufacturers must report actively exploited vulnerabilities and severe incidents, once, through ENISA's Single Reporting Platform, which passes them to the relevant national CSIRT and ENISA12. The first step is an early warning within 24 hours of becoming aware of active exploitation, followed by a fuller notification and a final report2. An email inbox and goodwill could not meet those deadlines reliably.

Why now. Vulnerability reports were getting more numerous and harder to judge. On 5 November 2026 OpenAI released GPT-6 Cyber, a model for authorised vulnerability research that it rates at its highest cybersecurity risk level3. OpenAI's own security leadership has said AI-generated reports are overwhelming some open-source maintainers4, and projects such as Debian have begun experimenting with AI-assisted triage to cope5. The company was seeing the same pattern at its own scale: more reports, some excellent, many duplicated or unreproducible.

What had to be true

  • One way in: every report, from researchers, customers, suppliers or internal scanners, reaches one queue with an owner.
  • Noise filtered cheaply, without letting a real vulnerability sit unread.
  • Exposure answerable fast: for any component, which releases contain it and which customers run them.
  • A consistent start to the clock: a written rule for when the company is "aware" of active exploitation.
  • Fixes customers can trust: signed releases and advisories that say what to do.
  • Evidence kept: who knew what, when, and what was reported.

Architecture

Intake
Disclosure policysecurity.txt and web formInternal scannersdependencies and codeCustomer and supplier reportssame queue
Triage
AI-assisted sortingdeduplicate, summarise, no toolsSecurity on-callowns every case
Analysis
Isolated reproductiongateway and cloud test rigsSBOM per releasejoined to customer inventoryVEX statementsnot affected, and why
Decision and reporting
Exploitation rulewhen the clock startsSingle Reporting Platformearly warning, notification, final report
Delivery
Signed releasesgateway and cloudCustomer advisoriesaffected versions, actionsCase recordtimestamps and decisions
AI helps at the noisy front; people own the decisions that start legal clocks.

The core was a security case record, separate from the general bug tracker, with restricted access. Every report became a case with an owner, a status and a timeline. The build pipeline produced a CycloneDX SBOM for every gateway and cloud release, and the licensing system already knew which customer ran which gateway release, so joining the two gave a direct answer to "who is exposed?". When a vulnerable library was present but its vulnerable code was not reachable, the team published a VEX statement saying so, which cut down repeated questions from customers' scanners.

The data flow, end to end

  1. ReceiveA report arrives through the form, security.txt address or a scanner, and opens a case
  2. SortAn AI model groups duplicates, summarises the claim and flags missing details
  3. ReproduceAn engineer tests credible reports on isolated gateway and cloud rigs
  4. ScopeThe SBOM and customer inventory show affected releases and customers
  5. DecideThe on-call lead applies the exploitation rule and severity; reporting starts if needed
  6. Fix and tellA signed release ships with an advisory; the case closes with a final report
Each step adds evidence to the case, so the final report writes itself from the record.

The hard part: AI triage and the start of the clock

Treating reports as untrusted input. Using a language model to read incoming reports helped with volume, but reports are written by strangers, and some could contain instructions aimed at the model. The triage model therefore had no tools, no access to code or customer data, and only produced a structured summary: claimed component, claimed impact, duplicate candidates and missing information. It could not close a case. Anything it marked as low quality still had a person glance at it before closing. See prompt injection defence for agents.

Defining "aware". The 24-hour early warning runs from when the manufacturer becomes aware of active exploitation1. A report that a flaw exists is not the same as evidence that someone is exploiting it. With the company's lawyers, we wrote a short rule: credible evidence of exploitation, such as a customer incident, a national CERT notice, a public exploit used in attacks or an entry in an exploited-vulnerability catalogue, starts the clock, and the on-call lead records the time and the evidence. Borderline cases went to a named second person within working hours, with a bias toward reporting early.

Flowchart: create a policy instance and annotate the namespace to validate signatures, create a pod, then policy evaluation; if it passes the pod is admitted and the image pulled if necessary, if it fails the pod is not admitted
Verify before you run: the same idea let customers check that a gateway update really came from the vendor. Source: Kubernetes blog, Sascha Grunert · CC BY 4.0

Shipping fixes to factories. Gateways sat on factory networks where customers controlled update timing. Signed releases, verifiable before installation, meant customers' operations teams could accept updates without a call to the vendor6. Advisories listed affected versions, the fixed version and a workaround for sites that could not update immediately.

Regulation sets the deadline; your inventory decides whether you can meet it. If you cannot say who runs which release, no process can report on time.

How it ran

Security on-call
  1. Own every case
  2. Apply the exploitation rule
  3. Submit reports
Engineering
  1. Reproduce and fix
  2. SBOM and signing in the pipeline
  3. Signed releases
Legal and customer success
  1. Agree "aware" rule
  2. Advisories
  3. Tell affected customers
Engineering produced the evidence, on-call made the call, legal and customer success made it land.
Phase 1Inventory
  • SBOM per release
  • Customer release map
  • Disclosure policy live
Phase 2Intake
  • One case queue
  • On-call rota
  • AI-assisted sorting
Phase 3Decide
  • Exploitation rule
  • Reporting runbook
  • Platform access tested
Phase 4Deliver
  • Signed releases
  • Advisory template
  • Tabletop exercises
Inventory first: every later step depends on knowing what is deployed where.

A tabletop exercise, run before any real case, walked through a mock exploited vulnerability from report to final submission. It found gaps that documents had hidden: who held access to the reporting platform at weekends, and which customer contacts were out of date.

Key decisions and trade-offs

DecisionAlternativeWhy
Separate security case recordGeneral bug trackerRestricted access and a clean timeline for reporting
AI sorts, people decideAI closes low-quality reportsA missed real vulnerability costs far more than review time
Triage model with no tools or data accessAgent that inspects codeReports are untrusted input
Written exploitation rule agreed with legalJudgement case by caseThe clock starts consistently and defensibly
SBOM joined to customer inventorySBOM files on their ownAnswers "who is exposed?", not just "what is inside?"
Signed releases with advisoriesRelease notes onlyFactory teams can verify and act without a call

What I'd do again, and differently

Again: build the release-to-customer map before anything else. It turned every later question from an investigation into a lookup. Differently: run the tabletop exercise in the first weeks, not after the process was written; it would have shaped the runbook rather than corrected it. Related: defender-first AI models and vulnerability management, AI model supply chain security, the 6 November tech news and the Europe page.

If you sell software or connected products in the EU and need to be ready for Cyber Resilience Act reporting, see my fractional CTO work, or analyse your challenge and bring the result to a call.

References
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
FAQ

Common questions

What does the Cyber Resilience Act require from 11 September 2026?

Manufacturers of products with digital elements must report actively exploited vulnerabilities and severe security incidents through ENISA's Single Reporting Platform, starting with an early warning within 24 hours of becoming aware. Most other CRA obligations apply from December 2027.

How do you handle a surge of AI-generated vulnerability reports?

Use one intake route, let an AI model with no tool access sort, deduplicate and summarise reports, reproduce anything credible in isolation, and keep people responsible for severity, exploitation and reporting decisions.

Why does an SBOM matter for CRA reporting?

Because the first question after a credible report is which products, releases and customers are affected. An SBOM per release, joined to which customers run which release, answers that in minutes rather than days.

Keep reading

Related

Open to advisory, fractional CTO & select builds

Let's talk about what you're building.

The fastest route is a free 30-minute call. Prefer to write? Send a message and I'll reply personally within two business days.

Start a conversation

How would you like to reach me?

Book a 30-min callFastest. Pick any open slot on my calendar.→ Write in GmailOpens a pre-filled draft in your browser.→ Use my email appOutlook, Apple Mail or your default client.→

I reply personally within two business days. Time zones from the Americas and Europe to the Middle East and Asia-Pacific.