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

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-26897-EcoOnline-DeepLink — Öffentliches Advisory & PoC für CVE-2026-26897 — Deep-Link-Bypass in EcoOnline EHS Android (com.airsweb.v10), behoben in 0.2.500 | Kitploit
Tools/GitHubGitHub/iwallplace/cve-2026-26897-ecoonline-deeplink
Android-SicherheitSchwachstellenanalyseExploitationWebanwendungs-ExploitationPhishingPenetrationstestsMobile SicherheitLernen & Bildung

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHub
iwallplace/cve-2026-26897-ecoonline-deeplink

CVE-2026-26897-EcoOnline-DeepLink

Öffentliches Advisory & PoC für CVE-2026-26897 — Deep-Link-Bypass in EcoOnline EHS Android (com.airsweb.v10), behoben in 0.2.500

Repository anzeigen
2vor 3 MonatenNoch nicht geprüft

EcoOnline EHS (Android) — Umgehung der Deep-Link-Validierung → WebView Open Redirect (CVE-2026-26897)

Öffentliche Offenlegung / Advisory für CVE-2026-26897, eine Umgehung der Deep-Link-Validierung in der Android-Anwendung EcoOnline EHS (com.airsweb.v10). Ein manipulierter ehs-app://-Deep-Link wird zu https:// umgeschrieben und direkt in das Haupt-WebView der App geladen, ohne die Host-Allowlist-Prüfung, die die App bei jedem anderen Navigationspfad anwendet. Dadurch kann ein entfernter Angreifer beliebige, vom Angreifer kontrollierte Inhalte innerhalb der vertrauenswürdigen Anwendung rendern (Phishing).

Verantwortungsvoll offengelegt, vom Hersteller bestätigt und in Version 0.2.500 behoben.

✅ Status: BEHOBEN

  • Analysierte verwundbare Version: com.airsweb.v10 0.2.499 (versionCode 44631)
  • Behobene Version: 0.2.500 (live bei Google Play)
  • Handlungsempfehlung für Benutzer: Aktualisieren Sie die EcoOnline-EHS-App auf die neueste Version.

Betroffene Binärdatei (zur Überprüfung)

Die Anwendung des Herstellers ist proprietär und wird in diesem Repository nicht weitergegeben. Die folgende statische Analyse wurde an dem hier angegebenen Build durchgeführt. Besorgen Sie die genaue APK aus einem Archiv (z. B. APKPure-Versionsverlauf) und überprüfen Sie vor der Reproduktion deren Hash:

Paketcom.airsweb.v10
versionName / versionCode0.2.499 / 44631

Zusammenfassung

Beschreibung

EcoOnline EHS für Android ist ein Jetpack-Compose-WebView-Wrapper um die EHS-Webplattform. Der Standardinhalt wird von folgender URL geladen:

root@kitploit:~
startUrl = "https://ehsmobilelanding.ecoonline.net/"

Die App exportiert eine einzelne Activity (MainActivity), die sowohl der Launcher als auch der Handler für das benutzerdefinierte URL-Schema ehs-app ist. Das <data>-Element des Deep-Link-intent-filter deklariert nur ein Schema — keinen Host und keinen Pfad — daher wird jede ehs-app://…-URI an die App weitergeleitet.

Um die WebView-Navigation zu schützen, implementiert die App eine Host-Allowlist (isInternalHost) und wendet sie beim Wiederherstellen der zuletzt besuchten URL an. Allerdings ruft der Deep-Link-Behandlungszweig diese Allowlist überhaupt nicht auf. Er nimmt die eingehende Deep-Link-URI, führt eine naive Zeichenkettenersetzung des Schemas ehs-app: → https: durch und ruft WebView.loadUrl() mit dem Ergebnis auf. Ein entfernter Angreifer kann daher einen Deep-Link konstruieren, der die vertrauenswürdige App dazu bringt, eine beliebige https://-Origin zu laden.

Betroffene Komponente

AndroidManifest.xml (v0.2.499) — exportierter Deep-Link (nur Schema)

root@kitploit:~
<activity
    android:name="com.airsweb.v10.MainActivity"
    android:exported="true" ... >
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:scheme="ehs-app"/>   <!-- scheme only: no host, no path -->
    </intent-filter>
</activity>

Grundursache — Deep-Link-Zweig in MainActivityKt.WebViewPage (dekompiliert, v0.2.499)

root@kitploit:~
// intent delivered to the exported MainActivity
if (intent.getScheme().equals("ehs-app")) {
    WebView webView = ...;
    if (webView != null) {
        Uri data = intent.getData();                       // full ehs-app://… URI
        String s = String.valueOf(data);
        // naïve scheme rewrite: "ehs-app:" -> "https:"
        String url = StringsKt.replaceFirst(s, "ehs-app:", "https:", false, 4, null);
        webView.loadUrl(url);                              // <-- NO isInternalHost() CHECK
    }
}

Die Allowlist, die dieser Pfad nicht anwendet (sie wird an anderer Stelle in derselben Datei verwendet):

root@kitploit:~
private static final Regex internalDomains =
        new Regex("^[-\\w]*\\.(airsweb)|(ecoonline)\\.net");
private static final List<String> excludeDomainsStartingWith =
        listOf("passport", "login", "auth");

public static boolean isInternalHost(String host) {
    for (String p : excludeDomainsStartingWith)
        if (host.startsWith(p)) return false;
    return internalDomains.containsMatchIn(host);
}

Sekundäre Anmerkung: Der reguläre Ausdruck internalDomains ist selbst schwach (fehlerhafte Alternation + Substring-Abgleich via containsMatchIn), aber das Hauptproblem ist, dass der Deep-Link-Zweig isInternalHost überhaupt nie aufruft.

