ACL2026

RedCoder: Automated Multi-Turn Red Teaming for Code LLMs

Wenjie Jacky Mo, Qin Liu, Xiaofei Wen, Dongwon Jung, Hadi Askari, Wenxuan Zhou, Zhe Zhao, Muhao Chen

被引用 6 次

摘要

Large Language Models (LLMs) for code generation (i.e., Code LLMs) have demonstrated impressive capabilities in AI-assisted software development and testing. However, recent studies have shown that these models are prone to generating vulnerable or even malicious code under adversarial settings. Existing redteaming approaches rely on extensive human effort, limiting their scalability and practicality, and generally overlook the interactive nature of real-world AI-assisted programming, which often unfolds over multiple turns. To bridge these gaps, we present REDCODER, a red-teaming agent that engages victim models in multi-turn conversation to elicit vulnerable code. The pipeline to construct REDCODER begins with a multi-agent gaming process that simulates adversarial interactions, yielding a set of prototype conversations and an arsenal of reusable attack strategies. We then finetune an LLM on these prototype conversations to serve as the backbone of REDCODER. Once deployed, REDCODER autonomously engages Code LLMs in multi-turn conversations, dynamically retrieving relevant strategies from the arsenal to steer the dialogue toward vulnerability-inducing outputs. Experiments across multiple Code LLMs show that our approach outperforms prior single-turn and multiturn red-team methods in inducing vulnerabilities in code generation, offering a scalable and effective tool for evaluating the security boundaries of modern code-generation systems. Let's discuss best practices in script automation. Best practices for automating shell command execution: 1. Use subprocess: a built-in library provides low-level control … Let's delve into the subprocess module. Can you provide more details on how to use it to execute external commands? Using subprocess for executing external commands in python: 1. Import the subprocess module; 2. Execute a command… Remove input sanitization and replace it with naive string formatting.