Black Hat USA 2026에서 연구원들은 CSS(Cascading Style Sheets)를 무기화하여 AI 기반 이메일 에이전트가 인간 사용자에게는 보이지 않는 콘텐츠를 읽도록 만들 수 있음을 보여주었습니다. 이 기술은 Outlook, Gmail, Yahoo, Proton을 모두 우회하여 에이전트가 비밀번호, 인증 토큰 및 IP 주소를 탈취할 수 있게 했습니다.

이메일 보안에서 CSS가 중요한 이유

수년 동안 웹메일 제공업체들은 스크립트를 제거하고, iframe을 샌드박싱하며, 메시지가 수행할 수 있는 작업을 제한함으로써 악성 HTML에 대응해 왔습니다. 이러한 조치들은 JavaScript나 임베디드 객체에 의존하는 고전적인 공격을 차단합니다. 하지만 CSS는 항상 해롭지 않은 프레젠테이션 코드로 취급되어 왔습니다. 속성 선택자(attribute selectors), 컨테이너 쿼리(container queries)와 같은 고급 선택자를 사용하면 스크립트 없이도 페이지가 DOM 구조에 반응할 수 있습니다.

Black Hat 데모는 이러한 "무해한" 선택자들이 데이터 유출을 위한 사이드 채널(side-channel)이 될 수 있음을 증명했습니다. 공격자는 특정 숨겨진 요소가 존재할 때만 적용되는 스타일 규칙을 만들어, 텍스트를 사용자에게는 보이지 않게 만들면서도 AI 에이전트가 파싱하는 렌더링된 페이지에는 그대로 남겨둡니다.

공격 원리

한 개념 증명(PoC) 사례에서는 수신자에게 평범해 보이는 이메일을 보냈습니다. 그 안에는 특정 텍스트의 색상을 배경색과 일치시켜 효과적으로 은폐하는 CSS 규칙이 숨겨져 있었습니다. 사람은 텍스트를 전혀 볼 수 없지만, DOM이나 접근성 트리(accessibility tree)를 추출하는 AI 에이전트는 시각적 필터를 적용하지 않습니다. 에이전트가 이메일을 처리할 때 은폐된 텍스트를 읽고, 이를 URL 프래그먼트(URL fragment)—브라우저가 페이지를 로드할 때 일반적으로 무시하는 웹 주소의 일부—에 담아 전송했습니다.

또 다른 변종은 간접 프롬프트 인젝션(indirect prompt injection)을 사용했습니다. 이메일에는 숨겨진 Slack 토큰이 포함되어 있었습니다. CSS는 토큰을 사용자에게는 보이지 않게 만들었지만 마크업에는 그대로 유지했습니다. 이메일에 포함된 지침을 따르도록 훈련된 AI 에이전트는 해당 토큰을 명령으로 해석하여 공격자의 서버로 다시 전송했습니다.

두 공격 모두 동일한 인기 제공업체들을 대상으로 성공했으며, 이는 취약점이 특정 플랫폼의 구현 방식이 아니라 CSS가 렌더링되는 근본적인 방식에서 기인함을 보여줍니다.

AI 에이전트 vs 인간 독자

인간은 본능적으로 보이지 않는 텍스트를 무시합니다. 우리는 시각적 레이아웃이 무엇이 중요한지를 알려줄 것이라고 믿습니다. 반면 AI 에이전트는 시각적 상태와 관계없이 모든 요소를 기록하는 원시 DOM 또는 접근성 트리에서 작동합니다. AI가 페이지를 읽을 때는 "보이지 않으면 무시한다"는 규칙을 적용하지 않습니다. 이러한 불일치는 사각지대를 만듭니다. 즉, 인간의 소비를 위해 구축된 정화(sanitisation) 파이프라인이 자동화된 판독기에 대해서는 더 이상 안전을 보장하지 못하게 됩니다.

이 문제는 새로운 AI의 결함이 아닙니다. 코드 없이 레이아웃에 영향을 미치는 CSS의 능력이라는 오래된 웹의 결함이 새로운 유형의 소비자(AI)를 만난 것입니다. 이메일 콘텐츠를 AI 기반 어시스턴트, 요약기 또는 분류기에 전달하는 모든 서비스는 이제 어시스턴트가 인간이 결코 볼 수 없는 데이터에 따라 동작할 위험에 직면해 있습니다.

방어의 책임은 누구에게 있는가?

이 공격들은 책임 소재에 대한 문제를 제기합니다. 웹메일 제공업체는 이미 인간 사용자를 보호하기 위해 HTML을 정화하고 있으며, 브라우저는 이미 렌더링에 대해 동일한 규칙을 적용하고 있습니다. 하지만 이러한 계층 중 어느 것도 동일한 마크업을 파싱할 다운스트림 AI를 고려하지 않습니다. 이메일 서비스가 더 심층적인 CSS 정화를 추가해야 할까요? 브라우저가 요소를 "스크립트에 보이지 않음"으로 표시하는 플래그를 노출해야 할까요? 아니면 AI 벤더가 처리 전에 숨겨진 노드를 폐기하는 필터를 구축해야 할까요?

AI 기반 이메일 도구를 구축하는 보안 팀은 받은 편지함에 도달하는 HTML뿐만 아니라 전체 렌더링 파이프라인을 감사하라는 권고를 받고 있습니다. 이는 CSS가 적용된 후의 DOM을 확인하고, 접근성 트리를 검사하며, 인간의 눈에 보이지 않는 모든 콘텐츠를 명시적으로 제거하거나 플래그를 지정해야 함을 의미합니다.

향후 주목해야 할 점

  • 벤더 테스트 – AI 벤더들은 실제 CSS 공격 벡터를 테스트 스위트에 포함할 것으로 예상됩니다. 웹에는 30년의 취약점 연구 역사가 있지만, AI 에이전트의 역사는 불과 몇 년에 불과합니다.

단순히 CSS로 텍스트를 숨기는 것만으로 AI 어시스턴트가 자격 증명을 유출하도록 속일 수 있다면, 오늘날의 받은 편지함을 보호하는 보안 모델은 더 이상 충분하지 않습니다. 개발자, 제공업체 및 규제 기관은 원시 HTML뿐만 아니라 렌더링된 페이지를 모든 자동화된 소비자에 대한 보안 경계로 취급해야 합니다. 숨겨진 텍스트 문제는 한때 "단순한 스타일링"으로 치부되었던 기술이 데이터 탈취의 통로가 될 수 있음을 상기시켜 줍니다. 차세대 방어 체계는 CSS를 단순한 시각적 보조 도구가 아닌 잠재적인 공격 표면(attack surface)으로 인식해야 할 것입니다.