
개념 증명(PoC)으로, Meesho Android 앱에서 안전하지 않은 AES-CBC 암호화와 MD5 키 파생을 시연하여 암호문 변조 및 잠재적 패딩 오라클 공격을 가능하게 합니다.
작성자: Soyam Arya (일명 honest_corrupt)
발견 날짜: 2026년 3월
영향을 받는 앱: Meesho Android 앱 (com.meesho.supply)
상태: 검증 중
카테고리: 불충분한 암호화 / 데이터 무결성 실패
이 보고서는 Meesho Android 애플리케이션에서 민감한 데이터가 무결성 보호 없이 AES/CBC/PKCS5Padding으로 암호화되고, 암호화 키가 안전하지 않은 MD5 해싱 알고리즘을 사용하여 파생되는 암호화 취약점을 문서화합니다.
애플리케이션은 다음 형식으로 암호화된 페이로드를 구성합니다:
Base64(IV) . Base64(암호문)
그러나 인증(HMAC 또는 AES-GCM과 같은 AEAD 모드)이 없기 때문에 구현은 다음에 취약합니다:
이는 여러 OWASP Mobile Top 10 및 MASVS 암호화 지침을 위반합니다.
| 카테고리 | 설명 |
|---|---|
| M5: 불충분한 암호화 | 취약한 암호화 프리미티브 사용 (MD5, 무결성 없는 AES-CBC) |
| CWE-327 | 손상되었거나 위험한 암호화 알고리즘 사용 |
| CWE-649 | 무결성 검사 없이 암호화에 의존 |
| OWASP MASVS | MSTG-CRYPTO-3, MSTG-CRYPTO-4 |
리버스 엔지니어링을 통해 다음 로직이 밝혀졌습니다:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] iv = new byte[16];
new SecureRandom().nextBytes(iv);
SecretKeySpec key = new SecretKeySpec(
MD5(str), "AES"
);
cipher.init(ENCRYPT_MODE, key, new IvParameterSpec(iv));
String message = Base64(iv) + "." + Base64(ciphertext);
암호화된 페이로드는 API 요청에서 다음과 같이 전송됩니다:
http POST /api/endpoint
message=Base64(IV).Base64(암호문)

Burp Suite를 통해 요청을 캡처합니다:
` message=AbCdEfGhIj...xyz.KLMNOPQRST... ``
암호문에서 단일 바이트를 변경합니다:
`` 원본: ...KLMNOPQRST...
수정본: ...KLMNOPQRSU... ``
--
수정된 요청을 서버로 보냅니다.
message 매개변수가 포함된 API 요청 가로채기| 날짜 | 이벤트 |
|---|---|
| 2026년 3월 | 취약점 발견 |
| 2026년 3월 | 리버스 엔지니어링 완료 |
| 대기 중 | 공급업체 통지 |
| 대기 중 | CVE 요청 |
Soyam Arya (일명 honest_corrupt) CVE ID: CVE-2025-5154, CVE-2025-6748 모바일 및 웹 애플리케이션 침투 테스터