Apple 칩이 밀리초 만에 Linux 안티 크롤링을 무너뜨리다: 연산력 장벽이 실제 사용자만 차단하는 현실

Apple 칩이 밀리초 만에 Linux 안티 크롤링을 무너뜨리다: 연산력 장벽이 실제 사용자만 차단하는 현실

AI 크롤러LinuxPoW

데이터 소스:HN + web research

매일 약 600만 건의 요청이 Linux 커널의 공식 소스 코드 저장소(git.kernel.org)로 물밀듯이 쏟아지고 있습니다. 가장 낙관적인 통계 모델을 적용하더라도 이 중 실제 합법적인 인간의 요청은 단 2%에 불과합니다. 나머지 98%는 대형 언어 모델 훈련을 위해 모든 코드 라인을 집어삼키려는 AI 크롤러입니다.

지칠 줄 모르는 연산력 포식자

5개의 지리적 분산 노드와 90개의 CPU 코어로 구성된 공식 웹사이트 클러스터는 형언할 수 없는 비대칭 부하를 견뎌내고 있습니다. 이 중 14~16개의 코어는 영구적으로 100% 가동 상태에 놓여 있으며, 이들의 유일한 임무는 크롤러를 위해 코드 커밋(commit) 페이지를 렌더링하는 것뿐입니다. 이는 전체 시스템 연산 용량의 20%를 직접적으로 갉아먹고 있으며, 크롤러는 항상 여러 차례의 파상 공세를 펼치기 때문에 실제 순간 최고조 부하는 더욱 날카롭게 치솟습니다.

크롤러의 탐욕은 일반적인 엔지니어링 상식을 뛰어넘습니다. Linux 커널에는 약 148만 개의 코드 커밋 기록이 존재하며, 공식 웹사이트에는 약 922개의 개발자 분기 버전(fork)이 존재하는데, 이들이 얽혀 수십억 개의 유효한 접근 가능 링크를 형성합니다. AI 크롤러는 모든 링크를 기계적으로 순회하며, 완전히 동일한 922개의 중복 콘텐츠를 각각 한 번씩 모두 스크랩합니다. 이는 오늘날의 훈련 데이터 수집이 중복 제거와 같은 엔지니어링 최적화를 완전히 폐기하고, 가장 무식한 전수 조사 방식으로 대상 서버를 압도하는 연산력 밀어붙이기로 변모했음을 의미합니다.

종잇장 같은 연산력 방어선

이처럼 무절제하고 폭력적인 크롤링을 차단하기 위해 Linux 커널 공식 웹사이트는 Anubis라는 안티 크롤링 시스템을 배포했습니다. 이것은 작업 증명(PoW) 기반의 암호학적 수학 문제입니다. 방문자의 기기가 주어진 문자열을 자신의 IP 주소 및 서버의 동적 키와 조합한 뒤, 결과값의 앞 N자리가 모두 0이 될 때까지 지속적으로 SHA-256 해시값을 계산하도록 요구합니다.

현재 Anubis는 66%의 하위 스캐너를 성공적으로 차단했지만, 여전히 33%의 고도로 발전된 봇이 수학 문제를 풀고 메인 사이트에 성공적으로 진입하고 있습니다.

git.kernel.org 요청 퍼널 이미지: git.kernel.org 요청 퍼널: 66% 차단, 33% 통과, 합법적 요청 단 2%. 출처: people.kernel.org

시시각각 압박해 오는 33%의 고급 크롤러에 맞서 방어 측이 취할 수 있는 유일한 수단은 해시 계산 난이도를 레벨 4에서 레벨 5로 상향 조정하는 것뿐이었습니다. 그러나 이 방어선 시스템의 핵심 메커니즘에는 치명적인 약점이 존재합니다. 바로 기기의 연산력을 소비하기 위해 브라우저 내의 JavaScript 스크립트를 사용해야 한다는 것입니다. 고수준 인터프리터 언어를 사용하여 집약적인 해시 계산을 수행하는 것은 본질적으로 효율성이 극도로 낮고 방어 측에 극히 불리한 비대칭적 대응 방식입니다.

하드웨어 명령어의 차원 축소 공격

이 수학 문제가 실제 AI 크롤러에게 얼마나 큰 장애물이 될까요? Hacker News의 기술 토론 게시판에서 semiquaver라는 이름의 한 개발자가 치명적인 기술적 증명을 제시했습니다.

