Locus: Agentic Predicate Synthesis for Directed Fuzzing
2508.21302v1
cs.CR, cs.AI, cs.SE
2025-09-02
Авторы:
Jie Zhu, Chihao Shen, Ziyang Li, Jiahao Yu, Yizheng Chen, Kexin Pei
Резюме на русском
## Контекст
Область исследования дирижируемого fuzzing направлена на нахождение входных данных, приводящих программу к конкретным целевым состояниям. Эта задача имеет широкое применение, в том числе в дебаггинге системных ошибок, подтверждении сообщенных багов и генерировании эксплоитов для уязвимостей. Однако она представляет собой значительные трудности из-за того, что целевые состояния часто характеризуются сложной иерархией, а пространство поиска, состоящее из множества возможных входных данных, является очень объемным. Большинство существующих подходов опираются на меры расстояний между ветвлениями или на ручную спецификацию ограничений, чтобы управлять поиском. Однако эти методы недостаточно точны в оценке прогресса поиска или требуют идентификации конкретных типов багов, что снижает их общедоступность.
## Метод
Locus предлагает новую модель синтеза подстрочных условий для более точного определения прогресса в fuzzing. Архитектура построена на агентном фреймворке, в котором инструменты анализа программного кода автоматически генерируют и последовательно уточняют подходящие условия. Чтобы предотвратить ложные отвергания, система использует символьный эксперимент для точного определения целевых состояний. Это позволяет значительно увеличить эффективность fuzzing, сузив поисковое пространство и предоставляя дополнительное руководство для оптимизации.
## Результаты
В ходе экспериментов на данных реальных программных систем, Locus продемонстрировал существенную эффективность. Он ускорил работу стандартных алгоритмов fuzzing на 41.6 раз в среднем, позволив открыть восемь новых багов, один из которых уже принят для исправления. Это доказывает широкую применимость Locus в различных сценариях, включая исправление системных ошибок и снижение рисков безопасности.
## Значимость
Locus может применяться в различных технологических сферах, включая безопасность ПО, оптимизацию систем и разработку сложных программных структур. Его преимущество заключается в увеличении точности и скорости поиска уязвимостей, а также в способности адаптироваться к различным программам и типам багов. Это может существенно повлиять на общую эффективность и надежность программных систем.
## Выводы
Locus является прорывом в области fuzzing, существенно улучшая его эффективность и гибкость. Будущие исследования будут направлены на усовершенствование агентного подхода и расширение его применения в более широких сферах ИТ-технологий.
Abstract
Directed fuzzing aims to find program inputs that lead to specified target
program states. It has broad applications, such as debugging system crashes,
confirming reported bugs, and generating exploits for potential
vulnerabilities. This task is inherently challenging because target states are
often deeply nested in the program, while the search space manifested by
numerous possible program inputs is prohibitively large. Existing approaches
rely on branch distances or manually-specified constraints to guide the search;
however, the branches alone are often insufficient to precisely characterize
progress toward reaching the target states, while the manually specified
constraints are often tailored for specific bug types and thus difficult to
generalize to diverse target states and programs.
We present Locus, a novel framework to improve the efficiency of directed
fuzzing. Our key insight is to synthesize predicates to capture fuzzing
progress as semantically meaningful intermediate states, serving as milestones
towards reaching the target states. When used to instrument the program under
fuzzing, they can reject executions unlikely to reach the target states, while
providing additional coverage guidance. To automate this task and generalize to
diverse programs, Locus features an agentic framework with program analysis
tools to synthesize and iteratively refine the candidate predicates, while
ensuring the predicates strictly relax the target states to prevent false
rejections via symbolic execution. Our evaluation shows that Locus
substantially improves the efficiency of eight state-of-the-art fuzzers in
discovering real-world vulnerabilities, achieving an average speedup of 41.6x.
So far, Locus has found eight previously unpatched bugs, with one already
acknowledged with a draft patch.
Ссылки и действия
Дополнительные ресурсы: