By Aram Lee (A.K.A InPure)
aramlee@a3security.com
I. 본론
iPhone에서는 기본적으로 Safari의 세션 정보를 일정 시간 이상 유지를 하도록 하고 있습니다. 이러한 점을 이용하여 지난 QRCode를 이용한 iPhone Phishing Scenario(http://teamcrak.tistory.com/234)에 이어 XSS/Replay Attack Scenario를 작성하였습니다.
* 본 연구 문서는 신규 취약점 또는 보안 기술 우회 기법에 관한 문서로써 악용될 우려가 있는 상세 공격 코드 및 내용을 제한 합니다.
가. 도식도
본 시나리오의 도식도는 다음과 같습니다.
[그림 1] XSS, Replay Attack 도식도
나. 시나리오
A는 XSS 취약점이 존재하는 특정 게시판을 자주 이용하는 사용자입니다.
공격 당일에도 사용자는 해당 사이트에 로그인을 하여 업무를 본 후에, 웹 브라우저(Safari)를 종료하였습니다.
인터넷 서핑 도중 다음과 같은 호기심을 유발하는 글을 발견하였습니다.
[그림 2] 문제 QRCode
정답이 궁금해진 A는 iPhone에 내장되어 있는 QRCode 인식 앱으로 답을 알아내기로 합니다.
QRCode를 인식하는 화면입니다.
[그림 3] 악성 QRCode 인식
QRCode를 인식하여 해당 URL로 Redirect된 화면입니다. 화면상에는 그림 파일이 하나 있지만, 공격자 서버에 쿠키 정보가 수집되었습니다.
[그림 4] 악성 서버베 쿠키 정보 전달
공격자 서버에서 쿠키 정보가 수집된 화면입니다.
[그림 5] 쿠키 정보 수집
다음은 공격자가 사이트에 접속하여 쿠키 정보를 수정하여 권한 획득에 성공한 화면입니다.
[그림 6] 수집된 쿠키 정보로 수정
[그림 7] Replay Attack
II. 대응방안
1) 먼저 개발자는 BarCode/QRCode 인식 후 BarCode/QRCode에 포함되어 있는 URL 주소로 바로 Redirect하면 안됩니다. BarCode/QRCode에 포함된 URL을 사용자에게 보여주어 사용자의 확인을 받아 해당 URL로 연결하는 방식으로 개발해야 합니다.
2) 입력값에 XSS나 SQL Injection 등에 이용되는 스크립트가 포함되어 있으면 차단하는 기능을 추가해야 합니다.
3) 사용자는 수상한 BarCode/QRCode인지 확인하고, 어플로 BarCode/QRCode 인식 후 URL이 안전한 URL인지 확인해야 합니다. 그리고 신뢰할 수 없는 URL에 자신의 정보를 남기지 않도록 해야 합니다.
※ 현재 ㈜에이쓰리시큐리티에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다.