Proof of Concept

Ein PoC als Bildschirmaufnahme wurde am 2026-01-13 gegen com.airsweb.v10 0.2.499 erstellt.

  1. Installieren Sie die betroffene Version (0.2.499) auf einem Android-Gerät.
  2. Übermitteln Sie dem Opfer einen manipulierten Deep-Link (z. B. per E-Mail, SMS, Chat, QR-Code oder über eine Webseite):
    root@kitploit:~
    ehs-app://attacker.example/login
    
  3. Wenn das Opfer ihn öffnet, schreibt MainActivity das Schema um und das WebView lädt:
    root@kitploit:~
    https://attacker.example/login
    
    innerhalb der vertrauenswürdigen EcoOnline-EHS-App — es wird keine Allowlist-Prüfung durchgeführt.
  4. Die Angreiferseite wird mit dem Aussehen und der Benutzeroberfläche der legitimen App gerendert und kann beispielsweise ein gefälschtes EHS-Login anzeigen, um Anmeldedaten zu erbeuten.

Eine harmlose Demonstration ohne Datenerfassung der Weiterleitung ist in poc/redirect-proof.html enthalten (Verwendung: poc/README.md). Sie beweist, dass eine beliebige Origin innerhalb der vertrauenswürdigen App geladen wird — ohne Eingaben, ohne Erfassung von Anmeldedaten und ohne Netzwerkanfragen.

Im ursprünglichen PoC hostete der Forscher eine harmlose, nachempfundene Landingpage ausschließlich zur Demonstration der Weiterleitung. Dieses Advisory dokumentiert die Schwachstelle zu defensiven Zwecken / Offenlegungszwecken und enthält absichtlich keine Phishing-Seite und keinen Code zur Erfassung von Anmeldedaten.

Auswirkung

  • Lädt beliebige, vom Angreifer kontrollierte https://-Inhalte im Kontext der vertrauenswürdigen Anwendung.
  • Phishing / Diebstahl von Anmeldedaten über eine Login-Aufforderung, die den Anschein erweckt, von der echten App zu stammen.
  • UI-Spoofing und allgemeine Aufwertung von Social-Engineering-Angriffen (die bösartige Seite erbt das Vertrauen der App).

CVSS v3.1 (Schätzung des Forschers — vor Veröffentlichung finalisieren): AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N → 6.3 (Mittel) (ein Scope:Changed-Argument ist vertretbar, da nicht vertrauenswürdige Inhalte im Kontext der vertrauenswürdigen App ausgeführt werden).

Behebung

Aktualisieren Sie auf com.airsweb.v10 0.2.500 oder neuer. Empfohlene Korrekturen:

  • Wenden Sie isInternalHost() (oder eine gleichwertige Allowlist) auf Deep-Link-URLs an, bevor loadUrl() aufgerufen wird.
  • Leiten Sie die zu ladende URL nicht durch blindes Umschreiben des Schemas ab; validieren Sie Schema und Host.
  • Schränken Sie den Deep-Link-intent-filter mit einem expliziten android:host/android:pathPrefix ein.
  • Stärken Sie den regulären Ausdruck internalDomains (Host vollständig verankern; Substring-Abgleich vermeiden).

Offenlegungszeitplan

Referenzen

  • CVE-2026-26897 (MITRE-CVE-Eintrag)
  • EcoOnline EHS bei Google Play — https://play.google.com/store/apps/details?id=com.airsweb.v10
  • Hersteller — https://www.ecoonline.com/

Danksagung

Entdeckt und gemeldet von Ahmet Mersin — GitHub @iwallplace, HackerOne iwallplace.

Tool herunterladen
SHA-256
e9e8a38d133cb9da9901caf03c4a7a033c75ad1f32ba0539260e47d5dd5068c0
QuelleAPKPure — „EcoOnline EHS" Versionsverlauf
FeldWert
CVE-IDCVE-2026-26897
HerstellerEcoOnline („EcoOnline Global") — https://www.ecoonline.com/
ProduktEcoOnline EHS für Android (com.airsweb.v10)
Betroffene Version0.2.499 (versionCode 44631)
Behobene Version0.2.500
SchwachstellentypFehlerhafte Validierung in einem Handler für ein benutzerdefiniertes URL-Schema (Deep-Link-Umgehung) → unvalidiertes WebView-Laden / Open Redirect
CWECWE-939 (Improper Authorization in Handler for Custom URL Scheme); verwandte CWE-749
Betroffene Komponentecom.airsweb.v10.MainActivity (exportierter Deep-Link-Handler) und der Deep-Link-Zweig in MainActivityKt.WebViewPage
Benutzerdefiniertes Schemaehs-app://
AngriffsartRemote (erfordert Benutzerinteraktion — Öffnen eines manipulierten Links)
AuswirkungPhishing / Social Engineering: beliebige, vom Angreifer kontrollierte Webinhalte werden innerhalb der vertrauenswürdigen EcoOnline-EHS-App gerendert (z. B. ein gefälschtes Login), unter Umgehung der Domain-Allowlist der App
EntdeckerAhmet Mersin
DatumEreignis
2026-01-13PoC gegen 0.2.499 aufgezeichnet
2026-01-15CVE-Anfrage an MITRE eingereicht (Ticket scr1979357)
2026-02-27CVE-2026-26897 von MITRE zugewiesen
vor der VeröffentlichungHersteller hat bestätigt; Fix in 0.2.500 veröffentlicht
2026-03-04Veröffentlichungsanfrage an MITRE gesendet
2026-05-06MITRE forderte eine vollständige öffentliche Offenlegungs-URL an
2026-06-03Öffentliches Advisory veröffentlicht (dieses Repository)