블로그로 돌아가기

작업 증명 벽이 일반 웹사이트에 등장: CrowdSec 1.8, Anubis 및 해시가 주요 문제가 아닌 이유

2026년 9월 1일 CrowdSec는 1.8 버전을 출시했습니다: proof-of-work와 브라우저 지문 인식이 이제 self-hosted WAF에 포함되었습니다. 우리는 왜 탐지가 레지던트 IP와 클린 TLS의 무용성을 인정했는지, PoW 작업이 사람과 봇에게 각각 얼마나 비용이 드는지(네이티브 솔버에서 0.017초 대 전화기에서 2분) 그리고 Kasada의 상업적 PoW가 공개 Anubis보다 본질적으로 더 위험한 이유를 분석합니다.

📅2026년 9월 4일
작업 증명 벽이 일반 웹사이트에 등장: CrowdSec 1.8, Anubis 및 해시가 주요 문제가 아닌 이유

2026년 9월 1일, CrowdSec 1.8이 출시되었습니다. 이 오픈 소스 WAF는 서버에 단 하나의 helm install로 설치할 수 있으며, 브라우저 핑거프린팅과 작업 증명(proof-of-work)이라는 두 가지 기능이 추가되었습니다. 지금까지 PoW 방화벽은 주로 깃 포지(git-forges)와 메일링 리스트 아카이브에서 발견되었습니다. 이제 이러한 계층은 하루에 500명의 방문자가 있는 모든 웹사이트에 적용될 수 있습니다.

무엇이 바뀌었는지, 왜 탐지가 "CPU로 지불하라"는 방향으로 나아갔는지, 그리고 가장 중요한 것은 이 구조에서 해시가 가장 작은 문제라는 이유를 알아보겠습니다.

무슨 일이 일어났는가: PoW가 깃 포지에서 일반 웹사이트로 내려왔다

CrowdSec는 자체 호스팅 시스템입니다: 에이전트는 로그를 읽고, WAF는 애플리케이션 앞에 위치하며, "바운서"는 차단합니다. 1.8 버전에서 팀은 WAF에 "이 IP가 나쁜가?"라는 질문에 답하는 것이 아니라 "이것이 실제 사람의 브라우저인가, 아니면 사람인 척하는 봇인가?"라는 질문에 답하는 메커니즘을 추가했습니다. 답변은 핑거프린트(브라우저 특성과 TLS 서명)와 작업 증명으로부터 수집됩니다. 클라이언트는 백엔드가 요청을 보기 전에 이 계산 문제를 해결해야 합니다.

저자들은 동기를 외교적으로 표현하지 않습니다: 2026년의 평균 봇은 실제 Chrome, 일관된 TLS 핑거프린트, 거주하는 IP를 가지고 있으며, 인내심은 대기 엔지니어보다 더 많습니다. 탐지 측면에서의 이 인정은 어떤 분석보다 더 가치가 있습니다: 거주하는 주소와 깔끔한 TLS는 더 이상 구분되는 특징이 아닙니다. IP 평판과 핸드셰이크로 인해 봇이 더 이상 사람과 다르지 않으므로, 보호는 브라우저에는 저렴하고 머신 팜에는 비싼 특징을 찾고 있습니다.

동시에 Hacker News에서는 POWBlock이 등장했습니다 — "모든 서버를 위한 작업 증명 마이크로서비스". 하나의 릴리스는 우연으로 치부할 수 있지만, 일주일에 두 개의 독립적인 신호는 이미 방향성을 나타냅니다.

Anubis를 통한 PoW 방화벽의 구조

장르의 기준은 Anubis입니다: MIT 라이센스 하에 Go로 작성된 리버스 프록시로, 2025년 1월부터 Xe Iaso가 Techaro 브랜드로 개발하고 있습니다. 아이디어는 1997년 아담 백의 해시캐시에서 직접 가져온 것입니다: 클라이언트는 SHA-256이 필요한 수의 선행 0을 가진 해시를 제공할 때까지 값을 반복합니다. 문제를 해결하면 서명된 JWT 쿠키(techaro.lol-anubis-auth)와 임시 접근 권한을 받습니다. 해결하지 못하면 백엔드는 당신에 대해 알지 못합니다.

난이도는 관리자가 설정합니다. 기본적으로 Anubis는 브라우저처럼 보이는 모든 것을 도전합니다 — 즉, User-Agent에 Mozilla라는 문자열이 있는 모든 것입니다. 각 수준의 난이도는 다음과 같이 측정됩니다:

  • 난이도 1 — 100ms 미만.
  • 난이도 4 (기본값) — Intel Core Ultra 7 165H에서 약 1.35초, 이는 브라우저에서 초당 약 87,600 해시입니다.
  • 난이도 8 — 약 11초.
  • 난이도 10 — 약 114초.

