Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-42089 — Ein lokales Paketinstallationsprogramm vertraute vom Aufrufer gelieferten Paketnamen zu sehr. In yeoman-environment konnten fehlende Generatoren ohne Benutzerbestätigung installiert werden, wodurch vom Angreifer kontrollierte Projektmetadaten zu einem Paketinstallations- und Codeausführungspfad wurden. | Kitploit
Tools/GitHubGitHub/0xmrma/cve-2026-42089
SchwachstellenanalyseCode-AnalyseExploitationLieferkettensicherheitPapers & ForschungLernen & Bildung
GitHub0xmrma/cve-2026-42089

CVE-2026-42089

Repository anzeigen
11vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

Über

Ein lokales Paketinstallationsprogramm vertraute vom Aufrufer gelieferten Paketnamen zu sehr. In yeoman-environment konnten fehlende Generatoren ohne Benutzerbestätigung installiert werden, wodurch vom Angreifer kontrollierte Projektmetadaten zu einem Paketinstallations- und Codeausführungspfad wurden.

Teilen

CVE-2026-42089

Ein lokaler Paketinstallationshelfer vertraute zu sehr auf vom Aufrufer bereitgestellte Paketnamen. In yeoman-environment konnten fehlende Generatoren ohne Benutzerbestätigung installiert werden, wodurch vom Angreifer kontrollierte Projektmetadaten zu einem Paketinstallations- und Codeausführungspfad wurden.

Einleitung

Ich stieß auf dieses Problem, während ich generator-jhipster mit einer einfachen Sicherheitsfrage überprüfte:

Kann vom Angreifer kontrollierte Projektmetadaten ein Entwicklerwerkzeug dazu bringen, Drittanbieter-Code abzurufen und auszuführen, bevor der Benutzer explizit danach gefragt hat?

In diesem Fall lautete die Antwort ja.

Was zunächst wie ein JHipster-Problem aussah, entpuppte sich als tiefer liegende Ursache in yeoman-environment.

Das angreifbare Verhalten befand sich in Yeomans lokalem Generator-Installationsablauf, bei dem fehlende, vom Aufrufer bereitgestellte Pakete ohne Benutzerbestätigung automatisch installiert wurden. Bei einem nachgelagerten Verbraucher, der vom Angreifer kontrollierte Paketnamen in diesen Pfad einspeiste, reichte dies aus, um eine echte Paketinstallations- und Codeausführungskette zu erzeugen.

Dieses Problem wurde zu CVE-2026-42089.

yeoman-environment: yeoman-environment on GitHub
Package: yeoman-environment (npm)
CVE: CVE-2026-42089

Dies betraf yeoman-environment, die Laufzeitschicht hinter Yeomans Generator-Lade- und Bootstrap-Ablauf. Das offizielle Projekt beschreibt es als die Komponente, die den Generator-Lebenszyklus und die Erkennung verwaltet, und zum June 26, 2026 verzeichnete die npm-Paketseite 1,466,426 wöchentliche Downloads, was dies zu einem weit verbreiteten Paket im JavaScript-Tooling-Ökosystem macht.

photo0

Angriffskette

vom Angreifer kontrollierte Projektkonfiguration -> vom Aufrufer bereitgestellte Generator-Paketnamen -> yeoman-environment installiert fehlende Pakete stillschweigend -> nachgelagertes Tool lädt installierten Generatorcode -> Paketinstallation und Codeausführung während des CLI-Bootstraps


Was yeoman-environment tut

yeoman-environment ist die Laufzeit- und Generator-Ladeschicht hinter Yeoman-basierten Werkzeugen.

Unter anderem übernimmt es:

  • Generatorsuche
  • lokale Repository-Verwaltung
  • Paketinstallation für fehlende Generatoren
  • Registrierung und Laden von Generatoren

Das bedeutet, dass es direkt auf einer Vertrauensgrenze sitzt.

Die relevante Frage ist nicht, ob Yeoman "nur ein lokales Werkzeug" ist.

Die relevante Frage ist, ob nicht vertrauenswürdige Eingaben das Paketinstallations- und Ladeverhalten beeinflussen können.

In diesem Fall war das möglich.


Warum diese Angriffsfläche einen Blick wert war

Ich suchte hier nicht nach Speicherkorruption oder reinen Absturzfehlern.

Das stärkere Ziel war die Erweiterungs- und Paketauflösungsoberfläche.

Jedes System, das:

  • Paketnamen von einer anderen Schicht akzeptiert,
  • sie automatisch installiert,
  • und dann zum Laden verfügbar macht

verdient eine genaue Prüfung.

Das gilt besonders dann, wenn der nachgelagerte Verbraucher diese Paketnamen aus projektspezifischen Daten ableiten kann.

Genau das ist die Art von Stelle, an der gewöhnliche Konfiguration leise zu einer Sicherheitsgrenze werden kann.

