Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
linux-entra-sso-PoC — PoC — Ursprungsvalidierungsfehler ermöglicht die Exfiltration von Entra ID PRT SSO-Cookies in linux-entra-sso (GHSA-g9vc-5j77-f2cm, CVE-2026-87005, CVSS 5.3). | Kitploit
Tools/GitHubGitHub/squeeze440/linux-entra-sso-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationInformationsbeschaffungWebsicherheitPenetrationstestsAuthentifizierungPapers & Forschung
GitHub
squeeze440/linux-entra-sso-poc

linux-entra-sso-PoC

PoC — Ursprungsvalidierungsfehler ermöglicht die Exfiltration von Entra ID PRT SSO-Cookies in linux-entra-sso (GHSA-g9vc-5j77-f2cm, CVE-2026-87005, CVSS 5.3).

Repository anzeigen
12vor 19 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Zusammenfassung

CVE-Status: beantragt, Zuweisung ausstehend. Dieser Fund wird als GHSA-g9vc-5j77-f2cm veröffentlicht. Bei der CVE-Zuweisung wird dieses Repository in CVE-YYYY-NNNNN-linux-entra-sso-PoC umbenannt und dieses Banner durch den CVE-Link ersetzt.

ForscherDostxodjayev Abdullox (@squeeze440)
AdvisoryGHSA-g9vc-5j77-f2cm
CVSS 3.15.3 (Mittel)
SchwachstelleCWE-346, CWE-20

Zusammenfassung

Platform.SSO_URL in linux-entra-sso fehlt ein abschließendes Pfadtrennzeichen, sodass die Firefox/Thunderbird-Schutzprüfung onBeforeSendHeaders (e.url.startsWith(Platform.SSO_URL)) durch jede vom Angreifer registrierte Domain der Form login.microsoftonline.com.<angreifer-domain> umgangen wird. Dadurch erwirbt und injiziert die Erweiterung ein aktives Entra ID Primary Refresh Token (PRT) SSO-Cookie in Anfragen, die an den eigenen Host des Angreifers gesendet werden.

Produkt

siemens/linux-entra-sso — Browser-Plugin für Linux zum SSO bei Microsoft Entra ID über den lokalen Microsoft Identity Broker (Intune). Der Firefox-Build ist praktisch ausnutzbar; Thunderbird teilt den identischen verwundbaren Codepfad, ist aber derzeit nicht über diesen Vektor erreichbar (siehe Details); Chrome/Chromium ist nicht betroffen (siehe Details).

Getestete Version

v1.10.0 (Commit 676854c, aktueller main-Stand vom 2026-08-03). Im aktuellen Release bestätigt vorhanden, d. h. nicht behoben durch GHSA-52rj-42vh-2rxc / CVE-2026-42177 (dieser Fix betraf nur den Chrome-declarativeNetRequest-Adapter).

Geschätzter CVSS v3.1

5.3 (Mittel) — CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:N/A:N

  • AC:H — die Ausnutzung erfordert, dass die Erweiterung eine gewährte Host-Berechtigung besitzt, die den vom Angreifer konstruierten Hostnamen abdeckt. In der Praxis muss der Angreifer das Opfer dazu bringen, auf der Seite des Angreifers auf den Link „Background SSO (enable)“ der Erweiterung zu klicken — eine Bedingung außerhalb der direkten Kontrolle des Angreifers, was der Komplexitätsbegründung des verwandten GHSA-52rj-42vh-2rxc entspricht.
  • UI:R — die Berechtigungserteilung ist ein expliziter Benutzerklick.
  • C:H — ein gestohlenes PRT SSO-Cookie ist direkt gegen login.microsoftonline.com wiederverwendbar, um Access-/ID-Token für jede App auszustellen, der das Opfer zugestimmt hat (vollständige SSO-Sitzungsübernahme).
  • I:N/A:N — der Fehler offenbart ein Credential, verändert aber selbst keine Daten und beeinträchtigt nicht die Verfügbarkeit.

Details

Ursache — src/platform.js:9:

static SSO_URL = "https://login.microsoftonline.com";

Kein abschließendes /.

Verwundbare Prüfung — platform/firefox/js/platform-firefox.js:55-59:

async #onBeforeSendHeaders(e) {
    // filter out requests that are not part of the OAuth2.0 flow
    if (!e.url.startsWith(Platform.SSO_URL)) {
        return { requestHeaders: e.requestHeaders };
    }
    ...

String.prototype.startsWith führt einen rohen Zeichenpräfix-Vergleich durch, keinen Hostnamen-/Origin-Vergleich. Da Platform.SSO_URL kein abschließendes Trennzeichen hat, erfüllt jede URL, deren Host login.microsoftonline.com.<irgendetwas> ist — ein syntaktisch gültiger DNS-Name, den der Angreifer vollständig kontrolliert — ebenfalls die Prüfung, z. B.:

