PeAR: A Static Binary Rewriting Framework for Binary-Only Fuzzing
이 논문은 정적 인스트루멘테이션이 바이너리 전용 퍼징을 위한 동적 인스트루멘테이션의 실용적이고 효과적인 대안임을 입증하며 높은 타겟 호환성, 지속 모드(persistent mode)를 통한 상당한 성능 이득, 그리고 컴파일러 기반 방식에 필적하는 커버리지를 달성하는 정적 바이너리 재작성 프레임워크인 PeAR을 소개한다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
당신이 잠겨 있고 신비로운 건물(소프트웨어) 속에 숨겨진 함정을 찾으려는 보안 요원이라고 상상해 보십시오. 당신은 설계도(소스 코드)를 볼 수 없기 때문에, 문과 벽에 수천 개의 서로 다른 물체를 던져서 무엇이 부서지는지 확인하며 함정이 어디에 있을지 추측해야 합니다. 이 과정을 **퍼징(fuzzing)**이라고 부릅니다.
새로운 테스트 지점을 찾았는지 알기 위해서는 이미 방문한 건물의 어느 부분을 지나왔는지 추적할 방법이 필요합니다. 보통은 건축가(컴파일러)가 당신의 발걸음을 세기 위해 작은 센서(인스트루멘테이션)를 설치해 둡니다. 하지만 당신은 설계도가 없기 때문에, 건물이 이미 완공된 후에 직접 센서를 설치해야 합니다.
여기에는 두 가지 주요 방법이 있습니다:
- "라이브" 방식 (동적 방식): 건물을 던지는 동안 건물 안에 서서 모든 것을 지켜보고 기록하는 작업 팀을 고용합니다. 매우 정확하지만, 작업자들이 느리고 방해가 되어 전체 과정이 훨씬 더 느려집니다.
- "프리-게임" 방식 (정적 방식): 건물이 문을 열기 전에 몰래 들어가서 벽을 수정하고 센서를 설치한 뒤, 건물을 다시 잠급니다. 센서가 건물 자체의 일부가 되기 때문에 이 방식은 훨씬 빠릅니다. 하지만 위험합니다. 만약 벽 구조를 잘못 예측하면 건물을 망가뜨리거나 함정을 완전히 놓칠 수도 있습니다.
오랫동안 사람들은 "프리-게임" 방식이 너무 서투르고 오류가 잦다고 생각했기 때문에, "라이브" 방식만이 안전한 선택이라고 믿어 왔습니다.
PeAR: 마스터 리노베이터 (숙련된 개보수 전문가)
이 논문의 저자들은 PeAR라는 새로운 도구를 개발했습니다. PeAR을 완성된 건물에 몰래 들어가서 벽을 정확하게 파악하고, 아무것도 망가뜨리지 않으면서 첨단 센서를 설치할 수 있는 고도로 숙련된 자동 개보수 팀이라고 생각하십시오.
그들은 "프리-게임" 방식이 단순히 위험한 도박이 아니라, "라이브" 방식만큼이나 좋으면서도 훨씬 더 빠를 수 있다는 것을 증명하고자 했습니다.
무엇이 Pearing을 특별하게 만드는가?
대부분의 이전 개보수 팀(기존 도구들)은 기본적인 센서만 설치할 수 있었습니다. 그들은 현대적인 보안 요원들이 더 빠르게 작업하기 위해 사용하는 화려한 기술들을 다룰 수 없었습니다. 하지만 PeAR은 세 가지 고급 기술을 수행할 수 있는 새로운 신뢰할 수 있는 지도 제작 시스템(GTIRB라고 불림)을 기반으로 구축되었습니다.
"리셋 없는" 루프 (지속 모드):
- 기존 방식: 돌을 던질 때마다 작업 팀이 당신을 밖으로 내보내고, 문을 다시 만들고, 당신을 다시 들여보내야 합니다. 이는 시간이 너무 오래 걸립니다.
- PeAR 방식: PeAR은 당신이 건물을 떠나지 않고도 연속으로 1,000개의 돌을 던질 수 있는 특별한 복도를 설치합니다. 돌을 던질 때마다 방을 초기화하기만 하면 됩니다. 이 방식은 과정을 믿을 수 없을 정도로 빠르게 만듭니다.
"설정 건너뛰기" 기술 (지연된 초기화):
- 기존 방식: 어떤 건물들은 돌을 던지기 시작하기도 전에 입구에서 긴 지루한 보안 검사(라이브러리 로딩, 설정 확인 등)를 거쳐야 합니다.
- PeAR 방식: PeAR은 건물을 절개하여 지루한 설정이 끝난 후에 당신이 돌을 던질 수 있도록 합니다. 매번 기다리는 줄을 건너뛰는 것입니다.
"텔레파시 전달" (공유 메모리 퍼징):
- 기존 방식: 당신은 종이에 돌의 정보를 적어서 우체통에 넣어야 하고, 건물은 그 우체통을 열어서 읽어야 합니다. 이는 느립니다.
* PeAR 방식: PeAR은 당신의 손과 건물의 손 사이에 직접 연결된 튜브를 설치합니다. 당신은 공중을 통해 돌을 직접 전달합니다. 종이도, 우체통도, 기다림도 없습니다.
- 기존 방식: 당신은 종이에 돌의 정보를 적어서 우체통에 넣어야 하고, 건물은 그 우체통을 열어서 읽어야 합니다. 이는 느립니다.
대규모 테스트
저자들은 25개의 복잡한 소프트웨어 프로그램을 포함하는 유명한 장애물 코스인 FuzzBench를 사용하여 PeAR을 다른 도구들과 비교 테스트했습니다. 그들은 엄청난 시간(연속적인 컴퓨터 처리량으로 4.25년에 해당하는 양) 동안 테스트를 진행했습니다.
결과는 다음과 같습니다:
- 신뢰성: PeAR은 25개의 건물 중 22개를 성공적으로 수정했습니다. 이는 다른 최고의 "프리-게임" 도구들과 대등한 수준이며, 센서를 설치하기 위해 건물을 망가뜨릴 필요가 없다는 것을 증명합니다.
- 속도: PeAR이 화려한 기술들("리셋 없는" 루프와 "텔레파시 전달")을 사용했을 때, 기본 버전보다 4배 더 빨라졌습니다. 이는 다른 어떤 "프리-게임" 도구보다도 현저히 빠른 속도였습니다.
- 정확도: 훨씬 더 빨라졌음에도 불구하고, PeAR은 함정을 놓치지 않았습니다. 느린 "라이브" 방식이나 설계도를 사용하는 도구들과 똑같은 양의 숨겨진 경로(코드 커버리지)를 찾아냈습니다.
결론
이 논문은 "프리-게임" 방식(정적 바이너리 인스트루멘테이션)이 더 이상 위험하거나 느리거나 부정확한 옵션이 아니라고 결론짓습니다. PeAR과 같은 올바른 도구가 있다면, 설계도가 없더라도 빠르고 정확하게 버그를 찾기 위해 폐쇄형 소프트웨어를 수정할 수 있습니다. PeAR은 당신이 개보수 팀의 속도와 실시간 관찰자의 정밀함을 동시에 가질 수 있음을 증명합니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.