jsonwebtoken vulnerable to signature validation bypass due to insecure default algorithm in jwt.verify() in ledgerline 1.0.0
Timeline
Every step links to its GitLab recordExploited vulnerability detected
DoneSecure22 Oct 2026, 13:06 UTCCVE-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.
Case opened, clocks started
DonePlan22 Oct 2026, 13:06 UTCIssue created from the case template with labels, due dates and the fact sheet.
Qualification proposed
DoneSecure22 Oct 2026, 13:08 UTCProposed 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.
Qualification confirmed
DoneGovern22 Oct 2026, 13:10 UTCDecision: reportable.
Fix merge request opened
DoneCreateUpgrade of jsonwebtoken to 9.0.0 with a regression test.
Pipeline verified the fix
DoneVerify22 Oct 2026, 13:24 UTC4 merge request pipeline(s); 2 failed and repaired; last success. Unit, integration, SAST, secret detection and dependency scanning.
Fix merged
DonePackage22 Oct 2026, 13:35 UTCThe fix reaches main: image build, SBOM, container scanning, staging deployment and smoke tests run on their own.
Production approved and deployed
DoneRelease22 Oct 2026, 13:58 UTCDeployed to Cloud Run production, then checked by the monitor job. The final report clock starts here.
Security release published
DoneRelease22 Oct 2026, 14:00 UTCRelease v1.0.1 with notes written from the fix merge request.
Report drafts prepared
DoneGovern22 Oct 2026, 13:12 UTCThree drafts rendered from the fact sheet, narrative fields proposed from recorded facts, gaps left for the lead.
Drafts approved
DoneGovern22 Oct 2026, 14:21 UTCMerging the reports merge request is the human approval of the drafts.
Reports submitted manually
DoneGovern22 Oct 2026, 14:28 UTC3 of 3 submissions recorded in the drill; nothing was sent.
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.
| Time (UTC) | Actor | Kind | Action | Evidence |
|---|---|---|---|---|
| 22 Oct 2026, 13:06 UTC | ci:drill:open-case | pipeline | Detected CVE-2022-23540 in jsonwebtoken 8.5.1 (OSV GHSA-qwph-4952-7xr6); exploitation signal: simulated | Open |
| 22 Oct 2026, 13:06 UTC | ci:drill:open-case | pipeline | Opened case issue #1; awareness time 2026-10-22T13:06:42.022Z; early warning due 2026-10-23T13:06:42.022Z | Open |
| 22 Oct 2026, 13:06 UTC | ci:drill:open-case | pipeline | Handed off to the triage flow (@ai-article-14-triage-gitlab-ai-hackathon) | Open |
| 22 Oct 2026, 13:08 UTC | ai-article-14-triage-gitlab-ai-hackathon | flow | Proposed qualification reportable | Open |
| 22 Oct 2026, 13:08 UTC | ai-article-14-triage-gitlab-ai-hackathon | flow | Proposed qualification: reportable | Open |
| 22 Oct 2026, 13:10 UTC | Chinorab | human | Confirmed the case as reportable and started remediation | Open |
| 22 Oct 2026, 13:12 UTC | ci:case:sync | pipeline | Opened reports merge request !8 with three drafts | Open |
| 22 Oct 2026, 13:12 UTC | ci:case:sync | pipeline | Handed off to the cra-report flow (@ai-article-14-cra-report-gitlab-ai-hackathon) | Open |
| 22 Oct 2026, 13:13 UTC | Chinorab | human | Opened fix merge request !9 | Open |
| 22 Oct 2026, 13:13 UTC | ai-article-14-remediation-gitlab-ai-hackathon | flow | Opened fix merge request | Open |
| 22 Oct 2026, 13:14 UTC | ai-article-14-cra-report-gitlab-ai-hackathon | flow | Proposed narrative fields for the A14-20261022-1 drafts | Open |
| 22 Oct 2026, 13:19 UTC | ci:case:sync | pipeline | Handed off to the pipeline-fix flow (@ai-article-14-pipeline-fix-gitlab-ai-hackathon) | Open |
| 22 Oct 2026, 13:21 UTC | ci:case:sync | pipeline | Handed off to the pipeline-fix flow (@ai-article-14-pipeline-fix-gitlab-ai-hackathon) | Open |
| 22 Oct 2026, 13:21 UTC | ai-article-14-pipeline-fix-gitlab-ai-hackathon | flow | Fixed 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 secret | Open |
| 22 Oct 2026, 13:22 UTC | ci:case:sync | pipeline | Refreshed report drafts on !8 from new facts | Open |
| 22 Oct 2026, 13:25 UTC | ci:case:sync | pipeline | Refreshed report drafts on !8 from new facts | Open |
| 22 Oct 2026, 13:35 UTC | Chinorab | human | Merged fix merge request !9 | Open |
| 22 Oct 2026, 13:36 UTC | ci:case:sync | pipeline | Refreshed report drafts on !8 from new facts | Open |
| 22 Oct 2026, 13:49 UTC | ci:case:sync | pipeline | Refreshed report drafts on !8 from new facts | Open |
| 22 Oct 2026, 13:52 UTC | ci:case:sync | pipeline | Refreshed report drafts on !8 from new facts | Open |
| 22 Oct 2026, 13:56 UTC | Chinorab | human | Approved and started the production deployment | Open |
| 22 Oct 2026, 13:58 UTC | ci:deploy:production | pipeline | Corrective measure available in production; final report clock started | Open |
| 22 Oct 2026, 14:00 UTC | ci:release:create | pipeline | Created release v1.0.1 | Open |
| 22 Oct 2026, 14:00 UTC | ci:notify:release-notes | pipeline | Handed off to the release-notes flow (@ai-article-14-release-notes-gitlab-ai-hackathon) | Open |
| 22 Oct 2026, 14:02 UTC | ai-article-14-release-notes-gitlab-ai-hackathon | flow | Wrote release notes for v1.0.1 | Open |
| 22 Oct 2026, 14:05 UTC | ci:case:sync | pipeline | Refreshed report drafts on !8 from new facts | Open |
| 22 Oct 2026, 14:08 UTC | ci:case:sync | pipeline | Published release notes from ai-article-14-release-notes-gitlab-ai-hackathon on release v1.0.1 | Open |
| 22 Oct 2026, 14:08 UTC | ci:case:sync | pipeline | Refreshed report drafts on !8 from new facts | Open |
| 22 Oct 2026, 14:08 UTC | ci:case:sync | pipeline | Handed off to the cra-report flow (@ai-article-14-cra-report-gitlab-ai-hackathon) | Open |
| 22 Oct 2026, 14:10 UTC | ci:case:sync | pipeline | Refreshed report drafts on !8 from new facts | Open |
| 22 Oct 2026, 14:10 UTC | ai-article-14-cra-report-gitlab-ai-hackathon | flow | Proposed narrative fields for the A14-20261022-1 drafts | Open |
| 22 Oct 2026, 14:11 UTC | ci:case:sync | pipeline | Refreshed report drafts on !8 from new facts | Open |
| 22 Oct 2026, 14:13 UTC | Chinorab | human | Recorded userMeasures | Open |
| 22 Oct 2026, 14:21 UTC | Chinorab | human | Approved the report drafts on !8 | Open |
| 22 Oct 2026, 14:28 UTC | Chinorab | human | Recorded manual submission of the early-warning (drill, nothing was sent), reference DRILL-REF-EW | Open |
| 22 Oct 2026, 14:28 UTC | Chinorab | human | Recorded manual submission of the notification (drill, nothing was sent), reference DRILL-REF-NT | Open |
| 22 Oct 2026, 14:28 UTC | Chinorab | human | Recorded manual submission of the final-report (drill, nothing was sent), reference DRILL-REF-FR | Open |
| 22 Oct 2026, 14:29 UTC | ci:case:sync | pipeline | Posted the final recap and closed the case | Open |