"https://login.microsoftonline.com.attacker.example/phish".startsWith("https://login.microsoftonline.com")
=> true

Dies ist dieselbe Schutzprüfung, die die Beschreibung von GHSA-52rj-42vh-2rxc selbst als „the canonical defensive check ... absent from the Chrome adapter“ bezeichnete — sie existiert hier, ist aber selbst umgehbar, sodass der Fix des Advisories (der nur Chromes declarativeNetRequest-Regel gehärtet hat) diesen Pfad offen ließ. platform/thunderbird/js/platform-thunderbird.js erweitert PlatformFirefox, ohne update_request_handlers() oder #onBeforeSendHeaders zu überschreiben, sodass Thunderbird denselben Fehler erbt.

Auslösepfad (update_request_handlers, platform/firefox/js/platform-firefox.js:36-53): Der Listener wird mit urls: this.well_known_app_filters registriert, das aus chrome.permissions.getAll().origins (src/platform.js:78-79, update_host_permissions()) befüllt wird. Jede vom Benutzer gewährte Host-Berechtigung — einschließlich einer Einzelseiten-Gewährung über den Link „Background SSO (enable)“ im Popup (popup/menu.js:171-260, unter Verwendung von current_filter = "https://" + tab_hostname + "/*", abgeleitet aus dem aktiven Tab) — reicht aus, um den Listener für genau diesen Host zu registrieren. Es ist keine Catch-all-Berechtigung https://*/* erforderlich, anders als die in GHSA-52rj-42vh-2rxc beschriebene Ausnutzungsvoraussetzung; eine einzelne gezielte Gewährung auf der eigenen Look-alike-Domain des Angreifers genügt hier, was eine niedrigere Hürde als der PoC des vorherigen Advisories ist.

Sink — dieselbe Datei, Zeilen 60-70:

let prt = await this.#broker.acquirePrtSsoCookie(this.account, e.url);
ssoLog("inject PRT SSO into request headers");
e.requestHeaders.push({ name: prt.cookieName, value: prt.cookieContent });

e.url (die vollständige Angreifer-URL) wird direkt als ssoUrl an den nativen Broker durchgereicht. linux-entra-sso.py:27-30 dokumentiert, dass das Microsoft-Broker-Backend ssoUrl serverseitig nicht validiert („the correct value is not checked ... by the authorization backend“), sodass unabhängig davon ein Cookie ausgestellt und in die Header der Anfrage injiziert wird, die tatsächlich an den eigenen Host des Angreifers geht — eine direkte Exfiltration, nicht bloß ein Header auf einer an Microsoft gerichteten Anfrage.

Chrome ist nicht betroffen: platform/chrome/js/platform-chrome.js:96-99 (nach dem Fix für GHSA-52rj-42vh-2rxc, Commit 8183759) verankert mit "|" + Platform.SSO_URL + "/" (Anker am Stringanfang + abschließender Schrägstrich) und fügt eine explizite Allow-List requestDomains: [URL.parse(Platform.SSO_URL).hostname] hinzu — beides lehnt einen Host login.microsoftonline.com.attacker.example korrekt ab.

Thunderbird — derselbe verwundbare Code, derzeit nicht über diesen Vektor erreichbar: platform/thunderbird/js/platform-thunderbird.js erweitert PlatformFirefox unverändert, sodass die identische startsWith-Umgehung im Binary des Thunderbird-Builds existiert. Allerdings deklariert platform/thunderbird/manifest.json nur ein festes "host_permissions": ["https://login.microsoftonline.com/*"] mit keinem optional_host_permissions-Schlüssel. WebExtensions erlaubt chrome.permissions.request() nur, Origins zu gewähren, die vorab in optional_permissions/optional_host_permissions deklariert sind; da Thunderbird keine deklariert, kann der „Background SSO (enable)“-Ablauf im Popup (popup/menu.js:259-261) heute unter Thunderbird keine Berechtigung für eine vom Angreifer gewählte Domain erhalten. Der Fehler ist dort latent, derzeit nicht angreiferseitig erreichbar, und sollte dennoch behoben werden zur Defense-in-Depth / für den Fall, dass optional_host_permissions jemals zu diesem Manifest hinzugefügt wird.

Proof of Concept

Das verwundbare Prädikat wurde dynamisch gegen die tatsächlich ausgelieferte Konstante bestätigt (direkt aus src/platform.js des Ziels importiert, nicht manuell kopiert). Das Skript liegt unter ~/engagements/linux-entra-sso/evidence/prt_bypass_poc.mjs.

$ node prt_bypass_poc.mjs
Real Platform.SSO_URL from src/platform.js: "https://login.microsoftonline.com"

Legit MS URL passes filter (expected true): true
Attacker domain-suffix URL: https://login.microsoftonline.com.attacker.example/phish
Attacker URL passes filter (SHOULD be false, is): true
Tool herunterladen