4단계와 10단계 사이의 차이는 약 84배입니다. 도입한 목록은 인상적입니다: 리눅스 커널 메일링 리스트 아카이브, 커널의 git 서버, sourcehut, FFmpeg, GNOME 프로젝트의 GitLab, Wine, sourceware.org, FreeCAD, ScummVM, Enlightenment, UNESCO. 듀크 대학교에서는 2025년 6월에 파일럿을 통해 하루에 400만 개 이상의 원치 않는 HTTP 요청을 차단했습니다 — 약 90%의 쓰레기 트래픽이며, 일주일 동안 12명이 문제를 보고했습니다.

이 방화벽은 악의적으로 생긴 것이 아닙니다. Read the Docs에서는 단 하나의 크롤러가 한 달 동안 73TB를 다운로드했습니다; 차단 후 일일 트래픽은 800GB에서 200GB로 감소했으며, 절감액은 약 1500달러입니다. Drew DeVault는 크롤러와의 싸움이 그에게 개별 주의의 20%에서 100%를 소모한다고 설명했습니다. 2025년 동안 자동화된 트래픽이 23.51% 증가하고 AI 트래픽이 거의 세 배 증가하는 가운데, 관리자들은 빠르게 작동하는 것을 찾기 시작했습니다.

전환: 산업적 파싱에 대해 PoW는 거의 작동하지 않습니다

이제 불편한 부분입니다. 작업 증명은 "검증은 저렴하고 해결은 비쌉니다"라는 비대칭성에 의존합니다. 웹에서는 이 비대칭성이 잘못된 방향으로 펼쳐져 있습니다.

정직한 방문자는 브라우저에서 느린 JavaScript로 해시를 계산합니다. 데이터를 얻으려는 사람은 이를 네이티브 코드로 간주합니다. Tavis Ormandy는 25줄의 C로 해결기를 작성했습니다: 난이도 5의 문제는 약 0.017초 만에 해결됩니다 — 이는 브라우저의 SubtleCrypto보다 약 200배 빠릅니다. GPU에서는 차이가 더 커서 약 100배 이상입니다. 수학적 결론은 간단합니다: 대형 공급업체가 모든 Anubis 사이트를 우회하는 데 드는 비용은 거의 제로입니다.

이것은 이론이 아닙니다. Codeberg는 2025년 8월에 많은 스크래퍼 봇이 Anubis의 도전 과제를 해결하는 방법을 배웠다고 보고했습니다. 방화벽은 여전히 주요 대다수를 차단했지만, 네이티브 솔버에 하루 저녁을 투자할 준비가 된 사람에게는 장벽이 되지 않습니다.

비용을 지불하는 것은 항상 살아있는 사용자입니다. 난이도 5는 새로운 MacBook에서 약 2초, 오래된 노트북에서는 수십 초, 휴대폰에서는 최대 2분이 걸립니다. GitLab GNOME에서는 Firefox에서 30분 동안 멈춘 사례가 기록되었습니다 — 이는 예외적이지만 주목할 만합니다. 또한 엄격한 예외가 있습니다: 기본적으로 Anubis는 JavaScript를 요구하므로 RSS 리더, curl, wget 및 Lynx는 그냥 떨어집니다. 이 프로젝트는 이를 수정하고 — 1.20.0 버전에서 JS 없이 meta-refresh를 통한 경로가 추가되었지만, 1.22.0 버전에서는 반대로 브라우저 요구 사항을 높인 Proof of React가 도입되었습니다.

프로젝트 자체의 안정성에 대해서도 알아야 합니다: 코드의 약 절반은 한 사람이 커밋하며, 80명 이상의 기여자 중 단 한 명만이 10개 이상의 커밋을 초과했습니다. 또한 Anubis에는 GeoIP 및 BGP 필터링을 위한 유료 서비스 Thoth가 통합되어 있습니다 — 즉, 오픈 소스 프로젝트에 상업적 이웃이 있다는 것입니다.

PoW가 실제로 문제를 일으키는 곳: 상업적 버전은 다르게 구성됩니다

여기서 주요 개념의 전환이 숨겨져 있습니다. Kasada, hCaptcha 및 Cloudflare Turnstile도 작업 증명을 사용하지만, Anubis와는 전혀 다릅니다.