그는 단 10분 만에 맞춤형 Safari 브라우저 확장 프로그램을 작성했습니다. ARM 아키텍처 특유의 SHA256H* 네이티브 하드웨어 가속 명령어를 호출하고 C 언어를 사용하여 핵심 문제 해결 로직을 다시 작성함으로써, 그는 난이도 6 수준의 수학 문제 파훼 속도를 iPhone에서 원래 필요했던 180초에서 밀리초 수준으로 단숨에 압축해 냈습니다. 이는 전용 하드웨어 명령어 세트 앞에서는 순수 소프트웨어 수준의 방어 메커니즘이 무용지물이라는 것을 증명합니다. 공격자가 비효율적인 브라우저 샌드박스를 우회하고 기저의 하드웨어 연산력을 직접 호출할 수 있게 되면, 방어 측이 공들여 설계한 지연 메커니즘은 순식간에 흔적도 없이 사라집니다.

Anubis 난이도 곡선 이미지: Anubis 난이도 단계별 상향과 봇의 후속 조치에 따른 고통 곡선. 출처: people.kernel.org

군비 경쟁의 시스템적 통제 불능

이와 동시에 공격 측의 전술 또한 질적인 변화를 겪고 있습니다. 처음에는 정직하게 실제 신분을 보고하던 요청 헤더(UA)에서 일반 소비자용 브라우저로 완전히 위장하는 단계로 진화했습니다. 오늘날에는 수백만 개의 가정용 광대역 및 모바일 네트워크 IP를 탈취하여 순환시키는 고급 전술로까지 발전했습니다. 은밀하게 작동하는 다양한 프록시 SDK 수익화 도구를 통해, 많은 일반 사용자의 스마트 TV조차 알게 모르게 타인의 데이터 크롤링을 돕는 좀비 네트워크 노드로 전락하고 있습니다.

일부 개발자는 토론 과정에서 극단적인 난이도의 챌린지 문제만 사용하지 않는다면 정상적인 기기의 JavaScript 엔진으로도 8초 만에 문제를 풀 수 있다고 반박했습니다. 그들은 180초와 밀리초 사이의 거대한 간극이 단순히 JavaScript 엔진과 네이티브 C 언어 간의 3개 자릿수 실행 효율성 차이에서 비롯된 것이라고 주장합니다.

그러나 이 점이 바로 방어 측의 난처한 입장입니다. 크롤러는 네이티브 언어, 서버 클러스터, 심지어 기저 하드웨어까지 거리낌 없이 동원할 수 있는 반면, 실제 사용자는 느린 브라우저 실행 환경에 갇혀 있을 수밖에 없습니다. 방어자는 대체 무슨 근거로 장기적인 우위가 자신에게 있다고 가정할 수 있을까요?

기계가 연산 비용을 지불하게 만드는 안티 크롤링 설계는 전용 하드웨어와 네이티브 코드 앞에서는 완전히 무력화되었습니다. 기계가 연산 작업을 수행하는 속도는 항상 인간이 사용하는 일반 단말기보다 몇 배나 더 빠릅니다. Linux 커널 유지보수 담당자인 Konstantin Ryabitsev는 결국 현재로서는 간단한 기술적 해결책이 없으며, 크롤링 대상 링크를 줄이기 위해 일부 검색 기능을 차단하는 방법밖에 없다는 사실을 어쩔 수 없이 인정했습니다. Anubis 안티 크롤링 솔루션의 패배는 AI 크롤러와 웹사이트 방어 간의 연산력 군비 경쟁에서 방어 측이 시스템적 붕괴에 직면하고 있음을 의미합니다. 연산력 장벽이 하드웨어 차원의 공격으로 무너지게 되면, 복잡한 캡차가 막을 수 있는 것은 조용히 코드를 읽으려는 실제 인간 사용자뿐입니다. 필자는 끊임없이 고조되는 이 군비 경쟁 속에서 그 어떤 방어 전략도 다음 순간의 연산력 돌파에 의해 와해될 수 있으며, 미래 동향에 대한 우리의 판단은 여전히 겸허함을 유지해야 한다고 생각합니다.

참고 링크:

  • people.kernel.org 원문 보도
  • HN 커뮤니티 기술 토론