Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-26897-EcoOnline-DeepLink — Advertência pública e PoC para CVE-2026-26897 — Bypass de Deep Link no EcoOnline EHS Android (com.airsweb.v10), corrigido na versão 0.2.500 | Kitploit
Ferramentas/GitHubGitHub/iwallplace/cve-2026-26897-ecoonline-deeplink
Segurança AndroidAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebPhishingTestes de PenetraçãoSegurança MóvelAprendizado e Educação

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHub
iwallplace/cve-2026-26897-ecoonline-deeplink

CVE-2026-26897-EcoOnline-DeepLink

Advertência pública e PoC para CVE-2026-26897 — Bypass de Deep Link no EcoOnline EHS Android (com.airsweb.v10), corrigido na versão 0.2.500

Ver Repositório
há 2 mesesAinda não revisado

EcoOnline EHS (Android) — Bypass de Validação de Deep Link → Open Redirect no WebView (CVE-2026-26897)

Divulgação pública / aviso para CVE-2026-26897, um bypass de validação de deep link no aplicativo Android EcoOnline EHS (com.airsweb.v10). Um deep link malicioso ehs-app:// é reescrito para https:// e carregado diretamente no WebView principal do aplicativo sem a verificação da lista de permissões de host que o aplicativo aplica em todos os outros caminhos de navegação, permitindo que um atacante remoto renderize conteúdo arbitrário controlado pelo atacante dentro do aplicativo confiável (phishing).

Divulgado de forma responsável, reconhecido pelo fornecedor e corrigido na versão 0.2.500.

✅ Status: CORRIGIDO

  • Versão vulnerável analisada: com.airsweb.v10 0.2.499 (versionCode 44631)
  • Versão corrigida: 0.2.500 (disponível na Google Play)
  • Ação para utilizadores: atualizar o aplicativo EcoOnline EHS para a versão mais recente.

Binário afetado (para verificação)

O aplicativo do fornecedor é proprietário e não é redistribuído neste repositório. A análise estática abaixo foi realizada na compilação identificada aqui — obtenha o APK exato de um arquivo (ex.: histórico de versões do APKPure) e verifique seu hash antes de reproduzir:

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

Resumo

Descrição

O EcoOnline EHS para Android é um wrapper WebView Jetpack-Compose em torno da plataforma web EHS. Seu conteúdo padrão é carregado de:

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

O aplicativo exporta uma única Activity (MainActivity) que é tanto o lançador quanto o manipulador para o esquema de URL personalizado ehs-app. O elemento <data> do intent-filter de deep link declara apenas um esquema — sem host e sem caminho — então qualquer URI ehs-app://… é roteada para o aplicativo.

Para proteger a navegação do WebView, o aplicativo implementa uma lista de permissões de host (isInternalHost) e a aplica ao restaurar o último URL visitado. No entanto, o ramo de manipulação de deep link não chama essa lista de permissões. Ele pega a URI de deep link recebida, realiza uma substituição ingênua de string do esquema ehs-app: → https: e chama WebView.loadUrl() no resultado. Um atacante remoto pode, portanto, criar um deep link que faz com que o aplicativo confiável carregue uma origem https:// arbitrária.

Componente afetado

AndroidManifest.xml (v0.2.499) — deep link exportado, apenas esquema

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"/>   <!-- apenas esquema: sem host, sem caminho -->
    </intent-filter>
</activity>

Causa raiz — ramo de deep link em MainActivityKt.WebViewPage (decompilado, v0.2.499)

root@kitploit:~
// intent entregue à MainActivity exportada
if (intent.getScheme().equals("ehs-app")) {
    WebView webView = ...;
    if (webView != null) {
        Uri data = intent.getData();                       // URI completa ehs-app://…
        String s = String.valueOf(data);
        // reescrita ingênua de esquema: "ehs-app:" -> "https:"
        String url = StringsKt.replaceFirst(s, "ehs-app:", "https:", false, 4, null);
        webView.loadUrl(url);                              // <-- SEM verificação isInternalHost()
    }
}

A lista de permissões que este caminho deixa de aplicar (usada em outro lugar no mesmo arquivo):

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

Nota secundária: a regex internalDomains é em si fraca (alternância quebrada + correspondência de substring containsMatchIn), mas o problema principal é que o ramo de deep link nunca invoca isInternalHost.

Prova de Conceito