Anubis의 퍼즐은 입니다: JS를 실행하고 해시를 계산하면 통과합니다. 하나의 신호, 하나의 장벽. 상업적 시스템에서 PoW는 인증으로 작동합니다. Kasada의 경우 작업은 몇 밀리초밖에 걸리지 않으며 — 너무 적어서 장벽으로서 의미가 없습니다. 의미는 다릅니다: 이를 해결하기 위해 클라이언트는 난독화된 가상 머신을 실행해야 하며, 그 안에서 실제 탐지가 발생합니다. 해시를 계산하더라도 나머지를 수행하지 않으면 아무것도 얻지 못합니다. hCaptcha는 이미지에 대한 판결 위에 PoW를 추가하여 의심스러운 클라이언트에 대한 계산 비용을 높이고, Turnstile은 PoW를 환경의 여러 신호 중 하나로 간주합니다.

차이는 본질적입니다. 오픈 방화벽은 저렴한 네이티브 솔버에 의해 뚫립니다. 상업적 방화벽은 해시가 아니라 다른 사람의 난독화된 코드를 정직하게 실행해야 하는 필요성에 의해 뚫리며, 이는 비쌉니다. 왜냐하면 난독화는 정기적으로 회전하기 때문입니다. CrowdSec 1.8은 이 논리의 하이브리드(핑거프린트와 PoW)를 self-hosted 세계로 가져오며, 이전에는 IP당 최대 비율 제한이 있었습니다.

실제로 이것이 바꾸는 것

데이터를 합법적으로 수집하는 경우 — 가격을 모니터링하거나 브랜드를 추적하거나 연구를 수행하는 경우 — 결론은 꽤 구체적입니다.

  1. 문제는 해시가 아니라 브라우저 레이어입니다. 해시는 밀리초 단위로 네이티브로 계산됩니다. 핑거프린트, 난독화된 VM 및 올바른 환경은 계산되지 않습니다. 실질적인 변화: 이전에 HTTP 클라이언트로 충분했던 곳에서는 이제 실제 브라우저 엔진이 필요합니다. 이는 CPU와 메모리 측면에서 더 비쌉니다.
  2. 경제는 트래픽에서 시간과 프로세서로 이동합니다. 이전에는 비용을 IP와 기가바이트로 계산했습니다. 이제 페이지당 초와 코어 로드를 추가해야 합니다. 기가바이트당 가격이 아니라 하나의 성공적인 기록의 비용을 측정해야 합니다 — PoW 방화벽에서는 이 두 메트릭이 특히 크게 차이가 납니다.
  3. 세션은 자산이 됩니다. Anubis는 시간에 따라 JWT 쿠키를 발급합니다. 각 요청 후 IP를 변경하면 각 페이지에서 PoW 세금을 다시 지불해야 합니다. 거주 프록시에서의 끈적한 세션은 "익명성"이 아니라 계산에서 이점을 제공합니다: 문제를 한 번 해결하면 수십 페이지에 걸쳐 분산됩니다. PoW 세계에서의 공격적인 회전은 좋은 관행에서 과소비로 변합니다.
  4. 솔버는 행동을 대체하지 않습니다. 캡차 솔버가 문제를 해결하지 못하게 된 동일한 논리: 당신은 보이는 문제를 해결하지만, 판결은 그 주위의 보이지 않는 신호에 의해 내려집니다.
  5. 빈도를 줄이십시오 — 이는 어떤 방벽보다 저렴합니다. PoW의 물결은 한 크롤러로부터 한 달에 73TB와 같은 이야기에서 비롯되었습니다. 캐시, 조건부 요청, 합리적인 간격 및 robots.txt에 대한 존중은 도전이 시작되기 전에 레이더에서 벗어나게 합니다. 저렴한 데이터센터 주소와 최대 빈도의 헤드리스는 방벽이 설치되는 바로 그 프로필입니다.

결론

CrowdSec 1.8은 "스크래핑의 끝"이 아니며, Anubis도 그렇지 않습니다: 네이티브 솔버는 난이도 5의 문제를 0.017초에 해결하고, 살아있는 사람은 오래된 전화기에서 최대 2분을 기다립니다. 실제 뉴스는 다릅니다. 첫째, 탐지는 공개적으로 거주 IP와 깨끗한 TLS가 더 이상 아무것도 증명하지 않는다고 인정했습니다. 둘째, "당신이 브라우저임을 증명하라"는 계층이 Kasada에 대한 예산을 가진 대형 플랫폼의 특권이 아니라 일반 웹사이트에 설치되는 오픈 소스로 이동했습니다.

해시와의 전투에 대비할 것이 아니라, "많은 IP와 빠른 HTTP 클라이언트"라는 저렴한 схем이 점점 더 작은 목표에서 떨어질 것에 대비해야 합니다. 반대 구성에서 승리합니다: 요청 수가 적고, 실제 브라우저, 긴 세션 및 신뢰할 수 있는 주소가 필요한 곳에서 하나의 신뢰할 수 있는 통과가 필요합니다.