トロイの木馬ソース、開発者には見えないコード変更を追加できる攻撃

数日前 ケンブリッジ大学の研究者が発表 の出版 コードを微妙に置き換える手法 アプリケーションのソースコード内の悪意のあるコード。

攻撃の方法はそれを準備しました すでにCVE-2021-42574にリストされています これはTrojanSourceという名前で提供され、コンパイラー/インタープリターおよびコードを表示する人とは異なって見えるテキストの形成に基づいています。

トロイの木馬ソースについて

方法 コードコメントに特別なUnicode文字を適用することに依存しています、双方向テキストの表示順序を変更します。 これらの制御文字の助けを借りて、 テキストの一部は左から右に表示でき、他の部分は右から左に表示できます.

日常業務では、これらの制御文字を使用して、たとえば、ヘブライ語またはアラビア語の文字列をコードファイルに挿入できます。 ただし、これらの文字を使用して同じ行で異なるテキスト方向の行を組み合わせると、右から左に表示されるテキストのパッセージが、左から右に表示される既存の通常のテキストと重なる場合があります。

この方法では、 悪意のある構成がコードに追加される可能性があります。 ただし、コードを表示するときにこの構造のテキストを非表示にして、次のコメントまたはリテラル内に右から左に表示される文字を追加します。これにより、悪意のある挿入にまったく異なる文字が重ねられます。 このようなコードは意味的には正しいですが、解釈と表示が異なります。

人間のビューアとコンパイラが異なるロジックを表示できるように、ソースコードファイルのエンコーディングを操作する方法を発見しました。 特に有害な方法のXNUMXつは、Unicodeの方向性オーバーライド文字を使用して、コードをその真のロジックのアナグラムとして表示します。 この攻撃はC、C ++、C#、JavaScript、Java、Rust、Go、Pythonに対して機能することを確認しており、他のほとんどの現代言語に対しても機能すると思われます。

コードを確認しながら、 開発者はキャラクターの視覚的な順序に直面し、エディターに疑わしいコメントが表示されます テキスト、WebインターフェイスまたはIDE、 ただし、コンパイラとインタプリタは文字の論理的な順序を使用して、悪意のあるコードを処理します コメント内の双方向テキストに関係なく、そのままです。 いくつかの一般的なコードエディター(VS Code、Emacs、Atom)、およびリポジトリ内のコードを表示するためのインターフェイス(GitHub、Gitlab、BitBucket、およびすべてのAtlassian製品)が影響を受けます。

このメソッドを使用して悪意のあるアクションを実装するには、いくつかの方法があります。非表示の「return」式を追加します。これにより、関数の実行が途中で終了します。 通常は有効な構成と見なされる式のコメントの結論(たとえば、重要なチェックを無効にするため)。 文字列検証の失敗につながる他の文字列値を割り当てる。

さらに、 ホモグリフの使用を含む別の攻撃オプションが提案されました(CVE-2021-42694)。 外観は似ているが、意味が異なり、Unicodeコードが異なるシンボル。 これらの文字は、開発者を誤解させるために、関数名および変数名で一部の言語で使用される可能性があります。 たとえば、異なるアクションを実行する区別できない名前でXNUMXつの関数を定義できます。 詳細な分析がなければ、これらXNUMXつの関数のどちらが特定の場所で呼び出されているかをすぐに理解することはできません。

保護対策として、 Unicode文字をサポートするコンパイラ、インタプリタ、およびアセンブリツールに実装して、エラーまたは警告を表示することをお勧めします。 コメント、文字列リテラル、または出力方向を変更する識別子に不対の制御文字があるかどうか。 これらの文字は、プログラミング言語の仕様でも明示的に禁止されている必要があり、リポジトリを操作するためのコードエディタとインターフェイスで考慮に入れる必要があります。

それに加えて 脆弱性はすでに修正され始めています GCC、LLVM / Clang、Rust、Go、Python、binutils用に準備されています。 GitHub、Bitbucket、Jiraも、GitLabと一緒にすでにソリューションを準備しています。

最後に あなたがそれについてもっと知りたいのなら、 あなたは相談することができます 詳細は次のリンクにあります。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:AB Internet Networks 2008 SL
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。