Detection of security smells in IaC scripts through semantics-aware code and language processing
2509.18790v1
cs.CR, cs.AI, cs.LG, cs.SE
2025-09-25
Авторы:
Aicha War, Adnan A. Rawass, Abdoul K. Kabore, Jordan Samhi, Jacques Klein, Tegawende F. Bissyande
Резюме на русском
## Контекст
Infrastructure as Code (IaC) представляет собой методологию автоматизации развертывания и управления инфраструктурой IT с помощью скриптов и инструментов. Она позволяет упростить процесс развертывания программного обеспечения, гаранитируя его консистентность и повторяемость. Однако, существуют серьезные проблемы с безопасностью в IaC-скриптах. Ранее проведенные исследования показали, что многие IaC-скрипты содержат повторяющиеся конфигурационные ошибки, которые могут привести к серьезным атакам. Несмотря на то, что существуют множество методов для обнаружения и устранения этих ошибок, большинство из них основываются на статическом анализе, который часто не учитывает семантические свойства кода и естественного языка. Это включает в себя использование статистических кодовых представлений и машинного обучения. Наша работа посвящена разработке нового подхода к обнаружению этих ошибок, который улучшает статический анализ, используя семантическую информацию из естественного языка и кода.
## Метод
Мы предлагаем метод, который объединяет статический анализ с помощью двух моделей машинного обучения: CodeBERT и LongFormer. CodeBERT используется для понимания семантики программного кода и естественного языка, тогда как LongFormer обеспечивает представление длинных IaC-скриптов с сохранением контекста. Наш подход представляет собой семантический анализ, который дополняет статический анализ стандартного кода. Мы также вводим подход для обнаружения сигнатур безопасности, который использует глубокое обучение, чтобы обнаруживать сигнатуры в обнаруженных ошибках. Для того чтобы проверить эффективность нашего подхода, мы использовали две выборки данных, содержащие ошибки в IaC-скриптах, связанных с Ansible и Puppet.
## Результаты
Мы провели несколько экспериментов, чтобы проверить эффективность нашего подхода. Мы проводили анализ того, как наш метод работает на двух разных наборах данных, связанных с Ansible и Puppet. Мы также проводили исследования, в которых отключали естественный язык или сокращали контекст в IaC-скриптах, чтобы оценить вклад каждого компонента. Наша методика показала значительные улучшения в обнаружении ошибок в сравнении с существующими подходами. Например, на наборе данных Ansible, мы повысили точность (precision) и полноту (recall) с 0.46 и 0.79 до 0.92 и 0.88, соответственно. На наборе данных Puppet, точность и полнота улучшились с 0.55 и 0.97 до 0.87 и 0.75.
## Значимость
Наш подход может быть применен в сфере безопасности IaC, чтобы обнаруживать и устранять безопасностные ошибки в IaC-скриптах. Он предлагает существенные пре
Abstract
Infrastructure as Code (IaC) automates the provisioning and management of IT
infrastructure through scripts and tools, streamlining software deployment.
Prior studies have shown that IaC scripts often contain recurring security
misconfigurations, and several detection and mitigation approaches have been
proposed. Most of these rely on static analysis, using statistical code
representations or Machine Learning (ML) classifiers to distinguish insecure
configurations from safe code.
In this work, we introduce a novel approach that enhances static analysis
with semantic understanding by jointly leveraging natural language and code
representations. Our method builds on two complementary ML models: CodeBERT, to
capture semantics across code and text, and LongFormer, to represent long IaC
scripts without losing contextual information. We evaluate our approach on
misconfiguration datasets from two widely used IaC tools, Ansible and Puppet.
To validate its effectiveness, we conduct two ablation studies (removing code
text from the natural language input and truncating scripts to reduce context)
and compare against four large language models (LLMs) and prior work. Results
show that semantic enrichment substantially improves detection, raising
precision and recall from 0.46 and 0.79 to 0.92 and 0.88 on Ansible, and from
0.55 and 0.97 to 0.87 and 0.75 on Puppet, respectively.