Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-26897-EcoOnline-DeepLink — CVE-2026-26897에 대한 공개 권고 및 PoC — EcoOnline EHS Android(com.airsweb.v10)의 딥 링크 우회, 0.2.500에서 수정됨 | Kitploit
도구/GitHubGitHub/iwallplace/cve-2026-26897-ecoonline-deeplink
Android SecurityVulnerability AnalysisExploitationWeb Application ExploitationPhishingPenetration TestingMobile SecurityLearning & Education

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
iwallplace/cve-2026-26897-ecoonline-deeplink

CVE-2026-26897-EcoOnline-DeepLink

CVE-2026-26897에 대한 공개 권고 및 PoC — EcoOnline EHS Android(com.airsweb.v10)의 딥 링크 우회, 0.2.500에서 수정됨

저장소 보기
23개월 전아직 검토되지 않음

EcoOnline EHS (Android) — 딥 링크 검증 우회 → WebView 오픈 리다이렉트 (CVE-2026-26897)

CVE-2026-26897에 대한 공개 공개(public disclosure) / 보안 권고(advisory)입니다. 이는 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 앱을 최신 버전으로 업데이트하세요.

영향을 받는 바이너리(검증용)

공급업체의 애플리케이션은 독점 소프트웨어이며 이 저장소에 재배포되지 않습니다. 아래 정적 분석은 여기에 명시된 빌드에 대해 수행되었습니다. 재현 전에 아카이브(예: APKPure 버전 기록)에서 정확한 APK를 확보하고 해시를 검증하세요.

패키지com.airsweb.v10
versionName / versionCode0.2.499 / 44631
SHA-256

요약

설명

Android용 EcoOnline EHS는 EHS 웹 플랫폼을 감싸는 Jetpack-Compose WebView 래퍼입니다. 기본 콘텐츠는 다음에서 로드됩니다:

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

앱은 런처이자 사용자 지정 URL 스킴 **ehs-app**의 핸들러 역할을 하는 단일 Activity(MainActivity)를 내보냅니다. 딥 링크 intent-filter의 <data> 요소는 스킴만 선언하며 — 호스트도 경로도 없습니다 — 따라서 모든 ehs-app://… URI가 앱으로 라우팅됩니다.

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"/>   <!-- scheme only: no host, no path -->
    </intent-filter>
</activity>

근본 원인 — MainActivityKt.WebViewPage의 딥 링크 분기(디컴파일됨, 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
    }
}

이 경로가 적용하지 못하는 허용 목록(같은 파일의 다른 곳에서 사용됨):

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 정규식 자체도 취약합니다(잘못된 alternation + containsMatchIn 부분 문자열 매칭). 그러나 핵심 문제는 딥 링크 분기가 isInternalHost를 전혀 호출하지 않는다는 점입니다.

개념 증명(PoC)

화면 녹화 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:// 콘텐츠를 로드합니다.
  • 실제 앱에서 온 것처럼 보이는 로그인 프롬프트를 통한 피싱 / 자격 증명 탈취.
  • UI 스푸핑 및 전반적인 사회 공학 효과 증대(악성 페이지가 앱의 신뢰를 상속받음).

CVSS v3.1(연구자 추정 — 게시 전 확정 필요): AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N → 6.3(중간) (신뢰되지 않은 콘텐츠가 신뢰되는 앱 컨텍스트에서 실행되므로 Scope:Changed 논거를 제시할 수 있습니다.)

해결 방법

com.airsweb.v10 0.2.500 이상으로 업데이트하세요. 권장 수정 사항:

  • 딥 링크 URL에 loadUrl() 이전에 isInternalHost()(또는 동등한 허용 목록)를 적용합니다.
  • 스킴을 무작정 재작성하여 로드 URL을 유도하지 말고, 스킴 및 호스트를 검증하세요.
  • 명시적인 android:host/android:pathPrefix로 딥 링크 intent-filter를 제한하세요.
  • internalDomains 정규식을 강화하세요(호스트를 완전히 고정하고 부분 문자열 매칭을 피하세요).

공개 타임라인

참조

  • CVE-2026-26897 (MITRE CVE 레코드)
  • Google Play의 EcoOnline EHS — https://play.google.com/store/apps/details?id=com.airsweb.v10
  • 공급업체 — https://www.ecoonline.com/

크레딧

Ahmet Mersin이 발견 및 보고 — GitHub @iwallplace, HackerOne iwallplace.

도구 다운로드
e9e8a38d133cb9da9901caf03c4a7a033c75ad1f32ba0539260e47d5dd5068c0
출처APKPure — "EcoOnline EHS" 버전 기록
필드값
CVE IDCVE-2026-26897
공급업체EcoOnline ("EcoOnline Global") — https://www.ecoonline.com/
제품Android용 EcoOnline EHS (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-130.2.499 대상 PoC 녹화
2026-01-15MITRE에 CVE 요청 제출(티켓 scr1979357)
2026-02-27MITRE가 CVE-2026-26897 배정
게시 전공급업체 인정; 0.2.500에서 수정 릴리스
2026-03-04MITRE에 공개 요청 전송
2026-05-06MITRE가 완전한 공개 공개 URL 요청
2026-06-03공개 권고 게시(이 저장소)