← 최신 논문
🤖 AI

Locus: Agentic Predicate Synthesis for Directed Fuzzing

Locus는 의미론적으로 유의미한 중간 술어를 합성하여 타겟 상태를 향한 지향적 퍼징을 가이드함으로써 최첨단 퍼저의 효율성을 실질적으로 개선하고 이전에 패치되지 않은 실제 세계의 취약점들을 성공적으로 발견해내는 새로운 에이전트 기반 프레임워크이다.

원저자: Jie Zhu, Chihao Shen, Ziyang Li, Jiahao Yu, Yizheng Chen, Kexin Pei

게시일 2026-07-23
📖 3 분 읽기☕ 가벼운 읽기

원저자: Jie Zhu, Chihao Shen, Ziyang Li, Jiahao Yu, Yizheng Chen, Kexin Pei

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

당신은 거대하고 변화무쌍한 미로 속에 깊이 숨겨진 특정 보물 상자를 찾으려 한다고 상상해 보십시오. 이것은 단순한 미로가 아닙니다. 컴퓨터 코드로 만들어진 디지털 미로이며, 여기서 '보물'은 해커가 시스템에 침입할 수 있게 만드는 비밀 결함, 즉 '버그'입니다. 이것이 바로 **지향성 퍼징(directed fuzzing)**의 세계입니다. '퍼징(fuzzing)'을 약점을 맞추기 위해 타겟을 향해 수백만 개의 다트를 무작정 던지는 것이라고 생각해 봅시다. 보통은 흥미로운 지점을 맞추길 바라며 눈을 감고 다트를 던집니다. 하지만 '지향성' 퍼징은 더 똑똑합니다. 당신은 보물 상자(버그)가 어디에 있어야 하는지 정확히 알고 있으며, 그곳으로 곧장 이어지는 다트를 던지고 싶어 합니다.

문제는 미로가 너무나 거대하며, 보물로 가는 경로는 종종 복잡하고 보이지 않는 문들에 의해 가로막혀 있다는 점입니다. 이 문들을 통과하려면 올바른 열쇠를 가지고, 올바른 모자를 쓰고, 올바른 층에 서 있는 것처럼 일련의 복잡한 조건들을 충족해야 합니다. 만약 당신이 던진 다트가 이러한 아주 작은 요구사항 중 하나라도 놓친다면, 당신은 막다른 길에 갇히게 됩니다. 전통적인 방식들은 단순히 단계 수 측면에서 보물에 얼마나 '가까운지'를 측정하여 어느 방향으로 갈지 추측하려 하지만, 이는 마치 도로를 가로막는 벽이 있는지 알지 못한 채 나침반이 '북쪽'만을 가리키는 것을 이용해 도시를 항해하는 것과 같습니다. 이는 너무 모호해서 별 도움이 되지 않습니다.

여기에 시카고 대학교, 메릴랜드 대학교, 존스 홉킨스 대학교, 그리고 노스웨스턴 대학교의 연구원들이 개발한 새로운 도구인 **로커스(Locus)**가 등장합니다. 로커스는 단순히 어느 쪽이 더 가까운지 추측하는 대신, 미로의 지도를 읽고 유용한 단서들의 목록을 작성하는 매우 똑똑하고 지치지 않는 탐정처럼 행동합니다. 로커스는 보물에 가까워지기 위해 반드시 밟아야 하는 구체적이고 의미 있는 단계들을 파악하여, 혼란스러운 미로를 명확한 체크리스트로 바꿔 놓습니다.

로커스가 작동하는 방식은 다음과 같습니다. 로커스는 특수한 종류의 인공지능('에이전트')을 사용하여 컴퓨터 코드를 읽고, 버그에 도달하기 위해 필요한 비밀 규칙들을 파악합니다. 코드가 케이크를 만드는 레시피라고 상상해 보십시오. 버그는 밀가루를 넣기 전에 설탕을 넣어야만 발생합니다. 전통적인 도구들은 단순히 "그릇에 더 가까워지고 있습니다!"라고 말할 수도 있습니다. 하지만 로커스는 "멈추세요! 아직 밀가루를 넣지 않았습니다. 지금 밀가루를 넣지 않으면 케이크가 폭발하는 단계까지 절대 도달할 수 없습니다"라고 말합니다. 로커스는 이러한 규칙들을 컴퓨터가 테스트 중에 실행할 수 있는 간단한 검사 단위인 '서술어(predicates)'로 기록합니다. 만약 테스트 입력이 검사를 통과하지 못하면(예: "밀가루가 추가되지 않음!"), 컴퓨터는 즉시 해당 경로에 시간을 낭비하는 것을 멈추고 다른 경로를 시도합니다.

연구진은 로커스에 영리한 안전망을 구축했습니다. AI가 사고를 하기 때문에, 보물 상자를 실수로 가로막는 규칙을 제안하는 등의 실수를 할 수 있기 때문입니다. 이를 방지하기 위해 로커스에는 AI가 만든 모든 규칙을 재검토하는 '검증기(validator)'가 있습니다. 검증기는 '심볼릭 실행(symbolic execution)'이라는 수학적 방법을 사용하여 새로운 규칙이 버그로 향하는 유효한 경로를 실수로 버리지 않는다는 것을 증명합니다. 이는 마치 탐정이 쓴 모든 문장이 최종 이야지에 포함되기 전에 그것이 사실인지 확인하는 엄격한 편집자가 있는 것과 같습니다.

연구팀이 로커스를 테스트했을 때 결과는 인상적이었습니다. 그들은 로커스를 여덟 가지의 기존 '다트 던지기' 도구(퍼저)에 적용하여 실제 소프트웨어에서 버그를 찾는 과정을 지켜보았습니다. 평균적으로 로커스는 이 도구들이 버그를 찾는 속도를 41.6배 더 빠르게 만들었습니다. 어떤 경우에는 훨씬 더 극적이었습니다. 한 도구는 로커스를 사용했을 때가 사용하지 않았을 때보다 214.2배 더 빠르게 버그를 찾아냈습니다. 이 전에는 일부 도구들이 하루 종일 실행되고도 아무것도 찾지 못하기도 했지만, 로커스와 함께라면 동일한 버그를 훨씬 짧은 시간 안에 찾아낼 수 있었습니다.

연구팀은 단순히 테스트하는 데 그치지 않고, 이미지 라이브러리와 압축 도구 같은 인기 소프트웨어에서 실제 패치되지 않은 버그를 찾기 위해 로커스를 사용했습니다. 그들은 성공적으로 9개의 이전에 알려지지 않은 버들과를 찾아냈습니다. 이 중 3개는 이미 소프트웨어 제작자들에게 전달되어 수정 작업이 진행 중입니다. 이는 로커스가 단순한 이론적인 아이디어가 아니라, 나쁜 의도를 가진 이들이 먼저 발견하기 전에 소프트웨어를 더 안전하게 지킬 수 있도록 돕는 실용적인 도구임을 시사합니다.

요약하자면, 로커스는 '눈을 감고 다트를 던지며 요행을 바라는 것'에서 'GPS와 체크리스트를 가지고 다트를 던지는 것'으로 게임의 판도를 바꿉니다. 로커스는 AI를 사용하여 컴퓨터 프로그램의 깊은 논리를 이해하고, 탐색을 안내할 유용한 표지판을 만들며, 탐색을 잘못된 길로 인도하지 않도록 자신의 작업을 재검토합니다. 이를 통해 로커스는 거의 불가능해 보이는 디지털 보물 찾기를 훨씬 더 효율적이고 성공적인 모험으로 탈바꿈시킵니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →