1P by GN⁺ 1일전 | ★ favorite | 댓글 1개
  • 웹 트래픽의 대부분은 에서 발생하며, 이 중 일부는 악의적인 목적으로 사용됨
  • Zip Bomb은 작은 압축 파일이지만, 이를 풀면 매우 큰 파일로 확장되어 서버를 과부하 시킬 수 있음
  • 압축 기술은 웹에서 데이터를 효율적으로 전송하기 위해 사용되며, 봇도 이를 활용함
  • 악성 봇을 탐지하면, 서버는 gzip으로 압축된 파일을 제공하여 봇을 무력화함
  • Zip Bomb은 완벽한 해결책은 아니지만, 단순한 봇을 막는 데 효과적임

Zip Bomb을 사용하여 서버 보호하기

  • 웹 트래픽의 대부분은 봇에서 발생하며, 이 중 일부는 악의적인 목적으로 사용됨
  • 악성 봇은 서버의 취약점을 발견하고 악성 스크립트를 삽입하여 서버를 봇넷으로 변환할 수 있음
  • Zip Bomb은 작은 압축 파일이지만, 이를 풀면 매우 큰 파일로 확장되어 서버를 과부하 시킬 수 있음

압축 기술의 활용

  • gzip은 웹에서 데이터를 효율적으로 전송하기 위해 사용되는 압축 기술임
  • 웹 브라우저와 봇은 모두 gzip 압축을 지원하며, 이를 통해 대역폭을 최대한 활용함
  • 악성 봇을 탐지하면, 서버는 gzip으로 압축된 파일을 제공하여 봇을 무력화함

Zip Bomb 생성 방법

  • dd 명령어를 사용하여 10GB의 데이터를 생성하고, 이를 gzip으로 압축하여 10MB 파일로 만듦
  • 서버는 악성 요청을 탐지하면, 10MB의 Zip Bomb 파일을 제공하여 봇을 무력화함

Zip Bomb의 한계

  • Zip Bomb은 완벽한 해결책은 아니며, 일부 봇은 이를 감지하고 우회할 수 있음
  • 그러나 단순한 봇을 막는 데는 효과적이며, 서버 보호에 유용한 도구임

관련 기사

  • 1.3백만 웹 요청을 처리하는 방법
  • Apache 서버 서명 변경
  • Google Analytics에서 Do Not Track 준수하기
Hacker News 의견
  • 어렸을 때 장난으로 내 홈페이지에 ln -s /dev/zero index.html을 했던 기억이 있음. 당시 브라우저는 이를 싫어했고, 시스템이 멈추거나 다운되기도 했음
    • 이후 브라우저가 실제 콘텐츠를 확인하기 시작하면서 이런 요청을 중단했음
  • 요즘 거의 모든 브라우저가 zstd와 brotli를 지원하므로, 이러한 폭탄이 더 효과적일 수 있음
    • 예전 댓글에서 1.2M:1 압축 비율을 보여주었고, zstd는 더 나은 성능을 보임
  • 봇은 현대 압축 표준을 지원하지 않을 수 있음
    • 이는 봇을 차단하는 좋은 방법이 될 수 있음: 모든 현대 브라우저가 zstd를 지원하므로, 화이트리스트에 없는 브라우저 에이전트에 이를 강제하면 스크래퍼를 혼란스럽게 할 수 있음
  • 이전 직장에서 봇이 워드프레스 취약점을 발견하고 서버에 악성 스크립트를 삽입한 적이 있음
    • 워드프레스 설정 후 1시간 만에 PHP 셸이 서버에 배포되는 경험을 한 사람이 나만이 아니라는 사실이 재미있음
  • zip 폭탄은 재미있음. 보안 제품에서 특정 크기 이상의 zip 아카이브를 제대로 검사하지 않는 취약점을 발견한 적이 있음
    • 이로 인해 zip 폭탄을 오피스 xml 문서에 넣으면 쉽게 식별 가능한 악성코드가 포함되어 있어도 제품이 이를 통과시킴
  • ssh를 사용하여 루트 비밀번호를 추측하려는 ssh 클라이언트를 충돌시키는 방법을 알아냈음
    • 결과적으로 스크립트 키디들이 내 서버를 ddos 공격했음
    • '나쁜 행위자'를 식별하고 방화벽 규칙으로 IP를 차단하는 방법으로 전환했음
    • IPV6로 인해 점점 더 어려워지고 있음
  • 웹 페이지를 작성하는 사람들은 인간에게 보이지 않는 링크로 zip 폭탄을 만들 수 있음 (흰 배경에 흰 글자, 호버/클릭 앵커에 강조 표시 없음)
    • 봇은 이를 다운로드하여 확인함 (크롤러와 AI 스크래퍼도 마찬가지)
  • 이는 gzip 폭탄임 (일반 압축 웹페이지처럼 작동함), 바이러스를 차단하는 고전적인 zip 파일이 아님
  • 보통의 허니팟 스크립트 대신 이를 배포했음
    • 잘 작동하지 않음
    • 웹 서버 로그에서 봇이 10메가바이트의 독약을 전부 다운로드하지 않는 것을 볼 수 있음
    • 다양한 길이에서 중단됨. 지금까지 약 1.5Mb 이상 가져간 것을 본 적이 없음
    • 아니면 작동 중일까? 실시간으로 스트림을 디코딩하고 충돌하는 것일까? 예를 들어, 1.5Mb를 읽은 것으로 기록된 것이 실시간으로 RAM에서 1.5Gb로 디코딩되고 충돌할 수 있을까?
    • 알 방법이 없음
  • 얼마 전 Tor Project의 검열 방지 인프라가 zip 폭탄에 관한 블로그 게시물과 같은 사이트에서 운영되던 사건이 있었음
    • Google이 zip 파일 중 하나를 크롤링하여 악성 도메인 목록에 추가했고, Tor의 Snowflake 도구의 중요한 부분이 손상됨
    • 문제를 해결하는 데 몇 주가 걸림
  • 내 애플리케이션 중 하나에서 업로드를 보호하기 위해 10MB 크기의 고정 크기 임시 디스크 파티션을 만들어 너무 큰 파일이 업로드될 경우 그 영향을 제한함
  • 몇 년 동안 조합한 스크립트를 사용하여 비슷한 작업을 수행함
    • 매년 404 로그를 확인하고 가장 인기 있는 취약점 경로를 블랙리스트에 추가함
    • 해당 URL을 3회 요청하면 해당 호스트를 제한된 합법적 경로만 허용하는 그레이리스트에 추가함