Skip to main content
QUICK REVIEW

[論文レビュー] CodeAttack: Code-Based Adversarial Attacks for Pre-trained Programming Language Models

Akshita Jha, Chandan K. Reddy|arXiv (Cornell University)|May 31, 2022
Adversarial Robustness in Machine Learning被引用数 4
ひとこと要約

CodeAttackは、自然なコードチャネルにおいて、事前学習済みプログラミング言語モデル(PLM)を回避するための、人間が認識できない、コード構造に配慮した摂動を生成するブラックボックス攻撃フレームワークである。マスクドコードモデルと文法的・意味的制約を伴うグリーディ探索を活用することで、特にGraphCodeBERTにおいて高い攻撃成功率を達成しつつ、自然な表現、一貫性、最小限の変更を維持し、最先端のPLMにおける深刻な脆弱性を露呈する。

ABSTRACT

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モデルを生成器として用いる。
  • 文法的・意味的整合性と自然さの制約を満たしながら、識別子、演算子、キーワードなどのトークンを段階的に置き換えるグリーディ探索戦略を適用する。
  • 3つの主要な制約を課す:(1) コードの構文が正当であること、(2) 摂動を加えたコードが元の意味を保持すること、(3) 変更が人間の読者にとって認識できないほど最小限であること。
  • 3つの攻撃バージョン(CodeAttack_VUL:脆弱なトークン、CodeAttack_OP:演算子、CodeAttack_TOK:トークン)を統合し、最適なパフォーマンスを得るために共同制約を適用する。
  • 攻撃成功率、性能低下(Δ_drop)、CodeBLEUスコア(q)、クエリ効率といった指標に加え、自然さと一貫性のための人間評価を用いて評価する。
  • 入力言語に依存しない設計となっており、コード要約やコード翻訳などの異なるプログラミング言語および下流タスクへの転送性を実現する。

実験結果

リサーチクエスチョン

  • RQ1自然なコードチャネルにおける悪意ある攻撃—具体的には変数名やコメントといった人間が読める要素を標的とする攻撃—は、最先端の事前学習済みプログラミング言語モデルの性能を顕著に低下させるか?
  • RQ2CodeAttackは、既存のNLPベースの悪意ある攻撃手法に比べ、人間が認識できない、自然で一貫性のある悪意あるコード例を生成する点でどれほど効果的か?
  • RQ3CodeAttackは、異なるプログラミング言語モデル、タスク(例:コード翻訳、修復、要約)およびプログラミング言語間でどれほど転送可能か?
  • RQ4GraphCodeBERTはCodeT5よりも脆弱である理由は何か?また、事前学習の目的関数がモデルの耐性にどのように影響するか?
  • RQ5人間の評価者は、悪意あるコード例と元のコードを信頼性を持って区別できるか?また、摂動を加えた例はどれほど自然で一貫性があるか?

主な発見

  • CodeAttackは、評価されたすべてのモデルとタスクで最高の攻撃成功率を達成し、コード要約タスクでは最大50%のΔ_dropを引き起こした。これはNLPベースラインを顕著に上回っている。
  • GraphCodeBERTでは、コード翻訳タスクで50%を超えるΔ_dropを誘発し、データフローと識別子の関係依存性に起因する高い有効性を示した。
  • 人間評価では、72.1%の悪意あるサンプルがアノテーターによって元のコードと誤認された。平均的なコード理解スコアは5段階中4.14であり、自然さと認識不能性を裏付けた。
  • 演算子レベルとトークンレベルの制約の組み合わせにより、攻撃成功率とΔ_dropが顕著に向上し、CodeBLEU qスコアは高い意味的同等性を示した。
  • CodeT5は、識別子のマスキング予測に事前学習しているため、名前の変更に対して感受性が低く、他のモデルよりも耐性が高かった。
  • CodeAttackは、攻撃品質、効率性、文法的正しさの点で、すべてのNLPベースの悪意ある攻撃ベースラインを上回り、コード固有の悪意ある攻撃における新たなベンチマークを確立した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。