SEKurity GmbH Logo
CVE-Forschung

InSEKurity of the Week (CW03/2026): Node.js node-tar Path Traversal (CVE-2026-23745)

Kritische Path-Traversal-Schwachstelle in node-tar ermöglicht das Überschreiben beliebiger Dateien durch manipulierte Hardlinks und Symlinks in TAR-Archiven

SEKurity Team

Offensive Security Experten

6 Min. Lesezeit
Teilen:

Diese Woche in unserer InSEKurity of the Week Serie: Eine kritische Schwachstelle im weit verbreiteten Node.js-Package node-tar, die die gesamte JavaScript-Ökosystem betrifft.

🚨 Zusammenfassung

  • CVE-ID: CVE-2026-23745
  • EUVD-ID: EUVD-2026-2909
  • CVSS 4.0 Score: 8.2 (High)
  • CWE: CWE-22 (Path Traversal)
  • GitHub Advisory: GHSA-8qq5-rm4j-mr97
  • Betroffene Software: node-tar <= 7.5.2
  • Angriffsvektor: Netzwerk (Unauthenticated Remote Attack)
  • Authentifizierung erforderlich: Keine
  • Auswirkung: Arbitrary File Overwrite, potenzielle Remote Code Execution
  • Patch-Status: ✅ Verfügbar (Version 7.5.3)
  • Veröffentlichung: 16. Januar 2026

📦 Was ist node-tar?

node-tar ist ein fundamentales npm-Package zum Extrahieren und Erstellen von TAR-Archiven in Node.js. Es wird von Millionen von Projekten weltweit verwendet und ist eine kritische Komponente in der JavaScript/Node.js-Infrastruktur. Das Package findet sich in Build-Pipelines, Package-Managern, Deployment-Tools und zahllosen Produktionsanwendungen.

Die massive Verbreitung macht diese Schwachstelle zu einem Supply-Chain-Risiko ersten Ranges.

🔍 Technische Analyse

Beschreibung der Schwachstelle

node-tar <= 7.5.2 versäumt es, die linkpath-Werte von Hardlinks und Symbolic Links in TAR-Archiven korrekt zu validieren, selbst wenn preservePaths auf false gesetzt ist (die sichere Standardeinstellung).

Ein Angreifer kann ein speziell präpariertes TAR-Archiv erstellen, das Hardlinks oder Symlinks mit absoluten Pfaden enthält (z.B. /etc/passwd, /root/.ssh/authorized_keys). Beim Extrahieren ignoriert node-tar das vorgesehene Zielverzeichnis und erstellt diese Links bzw. überschreibt die Zieldateien außerhalb des Extraction-Roots.

Ursachenanalyse

Das Problem liegt in der unzureichenden Validierung von Link-Targets:

  1. Fehlende Pfad-Normalisierung: Die Library prüft nicht, ob Link-Targets absolute Pfade enthalten
  2. Bypass der preservePaths-Sicherheit: Obwohl preservePaths: false eigentlich absolute Pfade verhindern soll, greift dieser Schutz nicht für Link-Einträge
  3. Trust in Archive-Metadaten: Die Library vertraut blind auf die Pfadangaben im TAR-Header

Angriffsvektor

Ein typischer Angriff läuft wie folgt ab:

# Schritt 1: Angreifer erstellt ein manipuliertes TAR-Archiv
# Das Archiv enthält einen Hardlink mit absolutem Pfad
tar -cf malicious.tar --hard-dereference /tmp/payload
# Manipuliere TAR-Header, um Link-Target auf /etc/cron.d/backdoor zu setzen

# Schritt 2: Opfer extrahiert das Archiv
# node-tar überschreibt /etc/cron.d/backdoor statt im Zielverzeichnis zu bleiben
node -e "require('tar').extract({file: 'malicious.tar', cwd: './safe-dir'})"

Konkrete Ausnutzungsszenarien:

  1. Config-File-Manipulation: Überschreiben von .bashrc, .ssh/authorized_keys, oder systemweiten Konfigurationsdateien
  2. Cron-Job-Injection: Platzierung von Backdoors in /etc/cron.d/
  3. Shared-Library-Hijacking: Überschreiben von Libraries in /usr/lib/
  4. Supply-Chain-Angriffe: Kompromittierung von CI/CD-Pipelines, die TAR-Archive aus untrusted Sources verarbeiten

⚠️ Folgenabschätzung

Unmittelbare Auswirkung

  • Arbitrary File Overwrite: Jede vom extrahierenden Prozess beschreibbare Datei kann überschrieben werden
  • Privilege Escalation: Bei Extraktion mit erhöhten Rechten (z.B. in Containern, CI/CD) können kritische Systemdateien modifiziert werden
  • Remote Code Execution: Durch Manipulation von Startup-Skripten, Cron-Jobs oder Library-Pfaden

Betroffene Umgebungen

Besonders gefährdet sind:

  • CI/CD-Pipelines: Die automatisch TAR-Archive aus Git-Repositories oder Artifact-Stores verarbeiten
  • Package-Manager: npm, yarn und pnpm verwenden intern TAR-Operationen
  • Build-Systeme: Webpack, Rollup, Vite mit TAR-basierten Plugins
  • Container-Build-Prozesse: Docker/Podman Layer-Extraktion
  • Deployment-Tools: Automatische Extraktion von Release-Artifacts
  • Backup-Restore-Mechanismen: Automatische TAR-Extraktion

Langfristige Konsequenzen

  • Supply-Chain-Kompromittierung: Einmal kompromittierte Build-Systeme können weitere Pakete infizieren
  • Vertrauensverlust: Erschütterung des Vertrauens in npm-Ökosystem-Sicherheit
  • Compliance-Verstöße: DSGVO, NIS2, Cyber Resilience Act
  • Reputationsschäden: Insbesondere für SaaS-Anbieter und Plattform-Betreiber

🛡️ Mitigationsstrategien

Sofortmaßnahmen (Priorität 1) ⚡

  1. Update auf Version 7.5.3:

    npm update tar
    # Oder explizit:
    npm install tar@7.5.3
  2. Lockfile neu generieren:

    # npm
    rm package-lock.json && npm install
    
    # yarn
    rm yarn.lock && yarn install
    
    # pnpm
    rm pnpm-lock.yaml && pnpm install
  3. Transitive Dependencies prüfen:

    npm ls tar
    # Prüfen, ob Sub-Dependencies noch alte Versionen verwenden
  4. CI/CD-Pipelines auditieren:

    npm audit
    # Prüfung auf bekannte Schwachstellen

Detektionsmaßnahmen 🔍

# Prüfen, ob vulnerable Version installiert ist
npm ls tar | grep -E "tar@[0-7]\.[0-5]\.[0-2]"

# System auf verdächtige Dateiänderungen prüfen
find /etc /root ~/.ssh -type f -mtime -7 -ls

# Logs auf TAR-Extraktion außerhalb erwarteter Pfade prüfen
grep -r "EACCES\|Permission denied" /var/log/

Temporäre Workarounds

Falls ein sofortiges Update nicht möglich ist:

  1. Eingabe-Validierung:

    // TAR-Archive nur aus trusted Sources akzeptieren
    const trustedSources = ['internal-registry.company.com'];
    if (!trustedSources.includes(archiveSource)) {
        throw new Error('Untrusted archive source');
    }
  2. Sandbox-Extraktion:

    // Extraktion in isoliertem Container/VM
    const { spawn } = require('child_process');
    spawn('docker', ['run', '--rm', '-v', './archives:/data',
                     'node:alpine', 'tar', '-xf', '/data/archive.tar']);
  3. Filesystem-Monitoring:

    // inotify/fsevents nutzen, um unerwartete Dateiänderungen zu detektieren
    const chokidar = require('chokidar');
    chokidar.watch('/etc', { ignoreInitial: true })
            .on('all', (event, path) => {
                console.warn(`Unexpected change: ${event} on ${path}`);
            });

Langfristige Sicherheitsverbesserungen

  1. Dependency-Scanning: Integration von npm audit, Snyk, oder Dependabot in CI/CD
  2. Least Privilege: TAR-Extraktion mit minimalen Rechten durchführen
  3. Content Security: TAR-Archive nur aus verifizierten, signierten Quellen akzeptieren
  4. Network Segmentation: Build-Systeme von Produktionsumgebungen isolieren

🔐 Best Practices für Node.js-Sicherheit

Für Entwickler

  • Dependency-Updates automatisieren: Renovate Bot, Dependabot
  • Lock-Files committen: Garantiert reproduzierbare Builds
  • Audit regelmäßig durchführen: npm audit in Pre-Commit-Hooks
  • SBOM generieren: Software Bill of Materials für Transparenz

Für Organisationen

  • Supply-Chain-Security-Policy: Richtlinien für Dependency-Management
  • Private npm Registry: Kontrolle über verwendete Packages
  • Security Champions: Dedizierte Ansprechpartner für Security-Themen
  • Incident Response Plan: Vorbereitung auf Supply-Chain-Kompromittierung

📊 Betroffene Versionen und Erkennung

Anfällige Versionen

  • node-tar: Alle Versionen <= 7.5.2
  • Kritische Versionsrange: 0.0.0 - 7.5.2
  • Sichere Version: >= 7.5.3

Automatische Erkennung

#!/bin/bash
# Scan-Skript für anfällige node-tar-Installationen

echo "Scanning for vulnerable node-tar installations..."

# Alle Node-Projekte finden
find /var/www /home -name "package.json" 2>/dev/null | while read pkg; do
    dir=$(dirname "$pkg")
    echo "Checking: $dir"

    cd "$dir"
    if [ -f "package-lock.json" ] || [ -f "node_modules/tar/package.json" ]; then
        npm ls tar 2>/dev/null | grep -E "tar@[0-7]\.[0-5]\.[0-2]" && \
            echo "⚠️  VULNERABLE: $dir"
    fi
done

🎯 Warum ist das kritisch?

  1. Ubiquität: node-tar ist in nahezu jedem Node.js-Projekt als direkte oder transitive Dependency vorhanden
  2. Unauthenticated Remote Attack: Kein Login erforderlich – jeder, der ein TAR-Archiv einschleusen kann, kann angreifen
  3. Supply-Chain-Vektor: Ein kompromittierter Build kann Tausende Downstream-Projekte infizieren
  4. Silent Exploitation: Angriffe hinterlassen minimal Spuren und sind schwer zu detektieren
  5. PoC verfügbar: Öffentliche Exploits erhöhen das Risiko aktiver Ausnutzung

🚀 Zeitplan und Offenlegung

  • Entdeckungsdatum: Unbekannt (vermutlich Januar 2026)
  • Patch-Veröffentlichung: 13. Januar 2026 (node-tar 7.5.3)
  • CVE-Zuweisung: CVE-2026-23745
  • Öffentliche Offenlegung: 16. Januar 2026 (NVD-Veröffentlichung)
  • Debian Security Tracker: 17. Januar 2026

🔗 Ressourcen und Referenzen

💼 SEKurity unterstützt Sie

Diese Schwachstelle zeigt eindrucksvoll, wie tief verankerte Dependencies zu kritischen Sicherheitsproblemen führen können. Ein einzelnes anfälliges Package kann Ihre gesamte Infrastruktur gefährden.

Unsere Leistungen

  • Penetrationstests: Web-Anwendungen, Mobile Apps (Android & iOS), SAP-Systeme, Active Directory
  • Großflächige Angriffe: Perimeter-Tests, IT-Infrastruktur-Tests, Red Team Engagements
  • Security Awareness: Phishing-Kampagnen, Hacking-Demonstrationen

Handeln Sie jetzt – bevor Angreifer es tun.


Kontakt:

🌐 Webseite: www.sekurity.de

📧 Anfragen: www.sekurity.de/kontakt

📱 LinkedIn: SEKurity GmbH


Ihr SEKurity Team – Your Trusted Adversaries

Die Sicherheit Ihrer Supply Chain ist unser Antrieb.


Quellen

Über den Autor

SEKurity Team

Offensive Security Experten

Das SEKurity GmbH Team besteht aus erfahrenen Penetrationstestern, Security-Forschern und Cybersecurity-Beratern. Unter dem Motto 'Your Trusted Adversaries' unterstützen wir Organisationen dabei, ihre IT-Sicherheit aus der Perspektive eines Angreifers zu bewerten und zu verbessern.