EXERCISE This case is a drill. The exploitation is simulated and nothing is ever sent to an authority. Run by ChinorabCase issue
Article 14
23 Oct 2026, 01:20 UTC Records as of
Overview
A14-20261022-1EXERCISESimulated exploitationClosed

jsonwebtoken vulnerable to signature validation bypass due to insecure default algorithm in jwt.verify() in ledgerline 1.0.0

Early warning24 hoursDeadline metSIMULATED
SubmittedRecorded 22 Oct 2026, 14:28 UTC
Due 23 Oct 2026, 13:06 UTC
Vulnerability notification72 hoursDeadline metSIMULATED
SubmittedRecorded 22 Oct 2026, 14:28 UTC
Due 25 Oct 2026, 13:06 UTC
Final report14 days after fixDeadline metSIMULATED
SubmittedRecorded 22 Oct 2026, 14:28 UTC
Due 05 Nov 2026, 13:58 UTC

Timeline

Every step links to its GitLab record
  1. Exploited vulnerability detected

    DoneSecure22 Oct 2026, 13:06 UTC

    CVE-2022-23540 in jsonwebtoken 8.5.1, matched from the SBOM against OSV and CISA KEV 2026.10.21. Exploitation signal: simulated for this exercise.

  2. Case opened, clocks started

    DonePlan22 Oct 2026, 13:06 UTC

    Issue created from the case template with labels, due dates and the fact sheet.

    PipelineIssue #1
  3. Qualification proposed

    DoneSecure22 Oct 2026, 13:08 UTC

    Proposed reportable. This is a drill. The SBOM records jsonwebtoken 8.5.1 in ledgerline 1.0.0, and the advisory for CVE-2022-23540 lists versions up to 8.5.1 as affected, so the vulnerable component and version are contained in the product. For the exercise, the recorded scenario treats active exploitation against Ledgerline share links as the evidence. That exploitation is simulated, and the CVE is not listed in CISA KEV (catalog version 2026.10.21). Awareness is recorded at 2026-10-22T13:06:42.022Z. The Member States where the product is made available are not recorded (gap), so the EU availability check is open until the lead fills it in. Nothing from this drill is sent to an authority.

    ai-article-14-triage-gitlab-ai-hackathonProposal note
  4. Qualification confirmed

    DoneGovern22 Oct 2026, 13:10 UTC

    Decision: reportable.

  5. Fix merge request opened

    DoneCreate

    Upgrade of jsonwebtoken to 9.0.0 with a regression test.

    ChinorabMR !9
  6. Pipeline verified the fix

    DoneVerify22 Oct 2026, 13:24 UTC

    4 merge request pipeline(s); 2 failed and repaired; last success. Unit, integration, SAST, secret detection and dependency scanning.

    Pipeline fix flow and pipelinePipeline 2976735884
  7. Fix merged

    DonePackage22 Oct 2026, 13:35 UTC

    The fix reaches main: image build, SBOM, container scanning, staging deployment and smoke tests run on their own.

    ChinorabMR !9
  8. Production approved and deployed

    DoneRelease22 Oct 2026, 13:58 UTC

    Deployed to Cloud Run production, then checked by the monitor job. The final report clock starts here.

  9. Security release published

    DoneRelease22 Oct 2026, 14:00 UTC

    Release v1.0.1 with notes written from the fix merge request.

    Pipeline and release notes flowv1.0.1
  10. Report drafts prepared

    DoneGovern22 Oct 2026, 13:12 UTC

    Three drafts rendered from the fact sheet, narrative fields proposed from recorded facts, gaps left for the lead.

    CRA report flowMR !8
  11. Drafts approved

    DoneGovern22 Oct 2026, 14:21 UTC

    Merging the reports merge request is the human approval of the drafts.

    ChinorabMR !8
  12. Reports submitted manually

    DoneGovern22 Oct 2026, 14:28 UTC

    3 of 3 submissions recorded in the drill; nothing was sent.

    ChinorabIssue #1

Audit log

Every action on this case by a flow, the pipeline or a person, in UTC. Source: wiki page cases/A14-20261022-1/audit-log.

