Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-26897-EcoOnline-DeepLink — Публичное уведомление и PoC для CVE-2026-26897 — Обход глубоких ссылок в EcoOnline EHS Android (com.airsweb.v10), исправлено в версии 0.2.500 | Kitploit
Инструменты/GitHubGitHub/iwallplace/cve-2026-26897-ecoonline-deeplink
Безопасность AndroidАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийФишингТестирование на ПроникновениеМобильная безопасностьОбучение и Образование

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHub
iwallplace/cve-2026-26897-ecoonline-deeplink

CVE-2026-26897-EcoOnline-DeepLink

Публичное уведомление и PoC для CVE-2026-26897 — Обход глубоких ссылок в EcoOnline EHS Android (com.airsweb.v10), исправлено в версии 0.2.500

Репозиторий
23 месяцев назадЕщё не проверено

EcoOnline EHS (Android) — Обход проверки глубоких ссылок → Открытое перенаправление WebView (CVE-2026-26897)

Публичное раскрытие / уведомление для CVE-2026-26897, обход проверки глубоких ссылок в приложении EcoOnline EHS для Android (com.airsweb.v10). Созданная глубокая ссылка ehs-app:// преобразуется в https:// и загружается непосредственно в основной WebView приложения без проверки списка разрешённых хостов, которую приложение применяет на всех остальных путях навигации, что позволяет удалённому злоумышленнику отображать произвольный контролируемый им контент внутри доверенного приложения (фишинг).

Ответственно раскрыто, подтверждено разработчиком и исправлено в версии 0.2.500.

✅ Статус: ИСПРАВЛЕНО

  • Проанализированная уязвимая версия: com.airsweb.v10 0.2.499 (versionCode 44631)
  • Исправленная версия: 0.2.500 (доступна в Google Play)
  • Действия для пользователей: обновите приложение EcoOnline EHS до последней версии.

Затронутый бинарный файл (для проверки)

Приложение разработчика является проприетарным и не распространяется в этом репозитории. Статический анализ ниже был выполнен для сборки, указанной здесь — получите точный APK из архива (например, история версий APKPure) и проверьте его хеш перед воспроизведением:

Пакетcom.airsweb.v10
versionName / versionCode0.2.499 / 44631

Краткий обзор

Описание

EcoOnline EHS для Android — это оболочка WebView на Jetpack-Compose вокруг веб-платформы EHS. Его содержимое по умолчанию загружается из:

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

Приложение экспортирует одну Activity (MainActivity), которая одновременно является лаунчером и обработчиком пользовательской схемы URL ehs-app. Элемент <data> в intent-filter глубокой ссылки объявляет только схему — без хоста и пути — поэтому любой URI вида ehs-app://… направляется в приложение.

Для защиты навигации WebView приложение реализует список разрешённых хостов (isInternalHost) и применяет его при восстановлении последнего посещённого URL. Однако ветка обработки глубоких ссылок не вызывает этот список вообще. Она берёт входящий URI глубокой ссылки, выполняет наивную замену строки схемы ehs-app: → https: и вызывает WebView.loadUrl() для результата. Поэтому удалённый злоумышленник может создать глубокую ссылку, заставляющую доверенное приложение загружать произвольный источник https://.

Затронутый компонент

AndroidManifest.xml (v0.2.499) — экспортированная глубокая ссылка только со схемой

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"/>   <!-- только схема: без хоста, без пути -->
    </intent-filter>
</activity>

Первопричина — ветка глубоких ссылок в MainActivityKt.WebViewPage (декомпилировано, v0.2.499)

root@kitploit:~
// intent, доставленный в экспортированную MainActivity
if (intent.getScheme().equals("ehs-app")) {
    WebView webView = ...;
    if (webView != null) {
        Uri data = intent.getData();                       // полный URI ehs-app://…
        String s = String.valueOf(data);
        // наивная замена схемы: "ehs-app:" -> "https:"
        String url = StringsKt.replaceFirst(s, "ehs-app:", "https:", false, 4, null);
        webView.loadUrl(url);                              // <-- НЕТ ПРОВЕРКИ isInternalHost()
    }
}

Список разрешений, который этот путь не применяет (используется в другом месте того же файла):

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);
}

Дополнительное примечание: само регулярное выражение internalDomains слабое (неправильное чередование + сопоставление подстрок containsMatchIn), но основная проблема в том, что ветка глубоких ссылок вообще не вызывает isInternalHost.

Доказательство концепции

