fix(security): @tiptap 3.28.0 -> 3.31.3 (GHSA-j95f-988m-3j2f, unblocks nightly) - #133
Merged
Merged
Conversation
…s nightly) @tiptap/core 3.28.0 ist anfaellig fuer zwei quadratische ReDoS-Pfade in den Markdown-Attribut-Parsern (GHSA-j95f-988m-3j2f, HIGH, fixed in 3.30.5). Das Advisory wurde am 2026-09-09 veroeffentlicht — seitdem schlaegt der Nightly-Trivy-Gate (HIGH,CRITICAL) jede Nacht fehl, ohne dass sich am Repo etwas geaendert hat. Genau der Fall, fuer den der Nightly gebaut wurde. Dependabot konnte das nicht selbst beheben: @tiptap/core ist nur transitiv eingebunden, der Security-Update-Job darf aber nur direkte Dependencies anfassen ("A patched version exists for @tiptap/core, but the available update path still resolves it to 3.28.0", Run 34309953621). Daher die vier direkten @tiptap/*-Pakete gemeinsam auf 3.31.3 gehoben; damit loest der Lockfile @tiptap/core auf 3.31.3 auf. Der Lockfile-Teilbaum musste dafuer neu aufgeloest werden — npm blieb sonst mit ERESOLVE an der alten 3.28.0-Aufloesung haengen (@tiptap/pm ist exakt gepinnt). Diff beschraenkt sich auf die 29 @tiptap-Pakete + prosemirror-view; keine Pakete hinzugefuegt oder entfernt. Verifiziert: - trivy 0.70.0 fs --severity HIGH,CRITICAL: 0 Vulnerabilities, exit 0 (vorher: exit 1) - npm ci sauber, audit-gate.mjs ok - npm run build (tsc + vite) gruen - test:i18n 17/17, lint:i18n (scanner + en/de-parity) gruen RichTextEditor.tsx nutzt nur stabile APIs (useEditor, StarterKit, Link/Placeholder.configure, chain-Commands, setContent/getHTML) — die verwundbaren Markdown-Specs werden nicht verwendet. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UwUAJZAuHC2S7rkaEm9dgf
This was referenced Sep 12, 2026
WolfTasks
pushed a commit
that referenced
this pull request
Sep 12, 2026
Ships the @tiptap ReDoS fix: - @tiptap/core 3.28.0 -> 3.31.3 (#133), fixes GHSA-j95f-988m-3j2f (HIGH, two quadratic ReDoS paths in the markdown attribute parsers). The advisory was published on 2026-09-09 and broke the nightly Trivy gate every night since, against an unchanged repo. - Dependabot could not fix this itself: @tiptap/core is only a transitive dependency and its security job may only touch direct ones, so the four direct @tiptap/* packages were raised together. Trivy now reports 0 HIGH/CRITICAL across gradle.lockfile and package-lock.json; the nightly runs green on main again. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UwUAJZAuHC2S7rkaEm9dgf
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Der Nightly Security Scan schlägt seit dem 2026-09-09 jede Nacht fehl (letzter grüner Lauf: 2026-09-08) — ohne dass sich am Repo etwas geändert hat (HEAD steht seit 2026-09-06 auf
e2a8a9f).Ursache ist kein Workflow-Defekt, sondern ein echter Fund:
Zwei quadratische ReDoS-Pfade in den Markdown-Attribut-Parsern von
@tiptap/core. Das Advisory wurde am 2026-09-09 veröffentlicht — also genau der Fall, für den der Nightly existiert: neu offengelegte CVEs gegen unveränderte Dependencies.Warum Dependabot das nicht selbst gefixt hat
Der Dependabot-Security-Job ist am 2026-09-09 ebenfalls fehlgeschlagen (Run 34309953621):
@tiptap/coreist bei uns nur transitiv eingebunden, der Security-Job darf aber nur direkte Dependencies anfassen (allowed-updates: direct). Er kommt deshalb nicht an die Version heran.Fix
Die vier direkten
@tiptap/*-Pakete gemeinsam auf 3.31.3 gehoben, damit der Lockfile@tiptap/coreauf 3.31.3 auflöst:@tiptap/react@tiptap/starter-kit@tiptap/extension-link@tiptap/extension-placeholderGotcha: ein einfaches
npm installreicht hier nicht — npm bleibt mitERESOLVEan der alten 3.28.0-Auflösung hängen, weil@tiptap/pmvon den Peers exakt gepinnt wird und npm den Teilbaum aus dem Lockfile wiederverwendet. Der@tiptap-Teilbaum musste aus dem Lockfile entfernt und neu aufgelöst werden.Der Diff bleibt dabei sauber begrenzt: nur die 29
@tiptap-Pakete +prosemirror-view, keine Pakete hinzugefügt oder entfernt.Verifikation
trivy 0.70.0 fs --severity HIGH,CRITICALnpm ci.github/scripts/audit-gate.mjsnpm run build(tsc + vite)npm run test:i18nnpm run lint:i18nTrivy-Report nach dem Fix:
Risiko
@tiptapwird nur an einer Stelle verwendet:src/components/issue/RichTextEditor.tsx. Der Editor nutzt ausschließlich stabile Core-APIs (useEditor,StarterKit,Link/Placeholder.configure, chain-Commands,setContent/getHTML). Die verwundbaren Markdown-Specs (createBlockMarkdownSpec& Co.) werden nicht verwendet. Minor-Bump 3.28 → 3.31,tscist grün.👉 Manueller Check empfohlen: Rich-Text-Editor im Issue-Detail (fett/kursiv/Code/Listen, Speichern beim Blur).
Hinweise
Fixes #129
Fixes #130
Fixes #131
Fixes #132
🤖 Generated with Claude Code
https://claude.ai/code/session_01UwUAJZAuHC2S7rkaEm9dgf