AutoStub: Genetic Programming-Based Stub Creation for Symbolic Execution
2509.08524v1
cs.SE, cs.AI, cs.CR
2025-09-12
Авторы:
Felix Mächtle, Nils Loose, Jan-Niclas Serr, Jonas Sander, Thomas Eisenbarth
Резюме на русском
#### Контекст
Symbolic execution является важной техникой для проверки программ, позволяющей изучать различные пути выполнения программы, используя символьные значения в качестве входных данных. Однако, эта техника сталкивается с ограничениями при столкновении с внешними функциями, такими как собственные методы или библиотеки, которые не входят в базовую программу. Традиционные методы прибегают к дополнительному контексту, дорогостоящим SMT-решателям или ручным вмешательствам, чтобы описать эти функции с помощью символьных макетов. Это создает проблемы в ситуациях, когда требуется автоматизированный подход для обхода этих ограничений. Мы предлагаем новую методику, которая автоматически генерирует символьные макеты для внешних функций во время символьного выполнения, используя генетическое программирование.
#### Метод
Метод AutoStub включает в себя несколько основных этапов. Когда символьный выполнятель сталкивается с внешней функцией, AutoStub начинает генерировать тренировочные данные, выполняя функцию на случайно сгенерированных входных значениях и записывая результаты. Затем, генетическое программирование использует эти данные для вывода выражений, которые приближаются к поведению функции. Эти выражения являются символьными макетами, которые могут быть использованы в символьном выполнении, не требуя дополнительных усилий от человека. Этот подход позволяет улучшить процесс тестирования, обойдя ограничения, связанные с внешними функциями.
#### Результаты
Мы провели ряд экспериментов, используя различные программные системы, чтобы оценить эффективность AutoStub. Наши результаты показали, что метод способен аппроксимировать внешние функции с точностью более 90% для 55% оценок, и может выявлять специфичные для языка функции, которые могут вызывать серьезные ошибки во время тестирования. Помимо этого, мы проверили, насколько эти символьные макеты позволяют расширить область программных путей для тестирования и повысить точность выявления ошибок.
#### Значимость
AutoStub может быть применен в различных сферах, где требуется автоматизированное тестирование программного обеспечения, включая безопасность, проверку соответствия стандартам и отладку. Основное преимущество заключается в том, что он упрощает процесс тестирования, уменьшая необходимость вручную создавать макеты, что может быть очень времязатратным и неточным. Этот подход также может обнаруживать скрытые ошибки и edge cases, которые в противном случае оставались бы незамеченными. Мы предлагаем, что развитие таких автоматизированных методов может привести к значительным улучшениям
Abstract
Symbolic execution is a powerful technique for software testing, but suffers
from limitations when encountering external functions, such as native methods
or third-party libraries. Existing solutions often require additional context,
expensive SMT solvers, or manual intervention to approximate these functions
through symbolic stubs. In this work, we propose a novel approach to
automatically generate symbolic stubs for external functions during symbolic
execution that leverages Genetic Programming. When the symbolic executor
encounters an external function, AutoStub generates training data by executing
the function on randomly generated inputs and collecting the outputs. Genetic
Programming then derives expressions that approximate the behavior of the
function, serving as symbolic stubs. These automatically generated stubs allow
the symbolic executor to continue the analysis without manual intervention,
enabling the exploration of program paths that were previously intractable. We
demonstrate that AutoStub can automatically approximate external functions with
over 90% accuracy for 55% of the functions evaluated, and can infer
language-specific behaviors that reveal edge cases crucial for software
testing.
Ссылки и действия
Дополнительные ресурсы: