GN⁺: WhatsApp에서 발견된 클릭재킹 취약점을 통한 피싱 공격 가능성
(00xbyte.github.io)발견 과정
- WhatsApp에서 링크 미리보기 기능을 통해 HTTP 요청을 수행하는 방법을 연구함.
- 링크와 미리보기가 별도로 전송되는 것을 확인하고, 이를 이용해 실제 링크와 다른 미리보기를 가진 메시지를 생성하는 데 성공함.
문제점 #1 - 링크 미리보기 불일치
- WhatsApp 메시지에 포함된 링크와 미리보기 데이터를 분석하여 불일치를 만들어내는 방법을 모색함.
- 메시지를 가로채고 수정하여 미리보기와 실제 링크가 다른 메시지를 전송하는 데 성공함.
문제점 #2 - 링크 위장 (2K2E)
- 유니코드 문자를 이용해 텍스트 표현을 변경하는 방법을 실험함.
- U+202E (Right-To-Left Override) 문자를 사용하여 링크를 역순으로 표시하고, 이를 통해 가짜 URL을 실제 URL처럼 보이게 하는 방법을 개발함.
최종 결과
- Instagram으로 보이는 URL을 만들었지만, 실제로는 공격자의 블로그로 연결되는 링크를 생성함.
- 이를 통해 사용자가 정상적인 링크로 착각하여 클릭하게 만들 수 있는 취약점을 발견함.
공격 시나리오
- 공격자가 가짜 도메인을 구입하고, 정상적인 도메인의 미리보기를 사용하는 메시지를 생성함.
- matchedText 속성을 제거하고 text 속성을 U+202E 문자와 가짜 URL로 변경하여 메시지를 조작함.
- 이렇게 조작된 메시지를 피해자에게 전송함.
Meta의 반응
- Meta는 다양한 플랫폼과 환경을 지원하기 때문에 URL 정규화 로직을 동적으로 조정할 수 있는 시스템을 가지고 있음.
- 그러나 Meta는 이 보안 문제를 해결할 의도가 없으며, 스팸으로 감지될 경우에만 대응할 것으로 보임.
완화 방법
- Meta가 이 문제를 해결할 의도가 없기 때문에 WhatsApp에서 링크를 신뢰할 수 없음.
- 링크를 클릭하기 전에 복사하여 클립보드 미리보기에서 U+202E 문자가 정화된 링크 주소를 확인해야 함.
업데이트
- WhatsApp 이외에도 적절한 정화가 이루어지지 않아 2K2E에 취약한 다른 서비스들이 있음.
GN⁺의 의견:
- 이 글에서 가장 중요한 것은 WhatsApp에서 발견된 클릭재킹 취약점으로, 사용자들이 실제 링크와 다른 가짜 링크를 클릭하게 만드는 공격 방법이 상세히 설명되어 있음.
- 이 글이 흥미로운 이유는 일반적으로 신뢰하는 메시징 플랫폼에서 예상치 못한 보안 취약점이 발견되었기 때문이며, 이는 사용자들에게 링크를 클릭하기 전에 항상 주의를 기울여야 하는 이유를 상기시켜 줌.
- 또한, Meta의 반응이 이 문제를 적극적으로 해결하려는 의지가 없음을 보여주어, 사용자 스스로가 보안에 더욱 주의를 기울여야 할 필요성을 강조함.
Hacker News 의견
- 기능 오용의 영리한 조합이지만, 공격자가 경찰, 정보기관 등이 아닌 이상 추가 공격이 필요하기 때문에 보안 영향은 낮다고 평가함. 기술적 정확성을 위해, 이를 "클릭재킹"이라고 부르는 것은 적절하지 않다고 생각함. 클릭재킹은 특정 기술을 의미하며, 보이지 않는 HTML 프레임을 다른 콘텐츠 위에 겹쳐 놓는 것을 말함.
- 클릭재킹은 사용자가 클릭하려는 요소가 아닌 다른 요소가 클릭 이벤트를 잡는 것을 말함. 공격자는 사용자가 클릭한 것을 감지할 수 있음. OP가 발견한 것은 멋지고, 실제로 클릭재킹이 아닌 다른 시스템에서 링크 표시를 변경하는 방법을 찾음.
- 사용자가 링크 클릭 시 도메인을 인식하는 데 어려움을 겪고 있으며, 많은 사람들이 이해하지 못하거나 구별할 수 없음. 링크가 추적 가능하고 의심스러워 보이는데도 아무도 문제를 제기하지 않음.
- Meta는 메시지 URL과 미리보기 URL이 다를 수 있는 문제를 인정하고 해결책을 마련해야 함. 이는 URL 단축을 풀기 위한 것일 수 있지만, Meta와 WhatsApp이 똑똑한 해결책을 마련할 수 있어야 함.
- WhatsApp이나 유니코드 역순 문자가 문제가 아니라 URL 자체가 어렵다는 것이 진짜 문제임. visa.securesite.com과 같은 간단한 URL도 많은 사람들을 속임. 가까운 미래에 좋은 해결책이 나올 것 같지 않음.
- Meta가 이 문제를 해결하지 않고 연구자에게 버그 바운티를 지급하지 않은 것에 실망함.
- 이 공격이 "리버스 엔지니어링"으로 분류된 것이 흥미로움.
- RTL은 존재하는 동안 보안 취약점의 큰 원인이었음. RTL을 사용하지 않는 사람들이 위험에 노출되지 않도록 운영 체제에서 RTL을 비활성화하는 설정이 있어야 함.
- 공격이 매우 멋지고, 쉽게 읽고 이해할 수 있는 글임. WhatsApp 웹 앱에 디버거를 사용했는지, 폰에 적용했는지, 에뮬레이터를 사용했는지에 대한 기본적인 질문이 있음.
- 흥미로운 아이디어와 취약점을 공유해줘서 감사함. 간결하고 명확한 요약임.
- 링크와 미리보기가 별도로 전송된다는 것이 확인됨. 사용자가 안전을 위해 링크와 미리보기를 비교해야 하는 UI 디자인은 더 큰 문제임.