AI 공격용 '아스키 밀수' 기법, 스팸 발송자들이 악용하기 시작
프롬프트 인젝션 공격을 은닉하는 데 쓰이던 'ASCII 밀수(ASCII smuggling)' 기법이 이제 스팸 발송자들이 이메일 필터를 우회하는 데 활용되고 있습니다. 유니코드 태그 문자는 사람 눈에는 보이지 않지만 기계는 읽을 수 있어, ML/NLP 기반 스팸 분류기의 토큰화를 교란할 수 있습니다. 마이크로소프트는 올해 초 이 기법을 사용한 스팸이 하루 2.1만 건에서 250만 건까지 급증했다고 밝혔습니다.
AI 에이전트 공격에 악성 프롬프트를 숨기는 데 사용되던 교묘한 기법이 스패머(스팸 발송자)들에게 채택되어, 대량 발송되는 원치 않는 메시지를 탐지하기 위해 설계된 이메일 플랫폼의 필터를 우회하는 데 활용되고 있습니다. 이 기법은 일반적으로 'ASCII 밀수(ASCII smuggling)'로 알려져 있습니다. 2년 전, '프롬프트 인젝션(prompt injection)'이라 불리는 AI 공격을 더 은밀하게 만드는 수단으로 주목받았습니다. LLM이 처리할 이메일이나 기타 신뢰할 수 없는 콘텐츠에 삽입된 악성 지시문은 일반 텍스트로 작성되지 않고, 특수한 유니코드 태그 범위로 표현됩니다. 예를 들어, 태그 포인트 U+E0041은 'A'를, U+E0061은 'a'를 반영합니다.
이제 프롬프트 인젝션 은닉 전용은 아니다
128개 태그 블록은 미국정보교환표준부호(ASCII)의 일부를 거의 완벽하게 모방하지만, 한 가지 큰 차이가 있습니다. 이 문자들이 인코딩하는 내용은 컴퓨터는 읽을 수 있지만 설계상 사람에게는 거의 완전히 보이지 않는다는 점입니다. 이러한 태그로 악성 프롬프트를 표현하면 LLM은 지시문을 감지하지만, 이메일을 읽는 사람은 절대 볼 수 없습니다. ASCII 밀수에 대한 자세한 내용은 여기(원문 링크)에서 확인할 수 있습니다.
올해 초 마이크로소프트는 이 기법을 사용한 스팸 메시지가 대폭 증가하는 것을 관찰하기 시작했습니다. 2월 초 어느 날부터 Microsoft Defender for Office가 탐지한 ASCII 밀수 시그니처 수가 하루 약 2.1만 건에서 130만 건 이상으로 급등했습니다. 4일 만에 시그니처 탐지 건수는 250만 건으로 뛰어올랐습니다. 이 홍수는 수개월간 지속되다가 5월 중순에 급격히 감소했습니다.
마이크로소프트는 목요일에 다음과 같이 설명했습니다. "태그 문자는 사람에게는 보이지 않지만 텍스트 처리 수준에는 존재하기 때문에, 모델에 지시문을 밀반입하는 데 유용한 동일한 특성이 탐지기가 평가하기 전에 키워드를 난독화하는 데에도 유용합니다. 의도는 반대이지만 메커니즘은 유사하며, 사용자의 의심을 사지 않습니다."
스패머들은 대량 발송 이메일에 흔히 들어가는 달러 금액, 'credit(신용)', 'term(기간)' 같은 단어를 탐지하는 텍스트 검색 필터를 우회하기 위해 유니코드를 삽입하고 있습니다. 예를 들어 'funding(자금 조달)'이라는 단어 중간에 보이지 않는 텍스트를 뿌려 넣으면, 필터는 'fun'과 'ding'으로 읽을 수 있습니다. 반면 수신자는 'funding'이라는 단어를 보게 됩니다.
특수 문자로 특정 트리거 단어를 위장하는 것은 새로운 일이 아닙니다. 스패머들은 수십 년 동안 유사한 결과를 얻기 위해 폭 없는 공백(zero-width space)과 줄바꿈 없는 공백(non-breaking space)을 사용해 왔습니다. 이러한 문자는 문자열 리터럴 매칭 검색을 좌절시키고 정규식(regex) 필터가 찾는 바이트 시퀀스를 변경할 수 있습니다. 스패머들이 숨겨진 유니코드 태그를 채택한 것은 일부 스팸 필터가 이를 탐지하도록 프로그래밍되지 않았기 때문일 가능성이 높습니다. 그러나 이 기법 사용의 더 큰 이유는 스팸 탐지에 활용되는 머신러닝(ML)과 자연어처리(NLP), LLM이 제공하는 이점을 무력화하기 위해서일 것입니다.
마이크로소프트는 다음과 같이 설명했습니다.
"그러나 공격자에게 더 큰 목표는 문자열 리터럴 매칭 회피가 아니라, 현대의 스팸 및 피싱 분류를 점점 더 주도하는 ML 및 NLP 기반 모델입니다. 필터링 시스템이 메시지를 이미지로 캡처해 시각적 이미지에 대해 OCR 추출을 수행하지 않는 한, 이 유형의 공격을 놓칠 수 있습니다. 표준 이메일 분류기는 사람이 보는 것처럼 온전한 단어를 정확히 해석하지 않을 수 있습니다. 효율성을 위해 먼저 텍스트를 토큰이나 하위 단어 조각으로 분할하기 때문입니다. 'funding' 같은 깨끗한 유인 단어는 익숙한 토큰이나 익숙한 하위 토큰 시퀀스로 표현될 수 있습니다. 그러나 보이지 않는 U+E0020을 중간에 삽입하면 토크나이저는 더 이상 그 익숙한 단위를 보지 못할 수 있습니다. 텍스트를 'fun', 예상치 못한 태그 문자, 'ding'으로 분할하거나, 희귀하거나 알 수 없는 하위 토큰을 생성하거나, 정규화가 먼저 실행되는 경우 U+E0020 문자를 제거해 'funding'을 남길 수도 있습니다."
목요일 게시글은 개발자들이 이러한 공격을 완화할 수 있는 방법에 대한 가이드라인을 제공했습니다.