バックドア XZ
間違いなく XZユーティリティで検出されたバックドア事件は、Linuxの歴史に残る事件の1つである それは無駄ではありませんが、すべての仕事は Jia Tan によって行われました これは応用ソーシャル エンジニアリングの最良の例の 1 つです。 実行された仕事は、投資した時間の量に見合ったものであることは間違いなく賞賛に値します。数週間や数か月の話ではなく、少なくとも 2 年かかります。
この事件は多くの人の注目を集めており、 リバースエンジニアリング分析が始まり、 彼らの予備的な結果によると liblzmaに埋め込まれたバックドアの存在を明らかにする XZ パッケージに侵入するキャンペーンの一環として。このバックドアは、Linux カーネルと Glibc C ライブラリを備えた x86_64 システムに影響を与えるように特別に設計されており、追加のパッチが sshd に適用されて libsystemd とリンクされます。
研究者たちは次のように述べています 当初、バックドアは sshd 認証をバイパスできると考えられていました SSH 経由でシステムにアクセスできましたが、さらなる分析により、バックドアが sshd ログに痕跡を残さずに、システム上で任意のコードを実行できます。
RSA_public_decrypt 関数はバックドアによって傍受され、固定キー Ed448 を使用してホストの署名が検証されます。検証が成功した場合、sshd が権限をリセットする前に、外部ホストによって送信されたコードが system() 関数を使用して実行されます。実行されるコードデータは、RSA_public_decrypt 関数に渡された「N」パラメータから抽出され、事前定義されたキー ChaCha20 を使用して検証および復号されます。
バックドアを有効にするには sshdでは、 標準のホスト鍵交換メカニズムを使用し、攻撃者が準備した鍵にのみ応答します。 事前定義された固定キー Ed448 に対応します。公開鍵署名の検証が失敗した場合、または実行データの整合性が確認されなかった場合、バックドアは制御を標準の SSH 機能に戻します。
攻撃者の秘密キーは不明なままであるため、外部ソースからバックドアをアクティブにするための検証コードを実装したり、ネットワーク上の侵害されたホストを検出するスキャナーを開発したりすることは不可能です。ただし、研究者らは、SSH クライアントによって送信される OpenSSH 証明書内の公開キーをどのように置き換えるかを示すスクリプトを開発しました。この証明書は、バックドアによって傍受された RSA_public_decrypt 関数によって処理されます。
また、 研究者らはバックドアを無力化するメカニズムの存在を発見した (killswitch) sshd を起動する前に環境変数を設定して、ローカル システム上で実行します。また、オブジェクト ファイルをバックドアで抽出してライブラリ内で置き換えるプロセスを混同するために使用されたシェル ビルドの詳細な分析も行われています。 liblzma.
XZ パッケージのコンパイル中に、いくつかのコードが実行されました スクリプトより «build-to-host.m4» テスト ファイルを操作し、 キャラクターに特定の変更を加えました それをそのままのファイルに変換し、そこからシェル スクリプトを抽出しました。結果として得られたシェル スクリプトは、コマンドの特定のシーケンスをスキップして文字を置き換えることで、コンテンツから別のシェル スクリプトを徐々に抽出することができました。
このプロセスの結果、good-large_compressed.lzma ファイルからバックドアを含むファイルを直接抽出し、復号化して liblzma に挿入する、かなり複雑で大規模なシェル スクリプトが作成されました。このスクリプトにはプラグイン メカニズムの実装も含まれており、署名検索を使用して、good-large_compressed.lzma および bad-3-corrupt_lzma2.xz を変更せずに新しいテスト ファイルを配置することで、後で追加の実行可能コンポーネントを配信できるようになります。このコードには、AWK 言語で実装された RC4 アルゴリズムに基づく復号化機能も組み込まれていました。
一方で、この事件を踏まえて特筆すべきことは、 xzbot と呼ばれる一連のツールが開発されています。 含まれるもの:
- 攻撃者による接続試行を検出するために脆弱なふりをする架空のサーバーを作成するハニーポット。
- liblzma.so 内のバックドアの公開キーを独自のものに置き換えるパッチ (対応する秘密キーを使用してバックドアに接続するため)。
- 対応する秘密キーを使用して、変更されたバックドアでコードの実行を開始するデモ。
興味があれば知りたい方は それについてもっと詳しく、詳細はで確認できます 次のリンク。