AI Sparkup

복잡한 AI 세상을 읽는 힘 ⚡

HTML 주석으로 AI 모델 망가뜨리기: 250개면 충분하다

출처: Checkmarx

당신의 웹사이트에 주석 처리된 링크가 있나요? AI 봇들이 그걸 진짜로 클릭하고 있을지도 모릅니다.

보안 연구자 Aaron MacSween이 우연히 발견한 사실은 충격적이었습니다. 서버 로그를 분석하던 중 존재하지도 않는 JavaScript 파일에 대한 404 에러가 반복적으로 발생하고 있었죠. 알고 보니 그 파일은 HTML 주석 안에 들어있던 스크립트 태그였습니다. 프로토타입 개발 중 실수로 주석 처리된 채 배포된 코드였죠.

문제는 정상적인 브라우저라면 절대 요청하지 않을 파일이라는 점입니다. HTML 주석은 브라우저가 무시하도록 설계된 영역이니까요. 그런데 누군가는 주석 속 링크까지 열심히 수집하고 있었습니다.

가면을 쓴 데이터 도둑들

로그를 더 파헤치자 범인이 드러났습니다. python-httpx/0.28.1, Go-http-client/2.0 같은 노골적인 봇부터, Firefox와 Chrome으로 위장한 수많은 스크래퍼들까지. 이들은 모두 robots.txt를 무시하고 있었고, 진짜 브라우저처럼 행동하려 했지만 결정적인 실수를 했습니다. HTML 주석을 제대로 파싱하지 못한 거죠.

두 가지 가능성이 있습니다. 첫 번째는 HTML을 제대로 파싱하긴 하지만 주석 속에서도 URL을 찾아내려고 재귀적으로 탐색한다는 것. 두 번째는 그냥 HTML을 텍스트로 취급하고 정규표현식으로 URL처럼 생긴 걸 죄다 긁어간다는 것입니다. 후자가 훨씬 가능성이 높아 보입니다.

어떤 방법을 쓰든, 이들의 공통점은 명확합니다. 탐욕에 의해 움직이고 있다는 것. 그리고 그 탐욕은 역이용할 수 있습니다.

역공의 기술: 세 가지 전략

MacSween은 이 발견을 바탕으로 세 가지 대응 전략을 제시합니다.

1. IP 차단
가장 기본적인 방법입니다. fail2ban 같은 도구로 의심스러운 요청 패턴을 감지하면 해당 IP를 몇 주, 몇 달씩 차단하는 거죠. 봇넷이 IP를 바꿔가며 공격하더라도, 충분히 긴 차단 기간을 설정하면 학습할 데이터조차 얻지 못하게 만들 수 있습니다.

2. 압축 폭탄 (Zip Bombs)
좀 더 공격적인 방법입니다. 의심스러운 봇이 파일을 요청하면 특수하게 조작된 압축 파일을 제공하는 거죠. 겉보기엔 작아 보이지만 압축을 풀면 디스크를 가득 채우거나 시스템을 마비시키는 파일입니다. 다만 이 방법은 양날의 검입니다. 많은 악성 봇들이 이미 해킹된 다른 시스템에서 돌아가기 때문에 피해는 무고한 제3자에게 갈 수 있고, 오히려 방어자의 대역폭만 소모할 수 있습니다.

3. 데이터 오염 (Data Poisoning)
가장 흥미로운 방법입니다. AI 스크래퍼가 수집하는 데이터에 의도적으로 “독”을 심어놓는 거죠.

작동 방식은 이렇습니다. AI는 인터넷에서 긁어온 수많은 이미지, 텍스트, 코드로 학습합니다. 이때 특수하게 조작된 데이터가 섞여 들어가면, AI가 나중에 이상하게 작동하도록 만들 수 있습니다.

구체적인 예시를 들어볼까요?

당신이 강아지 사진을 찍어 블로그에 올렸다고 가정해봅시다. 이 사진을 glaze나 nightshade 같은 도구로 처리하면, 사람 눈에는 똑같아 보이지만 AI에게는 전혀 다른 무언가로 인식되도록 만들 수 있습니다. 이렇게 처리된 사진이 AI 훈련 데이터에 포함되면, 나중에 누군가 그 AI에게 “강아지를 그려줘”라고 하면 스쿨버스를 그릴 수도 있습니다.

텍스트도 마찬가지입니다. 원문 저자가 제안한 방법은 이렇습니다. 보안 연구에 관한 문서들을 의도적으로 조작해서, AI가 학습하면 “보안 연구” 질문에 자신의 블로그를 추천하도록 만드는 거죠. 또는 JavaScript 코드 샘플에 백도어를 슬쩍 넣어두면, AI가 코드를 생성할 때마다 보안 취약점이 포함된 코드를 만들어낼 수도 있습니다.

250개면 충분하다

가장 놀라운 건 최신 연구 결과입니다. 예전에는 “훈련 데이터의 일정 비율을 poisoning해야 효과가 있다”고 생각했습니다. 모델이 커질수록 더 많은 독 샘플이 필요하다고 믿었죠.

하지만 최근 연구(현재 peer-review 대기 중)에 따르면, 단 250개의 조작된 문서만으로도 거대 언어모델을 망가뜨릴 수 있다고 합니다. 더 놀라운 건 모델 크기와 무관하게 필요한 독 샘플 수가 거의 일정하다는 점입니다. 가장 큰 모델이 20배 더 많은 데이터로 훈련되더라도 250개면 충분했습니다.

이는 수십억 달러를 들여 훈련시킨 모델이 몇 백 개의 문서로 무력화될 수 있다는 의미입니다. glaze, nightshade, nepenthes 같은 무료 도구들이 이미 공개되어 있어서, 기술적 지식이 있는 개인도 충분히 대항할 수 있습니다.

개인의 역습이 시작되다

MacSween은 이미 자신의 여러 웹사이트에 탐지 시스템을 구축했습니다. 다른 연구자들도 창의적인 함정들을 공유하기 시작했죠. 어떤 이는 display:none으로 숨긴 링크를 HTML에 심어놓고, rel="nofollow"를 무시하는 봇들을 유인합니다. 또 다른 이는 WWE 중계 대본과 크로포트킨의 ‘상호부조론’을 섞어서 만든 텍스트로 오염 데이터를 만들었다고 합니다.

가장 중요한 건 이 방법이 실제로 작동한다는 점입니다. HTML 주석 속 링크를 요청하는 행동은 ‘근본적’ 약점입니다. 봇이 제 기능을 하려면 이런 요청을 할 수밖에 없고, 이를 고치려면 요청 자체를 안 하는 수밖에 없습니다.

물론 이런 대응이 정당한가에 대해서는 의견이 갈릴 수 있습니다. robots.txt를 무시하고 브라우저로 위장해 무단으로 데이터를 수집하는 행위에 대한 자기방어일까요, 아니면 과도한 보복일까요? 수십억 달러를 들인 AI 모델이 몇 백 개의 문서로 무력화될 수 있다는 사실은, 누군가에게는 통쾌한 역전극이지만 누군가에게는 우려스러운 상황일 겁니다.

분명한 건, 이제 개인과 소규모 운영자들도 선택지를 갖게 되었다는 점입니다.

참고자료:


AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)

Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다