최근 웹메일 서비스의 HTML 및 CSS 처리 방식에 심각한 보안 취약점이 존재한다는 연구 결과가 발표되었습니다. 웹메일 클라이언트가 신뢰할 수 없는 외부 HTML과 CSS를 신뢰된 사용자 인터페이스(UI) 내에서 렌더링하는 과정에서, 브라우저의 파서(parser)와 웹메일의 새니타이저(sanitizer) 간의 불일치가 발생하여 다양한 공격이 가능해진다는 내용입니다. 이는 단순히 이메일 내용이 깨지는 것을 넘어, UI 조작, 민감한 토큰 유출, 외부 서비스 침해, 심지어 사용자 비밀번호 탈취까지 이어질 수 있는 광범위한 위협을 포함합니다.
이번 연구에서는 야후 메일(Yahoo Mail), AOL 메일(AOL Mail), 패스트메일(Fastmail), 프로톤메일(ProtonMail), 지메일(Gmail), 아웃룩(Outlook) 등 주요 웹메일 서비스가 조사 대상에 포함되었습니다. 특히, 허용된 `<label>` 태그, 의사 요소(`:before`, `:after`), 속성 선택자, 글꼴 높이 측정, 애니메이션 등 기본적인 CSS 기능만으로도 아웃룩의 UI 동작을 대신 실행하거나, 오픈AI 아틀라스(OpenAI Atlas)와 같은 AI 브라우저에 간접 프롬프트 주입을 수행할 수 있음이 밝혀졌습니다. 예를 들어, 아웃룩에서는 `<label for="...">`를 이용해 이메일 내에서 웹메일 리본을 열고 메시지를 고정하는 등의 UI 조작이 가능했으며, 패스트메일에서는 CSS 핫와이어링(hotwiring) 기법으로 모든 클릭을 특정 UI 동작으로 변경할 수 있었습니다. 또한, 지메일의 이미지 프록시(proxy) 우회를 통해 슬랙(Slack) 토큰이 유출되거나, 아웃룩에서 파이어폭스(Firefox)의 `<select>` 동작과 새니타이저 우회를 결합하여 전체 화면 로그인 UI를 위조하고 비밀번호를 실시간으로 탈취하는 공격까지 시연되었습니다.
이러한 취약점들은 웹메일이 신뢰할 수 없는 콘텐츠를 안전하게 표시하기 위해 사용하는 새니타이저의 구조적 문제에서 기인합니다. 새니타이저가 안전하다고 판단한 구문과 브라우저가 실제 렌더링하는 결과가 달라질 수 있으며, 일부 클라이언트는 원본 대신 브라우저가 먼저 해석한 HTML·CSS를 필터링하지만 이마저도 악성 구문으로 변형될 수 있습니다. 공격자들은 CSS 중첩(nesting)을 이용해 토큰을 복원하거나, 외부 자원 요청을 모두 차단하는 콘텐츠 보안 정책(CSP) 아래에서도 `@font-face`와 애니메이션을 활용해 숫자 토큰의 종류와 빈도를 유출하는 등 정교한 기법을 사용했습니다. 이러한 문제들을 방어하기 위해서는 이메일을 샌드박스드 아이프레임(sandboxed iframe)으로 격리하고, 이미지 요청, `data:` URL, `<select>` 태그, 위험한 선택자 등을 차단하며, CSSOM(CSS Object Model) 처리에는 엄격한 문자 허용 목록과 CSS 가젯(gadget) 검사를 적용해야 합니다. 이번 연구는 웹메일 보안의 근본적인 취약점을 드러내며, 사용자뿐만 아니라 웹메일 서비스 제공자들에게도 더욱 엄격한 보안 강화의 필요성을 일깨우고 있습니다.