Skip to content

chore: Dev-Toolchain-Major-Upgrade wegen brace-expansion-Security-Advisory (CI Security Audit rot) #298

Closed as not planned

Description

@S540d

Kontext

Bei einem Codepflege-Check (PR #297) festgestellt: npm audit --audit-level=high liefert aktuell 44 High- + 9 Moderate-Findings (Stand 2026-07-29) und schaltet den CI-Job „🔒 Security Audit“ rot — vorbestehend auf testing, nicht durch PR #297 verursacht.

Ursache

Neue Advisory GHSA-mh99-v99m-4gvg (brace-expansion: DoS via unbounded expansion length) betrifft praktisch alle brace-expansion-Versionen <=5.0.7 — gefixt erst ab 5.0.8. Kaskadiert über minimatch/glob durch fast die gesamte Dev-Toolchain: eslint, jest/jest-expo, @expo/cli, @react-native/codegen, babel-preset-expo u.a.

Reines Dev-Dependency-Problem, keine Runtime-Exposition (betroffene Pakete werden nicht in die App gebündelt).

Warum kein Klein-Fix

Versucht: overrides.brace-expansion: "^5.0.8" in package.json gesetzt → bricht ESLint sofort:

TypeError: expand is not a function
  at Minimatch.braceExpand (node_modules/eslint/node_modules/minimatch/minimatch.js:271:10)

brace-expansion@5.x ist kein API-kompatibler Drop-in-Ersatz für die von minimatch@3.x/9.x erwartete CJS-Signatur (Default-Export als aufrufbare Funktion). npm audit fix --force schlägt entsprechend ein Major-Upgrade vor (u.a. eslint@10.8.0).

Aufgabe

  • ESLint 8 → 9/10 Migration (Flat-Config-Änderungen prüfen, eslint-plugin-react-hooks-Kompatibilität)
  • Jest/jest-expo-Kette auf Versionen heben, die eine gefixte brace-expansion-Kette mitbringen
  • Nach Upgrade: npm audit --audit-level=high muss wieder grün sein
  • Volle Testsuite + Lint + tsc --noEmit grün
  • Isolierter Release-Zyklus, nicht mit einem Feature-PR vermischen (analog Vorgehen in chore: verbleibende expo-Modul-Versionen auf SDK-55-Sollstand ziehen #276)

Verwandt

Activity

  1. S540d commented on Oct 4, 2026

    @S540d
    OwnerAuthor

    Veraltet: brace-expansion taucht im aktuellen npm audit nicht mehr auf. Die verbleibenden hohen Findings (node-forge, braces) haben keinen Upstream-Fix und werden über das Audit-Gate mit befristeter Allowlist (PR #351) abgefangen; Tracking in #348 und S540d/project-templates#168.

    🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions