Skip to content

CI: 🔒 Security Audit rot — js-yaml (high) + 17 moderate Findings #332

Closed

Description

@S540d

Kontext

Beim Merge von PR #331 (Issue #330, „Über"-Standard) lief der CI-Job 🔒 Security Audit (npm audit --audit-level=high) auf dem PR-Head rot. Das ist unabhängig von PR #331 — der Diff dort betraf nur Übersetzungen/Konstanten/SettingsModal.tsx, keine Dependencies. Der Fund gilt also für testing unabhängig von diesem PR und blockiert den CI-Gate (--audit-level=high) bei jedem künftigen PR gegen main.

Befund (npm audit --audit-level=high, Lauf vom 2026-09-16)

18 vulnerabilities (17 moderate, 1 high)

Paket Severity Fix Betroffen über
js-yaml 3.0.0–3.15.1 | 4.0.0–4.3.1 high npm audit fix (non-breaking) @eslint/eslintrc, eslint (Dev-Tooling)
decode-uri-component ≤0.4.2 moderate nur npm audit fix --force (breaking: expo-router@5.1.11) query-string → @react-navigation/core/expo-router
uuid <11.1.1 moderate nur npm audit fix --force (breaking: expo@46.0.21, Downgrade!) xcode → @expo/config-plugins → gesamte Expo-Toolchain

Das uuid-Finding ist bereits aus früheren Audits bekannt (siehe geschlossene Issues #190/#110/#55) — ein --force-Fix würde expo auf 46.0.21 downgraden, das ist keine echte Lösung. Neu und blockierend ist js-yaml (high), das den CI-Schwellenwert --audit-level=high erstmals seit Längerem tatsächlich reißt — und das mit einem nicht-breaking Fix.

Akzeptanzkriterien

  • npm audit fix (ohne --force) ausführen → behebt js-yaml (high), damit 🔒 Security Audit wieder grün
  • package-lock.json committen, npm run test:ci + Build lokal grün
  • Verbleibende decode-uri-component/uuid-Findings (moderate, nur via --force/Downgrade behebbar) im Issue dokumentieren und nicht blind forcen — analog zur Begründung in chore(security): npm audit fix — 15 Vulnerabilities (1 low, 14 moderate) #190
  • PR gegen testing

Bezug

Entdeckt im Rahmen von project-templates#150 / Issue #330 (PR #331, gemergt).

Activity

  1. S540d commented on Sep 18, 2026

    @S540d
    OwnerAuthor

    Fix lokal verifiziert — Push aus dieser Session nicht praktikabel

    Ich habe den vorgeschlagenen Fix real ausgeführt und verifiziert (nicht nur simuliert):

    # testing-Branch, package.json + package-lock.json 1:1 heruntergeladen (curl, raw.githubusercontent.com)
    npm audit --audit-level=high    # bestätigt: 18 vulnerabilities (17 moderate, 1 high) — deckt sich mit obigem Befund
    npm audit fix                    # ohne --force
    npm audit --audit-level=high    # → Exit-Code 0, nur noch 16 moderate (decode-uri-component, uuid — wie erwartet nur via --force behebbar, siehe Tabelle oben)

    Ergebnis: js-yaml wird konsistent auf die gepatchten Versionen gehoben:

    • node_modules/js-yaml (top-level, eslintrc-Kette): 3.13.1 → 3.15.2
    • node_modules/@eslint/eslintrc/node_modules/js-yaml, node_modules/@expo/xcpretty/node_modules/js-yaml, node_modules/eslint/node_modules/js-yaml: 4.3.1 → 4.3.2

    package.json bleibt unverändert (kein Versionsbereich geändert, reine Lockfile-Neuauflösung innerhalb der bestehenden Ranges). npm audit --audit-level=high läuft danach mit Exit-Code 0 — der CI-Job 🔒 Security Audit wäre damit grün.

    Warum ich den Fix nicht selbst als PR gepusht habe: npm audit fix regeneriert dabei nicht nur die drei js-yaml-Einträge, sondern npm löst dabei einen größeren Teilbaum um @expo/cli neu auf (harmlos, aber der resultierende Diff ist >900 Zeilen in einer 538 KB großen package-lock.json). Ohne lokalen git/gh-Zugriff kann ich in dieser Remote-Session Dateien nur über die GitHub-Contents-API einzeln mit vollständigem Inhalt schreiben — für eine Datei dieser Größe ist das über den verfügbaren Werkzeugsatz nicht mehr praktikabel/verlässlich umzusetzen (kein Diff-/Patch-Mechanismus verfügbar).

    Für dich lokal in 2 Minuten erledigt:

    git checkout testing && git pull
    npm audit fix
    npm run test:ci   # oder: npm test
    git add package-lock.json
    git commit -m "fix: npm audit fix behebt js-yaml (high) Security-Finding"
    git push

    Optional: npm run build:web zur Kontrolle, dass der Web-Export weiterhin durchläuft.

    Restliche 16 moderate Findings (decode-uri-component, uuid) bleiben wie in der Issue-Beschreibung dokumentiert offen — nur via --force behebbar, das würde expo-router/expo downgraden.


    Generated by Claude Code

  2. S540d commented on Sep 20, 2026

    @S540d
    OwnerAuthor

    Umgesetzt in #333, gemergt nach testing (09:20 Uhr). npm audit fix (ohne --force) behebt js-yaml (high) ohne Breaking Change. Verbleibende 16 moderate Findings (decode-uri-component, uuid) bewusst nicht gefixt — nur via --force/Downgrade lösbar, analog Begründung in #190. Verifiziert: npm audit --audit-level=high exit 0, alle CI-Checks grün, 453 Tests, Web-Build erfolgreich, zusätzlich funktional auf Web + echter Nexus-6-Hardware getestet.

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