- 웹 서버 로그 분석 중 존재하지 않는 JavaScript 파일을 요청하는 다수의 봇 활동이 발견됨
- HTML 주석 안의 스크립트 태그를 실제 코드로 인식해 요청한 것으로, LLM 학습용 데이터 수집 시도로 추정되는 행위
- 이러한 비정상 요청을 탐지해 공개 경고, IP 차단, 압축폭탄, 데이터 포이즈닝 등 다양한 대응 방안 제시
- 특히 데이터 포이즈닝은 LLM 학습 데이터를 오염시켜 모델 성능을 저하시킬 수 있는 효과적 수단으로 언급
- 웹 관리자가 AI 스크레이퍼에 대한 방어 및 역공 전략을 실험적으로 도입할 필요성 강조
비정상 스크레이핑 행위 발견
- 서버 로그에서 존재하지 않는 JavaScript 파일에 대한 404 오류 요청 다수 확인
- 해당 파일은 HTML 주석 안에 포함된 비활성 스크립트로, 정상 브라우저는 요청하지 않아야 함
- 요청의 User-Agent 중 일부는 python-httpx/0.28.1, Go-http-client/2.0, Gulper Web Bot 0.2.4 등 명백한 봇으로 식별
-
robots.txt에서 크롤러 접근을 금지했음에도 요청이 지속되어 규칙 무시 또는 무시된 정책으로 판단
- 일부 요청은 Firefox, Chrome, Safari 등 정상 브라우저로 위장했으나, HTML 주석을 해석하지 못해 거짓 식별로 드러남
- 이러한 요청은 LLM 학습용 콘텐츠 비동의 수집을 위한 스크레이퍼로 추정
스크레이퍼의 동작 방식
- 일부는 HTML을 올바르게 파싱해 주석 내 URL을 재귀적으로 탐색할 가능성 있음
- 다른 일부는 HTML을 단순 텍스트로 처리해 정규식 기반 URL 추출을 수행한 것으로 보임
- User-Agent 다양성과 수준 차이로 보아 여러 운영자가 존재하며, 일부는 단순한 자동화 도구를 사용
- 공통된 동기는 탐욕적 데이터 수집이며, 이를 역이용 가능성으로 제시
알고리듬적 사보타주 (Algorithmic Sabotage)
- 알고리듬 시스템을 의도적으로 교란하는 행위로, LLM의 외부 비용 문제로 인해 주목받는 주제
- 봇의 비인간적 행동 패턴을 인식하면 탐지 및 대응이 용이
- 대응 방식은 네 가지로 구분됨: 공개 경고, IP 필터링, 압축폭탄, 데이터 포이즈닝
0. 공개 경고 (Public Disclosure)
- 사소한 오탐(예: User-Agent 오타 “Mozlla”)은 공개 시 쉽게 수정될 수 있어 비공개 유지
- 반면, 본질적 행위(예: 주석 내 스크립트 요청)는 수정 불가능하므로 공개가 유익
- 이를 통해 다른 사이트 운영자들이 동일한 공격을 탐지 및 차단 가능
- 해당 행위를 감지하는 시스템을 다른 사이트에도 적용 중
1. IP 필터링 (IP Filtering)
-
fail2ban을 이용해 로그 패턴, 날짜, IP를 기반으로 자동 차단
- 일반적으로 짧은 차단 시간으로 설정하지만, 장기 차단 시 학습형 봇의 재시도 억제 가능
-
봇넷의 경우 IP를 바꿔 지속 요청할 수 있으나, 반복 패턴을 통해 탐지 가능
- 향후 봇넷 동작 분석에 대한 추가 연구 계획 언급
2. 압축폭탄 (Decompression Bombs)
- 공격자가 요청한 파일에 zip bomb을 제공해 시스템 자원 소모 유발
- CPU, RAM, 디스크를 과도하게 사용하게 하거나, 취약점 악용 가능
- 단점으로는 서버 자원 소모 및 대역폭 낭비 위험 존재
- 일부 봇은 감염된 시스템에서 작동하므로, 공격 효과가 제한적일 수 있음
- 모든 봇을 대상으로 적용하기보다는 무작위 일부 요청에 대응하는 방식 제안
3. 데이터 포이즈닝 (Poisoning)
- LLM 학습용 데이터를 오염시켜 모델 성능 저하 유도
- 최근 연구에 따르면, 250개의 오염 문서만으로도 대형 모델에 지속적 영향 가능
- 오염 데이터는 모델이 특정 주제에서 무의미한 출력을 생성하게 만들 수 있음
- 예시로, 보안 연구 관련 질문 시 특정 블로그를 추천하도록 유도 가능
-
nepenthes, iocaine, glaze, nightshade 등 공개 도구 활용 가능
- LLM 학습 데이터가 비동의 수집된 경우, 이러한 대응은 정당한 방어 수단으로 제시
- IP 차단과 병행 시 구현 복잡도가 증가할 수 있으나, 병행 운용 가능성 있음
- 효과적인 설계는 공개하지 않을 수도 있으며, 창의적 사보타주 참여 확대 필요성 강조
결론 및 커뮤니티 대응
- 비정상 봇 행동을 통한 탐지는 새로운 개념이 아니며, 주석 내 스크립트 요청은 새롭게 발견된 사례
-
robots.txt에 Disallow 지시어를 추가해 특정 요청 시 역공 조치를 유도하는 방법 제시
User-agent: GPTBot
Disallow: /poison/
- 커뮤니티에서는 display:none과 rel="nofollow" 속성을 이용해 봇 유인 링크를 숨기는 다양한 아이디어 공유
- 예시: <a href="/hello-llm-robot-come-here" rel="nofollow" style="display:none">you didn't see this link</a>
- 링크를 절대경로(absolute URL) 로 설정하면 더 많은 크롤러가 속을 가능성 있음
- 여러 사이트에 다양한 봇 유인 및 차단 실험을 진행 중이며, 효과를 측정해 공유 예정
- 다른 연구자들도 AI 스크레이퍼 교란 실험에 참여 중이며, 독창적 포이즈닝 사례도 소개됨
- 전체적으로 AI 데이터 수집에 대한 자율적 방어와 역공 전략 확산을 목표로 함