[논문 리뷰] Adversarial Attacks on Code Models with Discriminative Graph Patterns
이 논문은 코드 모델을 대상으로 하는 블랙박스 적대적 공격 프레임워크인 GraphCodeAttack을 제안한다. 이 프레임워크는 모델 동작에서 분류 가능한 추상구문트리(Abstract Syntax Tree, AST) 패턴을 자동으로 채굴하여 의미를 유지하면서도 영향력이 큰 변형을 생성한다. 모델 예측에 가장 큰 영향을 미치는 AST 부분그래프를 식별하고, 사전 훈련된 코드 모델을 사용해 이를 현실적인 사라진 코드 삽입으로 합성함으로써, CodeBERT와 GraphCodeBERT에서 CARROT보다 30% 높고 ALERT보다 33% 높은 공격 성공률(ASR)을 달성한다. 이는 세 가지 작업에서 검증되었다.
Pre-trained language models of code are now widely used in various software engineering tasks such as code generation, code completion, vulnerability detection, etc. This, in turn, poses security and reliability risks to these models. One of the important threats is extit{adversarial attacks}, which can lead to erroneous predictions and largely affect model performance on downstream tasks. Current adversarial attacks on code models usually adopt fixed sets of program transformations, such as variable renaming and dead code insertion, leading to limited attack effectiveness. To address the aforementioned challenges, we propose a novel adversarial attack framework, GraphCodeAttack, to better evaluate the robustness of code models. Given a target code model, GraphCodeAttack automatically mines important code patterns, which can influence the model's decisions, to perturb the structure of input code to the model. To do so, GraphCodeAttack uses a set of input source codes to probe the model's outputs and identifies the extit{discriminative} ASTs patterns that can influence the model decisions. GraphCodeAttack then selects appropriate AST patterns, concretizes the selected patterns as attacks, and inserts them as dead code into the model's input program. To effectively synthesize attacks from AST patterns, GraphCodeAttack uses a separate pre-trained code model to fill in the ASTs with concrete code snippets. We evaluate the robustness of two popular code models (e.g., CodeBERT and GraphCodeBERT) against our proposed approach on three tasks: Authorship Attribution, Vulnerability Prediction, and Clone Detection. The experimental results suggest that our proposed approach significantly outperforms state-of-the-art approaches in attacking code models such as CARROT and ALERT.
연구 동기 및 목표
- 기존의 코드 모델에 대한 적대적 공격가 정해진 수동으로 만든 변형(예: 변수명 변경, 사라진 코드 삽입 등)에 의존하는 한계를 해결하기 위해.
- 화이트박스 접근이 필요 없이도 모델에 영향을 미치는 패턴을 자동으로 식별하고, 모델에 의존하지 않는 방법을 개발하기 위해.
- 현재 최신 기술보다 더 효과적이고 복잡한 적대적 예제를 생성함으로써 사전 훈련된 코드 모델의 강건성 평가를 향상시키기 위해.
- 공격 성공률을 유지하면서도 필요한 토큰 변경 수를 줄여 공격의 효율성과 침투성(stealth)을 높이기 위해.
제안 방법
- GraphCodeAttack은 모델 출력과 입력 프로그램만을 사용하여 결정 경계를 탐색하는 블랙박스 설정에서 작동한다.
- 입력 프로그램 세트와 그에 해당하는 모델 예측 결과로부터 분류 가능한 AST 부분그래프를 채굴하여, 모델 결정에 가장 큰 영향을 미치는 패턴을 식별한다.
- 프레임워크는 영향력이 큰 AST 패턴을 선택하고, 별도의 사전 훈련된 코드 모델을 사용해 이러한 패턴을 따르는 구체적이고 문법적으로 올바른 코드 스니펫을 생성한다.
- 이러한 구체적 스니펫은 원본 프로그램에 사라진 코드로 삽입되어 의미는 유지되지만 모델 예측을 변경하는 적대적 예제를 생성한다.
- 공격 생성 단계에서는 사전 훈련된 코드 모델을 활용하여 변형된 코드의 문법적 정확성과 자연스러움을 보장한다.
- 이 방법은 두 가지 인기 있는 코드 모델인 CodeBERT와 GraphCodeBERT에서 세 가지 작업—저자 소속 추론, 취약성 예측, 클론 탐지—에 대해 평가되었다.

실험 결과
연구 질문
- RQ1자동으로 채굴된 AST 패턴이 수동으로 만든 변형보다 코드 모델을 위한 적대적 예제 제작에 더 효과적인가?
- RQ2GraphCodeAttack은 CARROT 및 ALERT와 같은 최신 기술의 블랙박스 공격와 비교해 다양한 코드 모델 작업에서 공격 성공률(ASR) 측면에서 어떻게 성능을 내는가?
- RQ3GraphCodeAttack은 성공적인 공격를 위해 필요한 토큰 변경 수를 어느 정도 줄였는가? 이는 효율성과 침투성의 지표가 된다.
- RQ4GraphCodeAttack을 사용하여 전체 적대적 훈련이나 모델 출력 접근 없이도 모델의 강건성을 향상시키기 위한 적대적 미세조정을 수행할 수 있는가?
주요 결과
- GraphCodeAttack은 저자 소속 추론 작업에서 GraphCodeBERT 모델에 대해 평균 공격 성공률(ASR) 0.841을 달성했으며, 이는 CARROT(ASR: 0.598)와 ALERT(ASR: 0.615)를 크게 앞서는 성과이다.
- 모든 평가된 작업과 모델에서 GraphCodeAttack은 CARROT보다 평균 30% 높고 ALERT보다 33% 높은 ASR 향상을 기록했다.
- 기존 기준보다 더 적은 토큰 변경 수를 요구했으며, 입력 파일 크기가 커질수록 코드 변경률이 감소하여 더 높은 효율성과 낮은 탐지 가능성(저항성)을 나타냈다.
- GraphCodeAttack을 사용한 적대적 미세조정은 ALERT 수준의 강건성 향상을 달성했지만, 타겟 모델의 출력 접근이나 데이터셋 전체에 대한 전체 적대적 훈련이 필요로 하지 않았다.
- 이 방법은 취약성 예측 및 클론 탐지와 같은 다양한 작업에 걸쳐 강력한 일반화 능력을 보였으며, 단일 응용 분야를 넘어서 효과적임을 확인했다.
- 사전 훈련된 코드 모델을 사용해 AST 패턴을 구체화함으로써 생성된 적대적 예제의 문법적 정확성과 자연스러움을 보장했다.

더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.