나는 내 서버를 보호하기 위해 ZIP 폭탄을 사용한다

2 hours ago 1

서론

  • 인터넷 트래픽의 대부분은 봇이며, 이 중 일부는 악의적인 목적(스팸, 해킹 등)을 가진다.
  • 작성자는 과거에 봇으로 인해 워드프레스 서버가 감염되거나 구글 검색에서 제외되는 등 피해를 겪음.
  • 이를 방지하기 위해 Zip Bomb을 사용하기 시작함.

본론

  • Zip Bomb이란?

    • 작지만 압축 해제 시 매우 큰 용량으로 확장되는 압축 파일.
    • 1MB 압축 파일이 1GB로, 10MB는 10GB로 확장되어 서버를 마비시킴.
  • 기존의 gzip 기능

    • 웹에서는 전송 효율을 위해 gzip 압축을 사용함.
    • 대부분의 봇도 gzip 압축을 지원함.
  • Zip Bomb을 통한 대응 방식

    • 악성 봇으로 판단되면 200 OK와 함께 gzip 압축된 Zip Bomb 파일을 응답함.
    • 이 파일을 열다가 봇이 서버에서 다운되거나 멈춤.
    • 일반적으로 1MB(1GB 확장) 또는 10MB(10GB 확장)를 사용.
  • Zip Bomb 생성 방법

    dd if=/dev/zero bs=1G count=10 | gzip -c > 10GB.gz
    • /dev/zero로 10GB의 0 바이트 데이터를 생성한 후 gzip으로 압축.
    • 결과물은 약 10MB 크기의 zip bomb.
  • 서버 적용 예시

    • 미들웨어에서 IP 블랙리스트 또는 악성 패턴을 감지하면 Zip Bomb 전송.
    if (ipIsBlackListed() || isMalicious()) { header("Content-Encoding: deflate, gzip"); header("Content-Length: "+ filesize(ZIP_BOMB_FILE_10G)); readfile(ZIP_BOMB_FILE_10G); exit; }

결론

  • Zip Bomb은 완벽한 방어책은 아님.
    • 정교한 봇은 이를 감지하고 우회할 수 있음.
  • 그러나 무차별 웹 크롤링을 하는 저급 봇에겐 효과적인 방어 수단.
  • 일부 서버 리소스를 사용하더라도 보안을 위해 충분한 가치가 있음.

Read Entire Article