[논문 리뷰] CodeAttack: Code-Based Adversarial Attacks for Pre-trained Programming Language Models
CodeAttack는 자연스러운 코드 채널에서 사전 훈련된 프로그래밍 언어 모델(PLM)을 회피하기 위해 인식하기 어려운, 코드 구조를 고려한 변형을 생성하는 블랙박스 적대적 공격 프레임워크이다. 마스킹된 코드 모델과 문법적·의미적 제약 조건을 갖춘 근사적 탐색 전략을 활용함으로써, 특히 GraphCodeBERT에서 높은 공격 성공률를 달성하면서도 유창성, 일관성, 최소한의 변경을 유지한다. 이는 최신 PLM의 심각한 취약성을 드러낸다.
Pre-trained programming language (PL) models (such as CodeT5, CodeBERT, GraphCodeBERT, etc.,) have the potential to automate software engineering tasks involving code understanding and code generation. However, these models operate in the natural channel of code, i.e., they are primarily concerned with the human understanding of the code. They are not robust to changes in the input and thus, are potentially susceptible to adversarial attacks in the natural channel. We propose, CodeAttack, a simple yet effective black-box attack model that uses code structure to generate effective, efficient, and imperceptible adversarial code samples and demonstrates the vulnerabilities of the state-of-the-art PL models to code-specific adversarial attacks. We evaluate the transferability of CodeAttack on several code-code (translation and repair) and code-NL (summarization) tasks across different programming languages. CodeAttack outperforms state-of-the-art adversarial NLP attack models to achieve the best overall drop in performance while being more efficient, imperceptible, consistent, and fluent. The code can be found at https://github.com/reddy-lab-code-research/CodeAttack.
연구 동기 및 목표
- 사용자가 읽을 수 있는 요소들(예: 변수 이름, 주석 등)을 조작하는 자연스러운 코드 채널에서 최신 사전 훈련된 프로그래밍 언어 모델(PLM)의 취약성을 폭 드러내는 것.
- 모델 파rameter에 대한 접근이 불가능한 현실적인 블랙박스 공격 방법을 개발하여, 입력 쿼리와 모델 예측 결과에만 의존하는 것.
- 적대적 예제가 인식하기 어려우며, 원본 코드 스타일과 일관되고, 문법적으로 유효하며, 여러 프로그래밍 언어에서 모두 성립하도록 보장하는 것.
- 코드 번역, 코드 복구, 코드-NL 요약 등 다양한 PLM 작업 간 공격의 이식 가능성 평가.
- 코드 전용 제약 조건과 구조 인식 변형이 일반 NLP 적대적 공격 방법보다 효과성과 품질 면에서 뛰어나다는 것을 입증하는 것.
제안 방법
- CodeAttack는 코드 내 취약한 토큰에 대해 맥락적으로 관련성 있고 의미적으로 유효한 대체어를 생성하기 위해 사전 훈련된 마스킹된 CodeBERT 모델을 생성기로 사용한다.
- 그리디 탐색 전략을 적용하여, 특히 식별자, 연산자, 关键어 등을 반복적으로 교체하면서 코드 일관성과 유창성 제약 조건을 강제한다.
- 세 가지 핵심 제약 조건을 적용한다: (1) 코드 문법은 유효한 상태를 유지해야 하며, (2) 변형된 코드는 원래 의미를 유지해야 하며, (3) 변경 사항은 최소화되어 인간 독자에게 인식하기 어려워야 한다.
- 세 가지 공격 변형을 조합한다: CodeAttack_VUL(취약 토큰), CodeAttack_OP(연산자), CodeAttack_TOK(토큰), 최적의 성능을 위해 공동 제약 조건을 적용한다.
- 공격 성공률, 성능 저하(Δ_drop), CodeBLEU 점수(q), 쿼리 효율성 등의 지표를 사용해 평가하며, 유창성과 일관성에 대해 인간 평가도 실시한다.
- 입력 언어에 종속되지 않도록 설계되어, 코드 요약, 코드 번역 등의 다양한 프로그래밍 언어 및 후속 작업 간 이식 가능성을 보장한다.
실험 결과
연구 질문
- RQ1변수 이름이나 주석과 같은 인간이 읽을 수 있는 요소를 대상으로 하는 자연스러운 코드 채널에서의 적대적 공격가 최신 사전 훈련된 프로그래밍 언어 모델의 성능을 심각하게 떨어뜨릴 수 있는가?
- RQ2CodeAttack는 기존의 NLP 기반 적대적 공격 방법에 비해 인식하기 어려운, 자연스럽고 일관된 적대적 코드 샘플을 얼마나 효과적으로 생성하는가?
- RQ3CodeAttack는 다양한 프로그래밍 언어 모델, 작업(예: 코드 번역, 복구, 요약) 및 프로그래밍 언어 간에 얼마나 높은 이식 가능성을 가지는가?
- RQ4GraphCodeBERT가 CodeT5보다 더 취약한 이유는 무엇이며, 사전 훈련 목표는 모델의 강건성에 어떻게 영향을 미치는가?
- RQ5인간 평가자들은 적대적 코드 샘플을 원본 코드와 명백히 구분할 수 있는가? 그리고 변형된 예제는 얼마나 유창하고 일관성 있는가?
주요 결과
- CodeAttack는 평가된 모든 모델과 작업에서 가장 높은 공격 성공률를 기록했으며, 코드 요약 작업에서 최대 50%의 Δ_drop를 유도하여 NLP 기반 기준선을 크게 앞서갔다.
- GraphCodeBERT에서는 코드 번역 작업에서 Δ_drop가 50% 이상으로 증가하여, 데이터 플로우와 식별자 간 관계 의존성으로 인해 높은 공격 효과를 보였다.
- 인간 평가 결과, 72.1%의 적대적 샘플이 평가자에 의해 원본으로 잘못 분류되었으며, 평균 코드 이해도 점수는 5점 만점에 4.14점으로, 유창성과 인식하기 어려움을 확인했다.
- 연산자 수준과 토큰 수준의 제약 조건 조합이 공격 성공률와 Δ_drop를 크게 향상시켰으며, CodeBLEU q 점수는 높은 의미적 유사도를 나타냈다.
- CodeT5는 식별자 예측을 마스킹하여 사전 훈련함으로써 이름 변경에 민감도가 낮아, 다른 모델보다 더 높은 강건성을 보였다.
- CodeAttack는 공격 품질, 효율성, 문법적 정확성 면에서 모든 NLP 기반 적대적 공격 기준선을 능가했으며, 코드 전용 적대적 공격의 새로운 기준을 설정했다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.