Das war der richtige Ort zum Suchen.


Die Grenze, auf die ich mich konzentrierte

Ich reproduzierte das Verhalten zunächst über generator-jhipster.

Der wichtige Pfad war:

  • eine projektspezifische .yo-rc.json deklariert ein Blueprint-Paket
  • JHipster liest diesen Blueprint-Eintrag während des CLI-Bootstraps
  • fehlende Blueprint-Pakete werden in Yeomans Installationspfad übergeben
  • Yeoman installiert sie stillschweigend
  • die nachgelagerte Logik importiert dann Blueprint-CLI-Module

Das bedeutete, dass selbst ein harmloser Befehl wie:

jhipster --help

die Paketinstallation erreichen konnte, bevor der angeforderte Befehl abgeschlossen war.

Das ist ein echtes Vertrauensgrenzenversagen.

Der nachgelagerte Auslöser half, es aufzudecken, aber das unsichere Standardverhalten lag bei Yeoman.


Grundursache

Der Fehler war einfach.

In yeoman-environment war die angreifbare Methode:

async installLocalGenerators(packages) {
    const entries = Object.entries(packages);
    const specs = entries.map(([packageName, version]) => `${packageName}${version ? `@${version}` : ''}`);
    const installResult = await this.repository.install(specs);
    const failToInstall = installResult.find(result => !result.path);
    if (failToInstall) {
        throw new Error(`Fail to install ${failToInstall.pkgid}`);
    }
    await this.lookup({ packagePaths: installResult.map(result => result.path) });
    return true;
}

Diese Methode installierte vom Aufrufer bereitgestellte Paketnamen direkt über:

this.repository.install(specs)

ohne vorherige Rückfrage beim Benutzer.

Das ist die Kernschwachstelle.

Warum dies ausnutzbar ist

Weil die Paketnamen nicht von einer vertrauenswürdigen Quelle stammen müssen.

Wenn ein nachgelagerter Verbraucher sie aus vom Angreifer kontrollierten Projektmetadaten ableitet, dann ist die Ausnutzungskette einfach:

  • der Angreifer kontrolliert Paketnamen indirekt
  • das nachgelagerte Werkzeug übergibt sie an Yeoman
  • Yeoman installiert sie stillschweigend
  • der nachgelagerte Code fährt mit dem neu installierten Paket fort, das zum Laden verfügbar ist

Das ist nicht nur "Paketinstallation fand statt."

Das ist nicht vertrauenswürdige Eingabe, die ohne explizite Zustimmungsgrenze in eine Paketinstallationssenke gelangt.


Was dies zu einem Sicherheitsproblem macht, nicht nur zu einem Tooling-Verhalten

Der wichtige Unterschied ist die stillschweigende Installation aus nicht vertrauenswürdiger Eingabe.

Es gibt einen echten Unterschied zwischen:

  • einem Benutzer, der explizit beschließt, ein Paket zu installieren, und
  • einem Framework, das stillschweigend ein Paket installiert, weil projektspezifische Daten einen Aufrufer dazu veranlasst haben, danach zu fragen

Diese Unterscheidung ist noch wichtiger, wenn das Paket unmittelbar danach ladbar wird.

Das Problem war nicht, dass Drittanbieter-Generatoren existieren.

Das Problem war, dass Yeoman vom Aufrufer bereitgestellte Paketnamen standardmäßig ohne Benutzerbestätigung als installierbar behandelte.

Das verschlimmert unsichere nachgelagerte Vertrauensannahmen erheblich.

Genau deshalb fügte der Fix ein Bestätigungsgate hinzu.


PoC

Ich verwendete zwei Beweisebenen, weil sie sowohl die Grundursache als auch die tatsächlichen nachgelagerten Auswirkungen demonstrierten.

PoC 1: unveränderter nachgelagerter Auslöser

Der erste Beweis verwendete unverändertes generator-jhipster.

Ich erstellte ein Projekt mit einer .yo-rc.json im Stammverzeichnis, die auf ein noch nicht installiertes Blueprint-Paket verwies, und führte dann aus:

jhipster --help

Das führte dazu, dass JHipster das fehlende Blueprint an Yeomans lokalen Generator-Installationsablauf übergab, bevor die Hilfe abgeschlossen war.

Das wichtige Ergebnis war:

  • ein harmlos aussehender Befehl erreichte Paketauflösungs- und Installationsverhalten
  • die projektspezifischen Metadaten reichten aus, um den Installationspfad auszulösen

Das stellte die tatsächliche Auslösebedingung klar fest.

PoC 2: kontrollierter Paketausführungspfad

Der zweite Beweis verwendete eine kontrollierte lokale Registry und ein Paket, das dazu entwickelt wurde, Importzeit-Seiteneffekte sicher zu demonstrieren.

Das war wichtig, weil ich die stärkere Geschichte zeigen wollte:

Tool herunterladen