Audit log
Time (UTC)ActorKindActionEvidence
22 Oct 2026, 13:06 UTCci:drill:open-casepipelineDetected CVE-2022-23540 in jsonwebtoken 8.5.1 (OSV GHSA-qwph-4952-7xr6); exploitation signal: simulatedOpen
22 Oct 2026, 13:06 UTCci:drill:open-casepipelineOpened case issue #1; awareness time 2026-10-22T13:06:42.022Z; early warning due 2026-10-23T13:06:42.022ZOpen
22 Oct 2026, 13:06 UTCci:drill:open-casepipelineHanded off to the triage flow (@ai-article-14-triage-gitlab-ai-hackathon)Open
22 Oct 2026, 13:08 UTCai-article-14-triage-gitlab-ai-hackathonflowProposed qualification reportableOpen
22 Oct 2026, 13:08 UTCai-article-14-triage-gitlab-ai-hackathonflowProposed qualification: reportableOpen
22 Oct 2026, 13:10 UTCChinorabhumanConfirmed the case as reportable and started remediationOpen
22 Oct 2026, 13:12 UTCci:case:syncpipelineOpened reports merge request !8 with three draftsOpen
22 Oct 2026, 13:12 UTCci:case:syncpipelineHanded off to the cra-report flow (@ai-article-14-cra-report-gitlab-ai-hackathon)Open
22 Oct 2026, 13:13 UTCChinorabhumanOpened fix merge request !9Open
22 Oct 2026, 13:13 UTCai-article-14-remediation-gitlab-ai-hackathonflowOpened fix merge requestOpen
22 Oct 2026, 13:14 UTCai-article-14-cra-report-gitlab-ai-hackathonflowProposed narrative fields for the A14-20261022-1 draftsOpen
22 Oct 2026, 13:19 UTCci:case:syncpipelineHanded off to the pipeline-fix flow (@ai-article-14-pipeline-fix-gitlab-ai-hackathon)Open
22 Oct 2026, 13:21 UTCci:case:syncpipelineHanded off to the pipeline-fix flow (@ai-article-14-pipeline-fix-gitlab-ai-hackathon)Open
22 Oct 2026, 13:21 UTCai-article-14-pipeline-fix-gitlab-ai-hackathonflowFixed failing pipeline on https://gitlab.com/gitlab-ai-hackathon/transcend-october-2026/43597174/article-14/-/merge_requests/9: share tokens relied on jsonwebtoken 8 accepting unsigned alg none tokens; now signed with pinned HS256 and an env or random secretOpen
22 Oct 2026, 13:22 UTCci:case:syncpipelineRefreshed report drafts on !8 from new factsOpen
22 Oct 2026, 13:25 UTCci:case:syncpipelineRefreshed report drafts on !8 from new factsOpen
22 Oct 2026, 13:35 UTCChinorabhumanMerged fix merge request !9Open
22 Oct 2026, 13:36 UTCci:case:syncpipelineRefreshed report drafts on !8 from new factsOpen
22 Oct 2026, 13:49 UTCci:case:syncpipelineRefreshed report drafts on !8 from new factsOpen
22 Oct 2026, 13:52 UTCci:case:syncpipelineRefreshed report drafts on !8 from new factsOpen
22 Oct 2026, 13:56 UTCChinorabhumanApproved and started the production deploymentOpen
22 Oct 2026, 13:58 UTCci:deploy:productionpipelineCorrective measure available in production; final report clock startedOpen
22 Oct 2026, 14:00 UTCci:release:createpipelineCreated release v1.0.1Open
22 Oct 2026, 14:00 UTCci:notify:release-notespipelineHanded off to the release-notes flow (@ai-article-14-release-notes-gitlab-ai-hackathon)Open
22 Oct 2026, 14:02 UTCai-article-14-release-notes-gitlab-ai-hackathonflowWrote release notes for v1.0.1Open
22 Oct 2026, 14:05 UTCci:case:syncpipelineRefreshed report drafts on !8 from new factsOpen
22 Oct 2026, 14:08 UTCci:case:syncpipelinePublished release notes from ai-article-14-release-notes-gitlab-ai-hackathon on release v1.0.1Open
22 Oct 2026, 14:08 UTCci:case:syncpipelineRefreshed report drafts on !8 from new factsOpen
22 Oct 2026, 14:08 UTCci:case:syncpipelineHanded off to the cra-report flow (@ai-article-14-cra-report-gitlab-ai-hackathon)Open
22 Oct 2026, 14:10 UTCci:case:syncpipelineRefreshed report drafts on !8 from new factsOpen
22 Oct 2026, 14:10 UTCai-article-14-cra-report-gitlab-ai-hackathonflowProposed narrative fields for the A14-20261022-1 draftsOpen
22 Oct 2026, 14:11 UTCci:case:syncpipelineRefreshed report drafts on !8 from new factsOpen
22 Oct 2026, 14:13 UTCChinorabhumanRecorded userMeasuresOpen
22 Oct 2026, 14:21 UTCChinorabhumanApproved the report drafts on !8Open
22 Oct 2026, 14:28 UTCChinorabhumanRecorded manual submission of the early-warning (drill, nothing was sent), reference DRILL-REF-EWOpen
22 Oct 2026, 14:28 UTCChinorabhumanRecorded manual submission of the notification (drill, nothing was sent), reference DRILL-REF-NTOpen
22 Oct 2026, 14:28 UTCChinorabhumanRecorded manual submission of the final-report (drill, nothing was sent), reference DRILL-REF-FROpen
22 Oct 2026, 14:29 UTCci:case:syncpipelinePosted the final recap and closed the caseOpen