[논문 리뷰] Chaff Bugs: Deterring Attackers by Making Software Buggier
이 논문은 소프트웨어에 수천 개의 비공격 가능한 메모리 손상 스타일 버그를 주입하여 공격자를 막는 새로운 방어 기법인 '채벌벌레'(chaff bugs)를 소개한다. 이 버그들은 자동화된 도구에 의해 공격 가능하게 보이지만, 과잉 제약된 값이나 사용되지 않는 데이터를 통해 실제로는 공격 가능성이 증명되는 방식으로 설계되어 있으며, 특히 버그 선별 및 공격 코드 개발 단계에서 공격자의 노력이 크게 증가한다. 이는 nginx와 libFLAC과 같은 크래시 내성 시스템의 기능에 영향을 주지 않는다.
Sophisticated attackers find bugs in software, evaluate their exploitability, and then create and launch exploits for bugs found to be exploitable. Most efforts to secure software attempt either to eliminate bugs or to add mitigations that make exploitation more difficult. In this paper, we introduce a new defensive technique called chaff bugs, which instead target the bug discovery and exploit creation stages of this process. Rather than eliminating bugs, we instead add large numbers of bugs that are provably (but not obviously) non-exploitable. Attackers who attempt to find and exploit bugs in software will, with high probability, find an intentionally placed non-exploitable bug and waste precious resources in trying to build a working exploit. We develop two strategies for ensuring non-exploitability and use them to automatically add thousands of non-exploitable bugs to real-world software such as nginx and libFLAC; we show that the functionality of the software is not harmed and demonstrate that our bugs look exploitable to current triage tools. We believe that chaff bugs can serve as an effective deterrent against both human attackers and automated Cyber Reasoning Systems (CRSes).
연구 동기 및 목표
- 공격 코드 개발의 높은 비용과 노력을 줄이기 위해 소프트웨어에 비공격 가능한 버그의 수를 늘리는 것.
- 모든 발견된 버그가 비공격 가능할 가능성이 높아지도록 공격 워크플로우—특히 버그 선별 및 공격 생성 단계—를 방해하는 것.
- 비공격 가능성의 증명이 가능하면서도 공격자나 자동 버그 선별 도구에게는 명백하지 않은 기법을 개발하는 것.
- nginx와 libFLAC과 같은 실제 소프트웨어에 채벌벌레를 주입하는 프로토타입을 통해 실현 가능성의 증명.
- 단순히 억제나 탐지에 의존하는 것 외에 공격자의 시간을 낭비시키는 새로운 형태의 속임수 기반 방어 수단을 제공하는 것.
제안 방법
- 스택 및 힙 버퍼 오버플로우에 초점을 맞춰 소스 코드 수정을 통해 채벌벌레를 주입하는 방식.
- 비공격 가능성 확보를 위한 두 가지 전략: 메모리 손상에 사용되는 값에 과잉 제약을 걸어 안전한 값만 허용하고, 프로그램에서 사용되지 않는 데이터를 덮어쓰는 것.
- 기능적 동작에 영향을 주지 않으면서 nginx와 libFLAC과 같은 실제 C 프로그램에 수천 개의 이러한 버그를 자동으로 생성하는 것.
- 채벌벌레가 공격 가능성을 가진 것으로 보이지 않도록 하되, 실제로는 코드 실행이 불가능한 크래시만 유도하도록 보장하며, 위협 모델 하에서 비공격 가능함을 입증하는 것.
- 채벌벌레가 기존의 버그 선별 도구인 !exploitable과 exploitable에 의해 실제로 공격 가능하다고 탐지됨을 검증하여 공격자의 혼란을 유도하는 것.
- 현재 프로토타입은 소스 코드가 필요하지만, 향후 바이너리 수준 적용이 가능하도록 설계된 것.
실험 결과
연구 질문
- RQ1기능에 영향을 주지 않으면서 실제 소프트웨어에 수많은 비공격 가능한 버그를 주입할 수 있는가?
- RQ2채벌벌레가 자동 버그 선별 도구에 대해 공격 가능하게 보이지만 실제로는 비공격 가능성이 증명될 수 있는가?
- RQ3채벌벌레의 존재가 실제 취약점을 찾고 공격하는 데에 소요되는 공격자의 노력에 크게 영향을 주는가?
- RQ4채벌벌레는 인간 공격자뿐 아니라 자동화된 사이버 추론 시스템(CRSs)에도 효과가 있는가?
- RQ5생산 수준의 소프트웨어에 대규모로 채벌벌레를 주입할 수 있는 프로토타입을 구축하는 것은 가능한가?
주요 결과
- 채벌벌레 기법은 nginx와 libFLAC과 같은 실제 소프트웨어에 수천 개의 비공격 가능한 버퍼 오버플로우 버그를 기능적 동작에 영향을 주지 않고 성공적으로 주입하였다.
- 주입된 버그들은 !exploitable과 exploitable과 같은 기존의 버그 선별 도구에 의해 잠재적으로 공격 가능하다고 탐지되었으며, 현실적인 위장 효과를 입증하였다.
- 비공격 가능성 확보를 위한 두 가지 전략—과잉 제약된 값과 사용되지 않는 데이터 덮어쓰기—가 효과적으로 작동하여 코드 실행이 불가능함을 입증하였다.
- 모든 발견된 버그가 채벌벌레일 가능성이 크게 증가함에 따라 공격자가 자원 고갈 상태에 빠지게 하여 방어 효과를 극대화하였다.
- 기존의 공격 방지 기법과 호환되며, ASLR, CFI 등 다른 방어 기법과 조합이 가능하다.
- 특히 크래시 내성 시스템인 마이크로서비스와 웹 서버와 같은 환경에서 매우 효과적이며, 채벌벌레로 인한 크래시는 정상 사용자에게는 전혀 인지되지 않는다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.