포스팅 내용

국내외 보안동향

구글 Gmail의 동적 이메일 기능 내 ‘어썸’ XSS 취약점 패치 해

Google patches ‘awesome’ XSS vulnerability in Gmail dynamic email feature


구글이 Gmail 내 XSS 취약점을 수정했습니다. 구글 팀은 이 취약점을 ‘어썸’이라 이름 지었습니다.


지난 월요일, Securitum의 보안 연구원인 Michał Bentkowski는 책임 있게 버그 수정이 완료될 때까지 기다린 후 이 취약점을 공개했습니다.


Bentkowski는 블로그를 통해 이 보안 취약점은 Gmail이 지난 7월 일반 기능으로 추가한 AMP4Email 기능에 존재한다고 설명했습니다.


동적 이메일로도 알려진 AMP4Email은 이메일에서 코멘트 스레드, 이벤트 초대 등 쉽게 동적 콘텐츠를 표시하기 위해 구현되었습니다.


물론 AMP4Email은 이 기능을 악용하는 크로스사이트 스크립팅(XSS) 공격을 예방하기 위한 인증 시스템을 갖추고 있습니다. 일부 태그와 속성이 화이트리스팅 되어있으며, 허가되지 않은 다른 요소나 속성을 추가하려 시도할 경우 오류가 발생합니다.


하지만 이 보안 연구원은 태그에 id 속성이 허용된 것을 발견해 AMP4Email에 DOM Clobbering이 적용되는지 확인하기 위한 조사를 시작했습니다.


DOM(Document Object Model) Clobbering은 디지털 메시징의 복잡도가 증가함에 따라 발생했습니다. 텍스트만 사용하는 이메일은 요즘 시대에 거의 찾아볼 수 없습니다. 추가적인 콘텐츠를 사용하는데는 보안이 매우 중요합니다. 하지만 화이트리스팅에 문제가 생길 경우 XSS 공격을 실행하기 위해 악용될 소지가 있습니다.


“DOM Clobbering은 많은 애플리케이션에서 문제를 일으키는 웹 브라우저의 레거시 기능입니다.”


“예를 들어, 사용자가 HTML에서 한 요소를 생성하고 JavaScript에서 이를 참조하고자 할 경우 일반적으로 document .getElementById('username') 또는 document .querySelector('#username')와 같은 함수를 사용할 것입니다. 레거시 방식은 글로벌 윈도우 오브젝트의 속성을 통해 접근하는 것입니다. 따라서 이 경우 window.username은 document.getElementById('username')와 정확히 동일하게 됩니다.”


AMP4Email에서 해당 id 속성에 대한 일부 값은 제한되어 있습니다. 그러나, AMP_MODE에서 이 함수가 JS 파일을 로드하려고 시도할 경우 결과 URL의 ‘undefined’ 부분이 발생하여 에러 404가 발생합니다.


“AMP는 URL에 삽입하기 위해 AMP_MODE의 속성을 얻으려 시도합니다.”


“Dom Clobbering으로 인하여 해당 속성이 누락되어 ‘undefined’ 부분이 발생합니다.”


AMP_MODE.test와 window.testLocation에서 정의되지 않은 요소를 확인하는 코드가 존재하지만, 해당 URL은 window.testLocation를 오버로드하는 페이로드를 작성하여 제어할 수 있는 것으로 나타났습니다.


하지만 실제로 AMP 내 CSP(Content Security Policy) 기능은 코드가 완전히 실행되는 것을 중지했습니다.


이 취약점은 2019년 8월 15일 구글의 취약점 보상 프로그램을 통해 제보되었습니다.


제보한 지 하루가 지난 후 구글은 이 제보를 받아들였으며, 9월 10일 구글은 “이 버그는 정말 훌륭합니다.(awesome) 제보해 주셔서 감사합니다!”라 밝혔습니다.


구글은 Bentkowski 측에 10월 12일 버그가 수정되었다는 사실을 알렸으며, 연구원은 이 취약점에 대한 세부사항을 공개했습니다.



출처 :

https://www.zdnet.com/article/google-patches-awesome-xss-vulnerability-in-gmail/

https://research.securitum.com/xss-in-amp4email-dom-clobbering/



티스토리 방명록 작성
name password homepage