Uma gravação de tela PoC foi produzida em 2026-01-13 contra com.airsweb.v10 0.2.499.

  1. Instale a versão afetada (0.2.499) em um dispositivo Android.
  2. Entregue um deep link malicioso à vítima (ex.: por email, SMS, chat, QR ou página web):
    root@kitploit:~
    ehs-app://attacker.example/login
    
  3. Quando a vítima o abre, MainActivity reescreve o esquema e o WebView carrega:
    root@kitploit:~
    https://attacker.example/login
    
    dentro do aplicativo confiável EcoOnline EHS — nenhuma verificação de lista de permissões é realizada.
  4. A página do atacante é renderizada com a aparência e o chrome do aplicativo legítimo e pode, por exemplo, apresentar um login falso do EHS para capturar credenciais.

Uma demonstração benigna, sem captura do redirecionamento está incluída em poc/redirect-proof.html (uso: poc/README.md). Ela prova que uma origem arbitrária é carregada dentro do aplicativo confiável, sem entradas, sem captura de credenciais e sem requisições de rede.

No PoC original, o pesquisador hospedou uma página de destino semelhante benigna apenas para demonstrar o redirecionamento. Este aviso documenta a vulnerabilidade para fins defensivos / de divulgação e intencionalmente não contém nenhuma página de phishing ou código de captura de credenciais.

Impacto

  • Carrega conteúdo https:// arbitrário controlado pelo atacante dentro do contexto do aplicativo confiável.
  • Phishing / roubo de credenciais através de um prompt de login que parece ser originado do aplicativo real.
  • Spoofing de UI e aumento geral de engenharia social (a página maliciosa herda a confiança do aplicativo).

CVSS v3.1 (estimativa do pesquisador — finalizar antes da publicação): AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N → 6.3 (Médio) (um argumento de Escopo: Alterado pode ser feito, já que conteúdo não confiável é executado no contexto do aplicativo confiável).

Remediação

Atualize para com.airsweb.v10 0.2.500 ou posterior. Correções recomendadas:

  • Aplique isInternalHost() (ou uma lista de permissões equivalente) aos URLs de deep link antes de loadUrl().
  • Não derive o URL carregado reescrevendo cegamente o esquema; valide o esquema e o host.
  • Restrinja o intent-filter de deep link com um android:host/android:pathPrefix explícito.
  • Fortaleça a regex internalDomains (ancore completamente o host; evite correspondências de substring).

Cronograma de divulgação

Referências

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

Crédito

Descoberto e reportado por Ahmet Mersin — GitHub @iwallplace, HackerOne iwallplace.

Baixar ferramenta
SHA-256
e9e8a38d133cb9da9901caf03c4a7a033c75ad1f32ba0539260e47d5dd5068c0
FonteAPKPure — histórico de versões "EcoOnline EHS"
CampoValor
ID do CVECVE-2026-26897
FornecedorEcoOnline ("EcoOnline Global") — https://www.ecoonline.com/
ProdutoEcoOnline EHS para Android (com.airsweb.v10)
Versão afetada0.2.499 (versionCode 44631)
Versão corrigida0.2.500
Tipo de vulnerabilidadeValidação inadequada em um manipulador de esquema de URL personalizado (bypass de deep link) → carga de WebView não validada / open redirect
CWECWE-939 (Autorização inadequada no manipulador de esquema de URL personalizado); relacionado CWE-749
Componente afetadocom.airsweb.v10.MainActivity (manipulador de deep link exportado) e o ramo de deep link em MainActivityKt.WebViewPage
Esquema personalizadoehs-app://
Tipo de ataqueRemoto (requer interação do utilizador — abrir um link malicioso)
ImpactoPhishing / engenharia social: conteúdo web arbitrário controlado pelo atacante renderizado dentro do aplicativo confiável EcoOnline EHS (ex.: um login falso), ignorando a lista de permissões de domínio do aplicativo
DescobridorAhmet Mersin
DataEvento
2026-01-13PoC gravado contra 0.2.499
2026-01-15Pedido de CVE submetido à MITRE (ticket scr1979357)
2026-02-27CVE-2026-26897 atribuído pela MITRE
antes da publicaçãoFornecedor reconheceu; correção lançada em 0.2.500
2026-03-04Pedido de publicação enviado à MITRE
2026-05-06MITRE solicitou um URL de divulgação pública completo
2026-06-03Aviso público publicado (este repositório)