Видеозапись PoC была создана 2026-01-13 для com.airsweb.v10 0.2.499.

  1. Установите уязвимую версию (0.2.499) на устройство Android.
  2. Доставьте специально созданную глубокую ссылку жертве (например, по электронной почте, SMS, в чате, через QR-код или веб-страницу):
    root@kitploit:~
    ehs-app://attacker.example/login
    
  3. Когда жертва открывает её, MainActivity переписывает схему и WebView загружает:
    root@kitploit:~
    https://attacker.example/login
    
    внутри доверенного приложения EcoOnline EHS — проверка списка разрешений не выполняется.
  4. Страница злоумышленника отображается с внешним видом легитимного приложения и может, например, показать поддельную страницу входа EHS для сбора учётных данных.

Безвредная, не собирающая данные демонстрация перенаправления включена в poc/redirect-proof.html (использование: poc/README.md). Она доказывает, что произвольный источник загружается внутри доверенного приложения, без ввода данных, захвата учётных данных и сетевых запросов.

В оригинальном PoC исследователь разместил безвредную страницу, похожую на целевую, исключительно для демонстрации перенаправления. Данное уведомление документирует уязвимость в оборонительных / раскрывающих целях и намеренно не содержит фишинговой страницы или кода для захвата учётных данных.

Воздействие

  • Загружает произвольный контролируемый злоумышленником контент https:// внутри контекста доверенного приложения.
  • Фишинг / кража учётных данных через приглашение ко входу, которое кажется исходящим от реального приложения.
  • Спуфинг интерфейса и общее повышение эффективности социальной инженерии (вредоносная страница наследует доверие к приложению).

CVSS v3.1 (оценка исследователя — окончательно определить перед публикацией): AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N → 6.3 (Средний) (можно аргументировать изменение области действия, так как недоверенный контент выполняется в контексте доверенного приложения).

Исправление

Обновите до com.airsweb.v10 0.2.500 или новее. Рекомендуемые исправления:

  • Примените isInternalHost() (или эквивалентный список разрешений) к URL глубоких ссылок перед loadUrl().
  • Не формируйте загружаемый URL путём слепой замены схемы; проверяйте схему и хост.
  • Ограничьте intent-filter глубоких ссылок явным указанием android:host/android:pathPrefix.
  • Улучшите регулярное выражение internalDomains (полная привязка хоста; избегайте сопоставления подстрок).

Временная шкала раскрытия

Ссылки

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

Автор

Обнаружено и сообщено Ahmet Mersin — GitHub @iwallplace, HackerOne iwallplace.

Скачать инструмент
SHA-256
e9e8a38d133cb9da9901caf03c4a7a033c75ad1f32ba0539260e47d5dd5068c0
ИсточникAPKPure — "EcoOnline EHS" история версий
ПолеЗначение
CVE IDCVE-2026-26897
РазработчикEcoOnline ("EcoOnline Global") — https://www.ecoonline.com/
ПродуктEcoOnline EHS для Android (com.airsweb.v10)
Затронутая версия0.2.499 (versionCode 44631)
Исправленная версия0.2.500
Тип уязвимостиНеправильная проверка в обработчике пользовательской схемы URL (обход глубоких ссылок) → непроверенная загрузка WebView / открытое перенаправление
CWECWE-939 (Неправильная авторизация в обработчике пользовательской схемы URL); связанный CWE-749
Затронутый компонентcom.airsweb.v10.MainActivity (экспортированный обработчик глубоких ссылок) и ветка глубоких ссылок в MainActivityKt.WebViewPage
Пользовательская схемаehs-app://
Тип атакиУдалённая (требует взаимодействия пользователя — открытие специально созданной ссылки)
ВоздействиеФишинг / социальная инженерия: произвольный контролируемый злоумышленником веб-контент отображается внутри доверенного приложения EcoOnline EHS (например, поддельная страница входа), обходя список разрешённых доменов приложения
ОбнаружилAhmet Mersin
ДатаСобытие
2026-01-13Запись PoC для версии 0.2.499
2026-01-15Запрос CVE отправлен в MITRE (заявка scr1979357)
2026-02-27CVE-2026-26897 присвоен MITRE
до публикацииРазработчик подтвердил; исправление выпущено в 0.2.500
2026-03-04Запрос на публикацию отправлен в MITRE
2026-05-06MITRE запросил полный URL публичного раскрытия
2026-06-03Публичное уведомление опубликовано (данный репозиторий)