20P by baeba 6시간전 | ★ favorite | 댓글 9개

서론

  • 인터넷 트래픽의 대부분은 봇이며, 이 중 일부는 악의적인 목적(스팸, 해킹 등)을 가진다.
  • 작성자는 과거에 봇으로 인해 워드프레스 서버가 감염되거나 구글 검색에서 제외되는 등 피해를 겪음.
  • 이를 방지하기 위해 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은 완벽한 방어책은 아님.
    • 정교한 봇은 이를 감지하고 우회할 수 있음.
  • 그러나 무차별 웹 크롤링을 하는 저급 봇에겐 효과적인 방어 수단.
  • 일부 서버 리소스를 사용하더라도 보안을 위해 충분한 가치가 있음.

윤리적으로 좋은 방식은 아니네요. 근본적인 해결책도 아니구요.

재밌는글이네요! 생각지못한 방법이라 알려주셔서 감사합니다!

이런 글을 올리는 목적이 뭘까요?
실제로 크롤러를 돌리는 기업들이 이 글을 읽고 제외까지 할 가능성은 거의 없다고 생각하는데 말입니다.
그럼 이 글은 어떤 독자들을 대상으로 쓴 글일까요?
같이 블로그를 운영하는 사람들에게 이런 방법이 있다고 알려주는 소개글,
아니면 내 블로그 이렇게 보안 쎄니까 할 수 있으면 한번 크롤링 해보라는 어그로?
글을 올려서 얻는 게 뭘지 정말 궁금해집니다

개인 블로그인데 아무 글이나 쓰면 안 되나요? 🤔

물론 공적인 장소가 아니니까 그냥 별 생각 없이 올린 글일수도 있죠.
커뮤니티에서 별 생각 없이 댓글을 달 수도 있듯이요
저는 크롤러를 완전히 막을 수는 없으니 시도 자체를 안 받는 게 가장 좋을 텐데, 어그로를 끄는 의도가 궁금했습니다.

그래서 ip로 봇 판단한 경우도 폭탄 날리겠다는건데요 ㅎㅎ
작성자에게 분노가 느껴진다는.ㅎㅎ

agent가 bot이라고 오는 요청에 폭탄을 선사하겠다는건데..
너무 악의 적이네요. 어짜피 agent는 쉽게 숨길 수 있습니다. 진짜 악의적인 봇이면 악의를 드러내지 않습니다.

말씀하신 User-Agent든 원글에서 언급된 IP 기반 탐지든, 식별 정보는 위장이 가능하기에 악성 여부를 단정하기 어렵다는 점에 동의합니다. 실제 악의적인 봇은 더 교묘하게 접근하겠지요.
제 생각에는 이런 공격보다는, 차라리 부하 제한이 있는 크롤링 API를 제공해서 합법적인 자동화 접근은 허용하되 서버 자원은 보호하는 방향이 더 현실적인 '넛지'가 아닐까 싶습니다. ㅎㅎ

최근 LLM 연계 서비스로부터의 과도한 트래픽으로 인한 피해 사례가 간간이 보이는데, 사실상 그런 유형을 위한 방편으로도 볼 수 있을 것 같습니다. 예를 들어 챗지피티의 웹 검색 기능 등을 보면 그 유저 풀 특성상 '악의적이지 않은' 과도한 트래픽 발생 여지가 다분한데, 이들은 간단한 에이전트 매칭으로 쉽게 걸러진다고 들었습니다. 이게 진짜 의도가 맞다면 애꿎은 OpenAI 서버비(와 평판?)만 축내는 길이지만요..