※本記事は、Geminiによる意訳+翻訳を活用し、レイアウト調整したものです。
※感想は、オリジナルです。
原文
https://gemini.google.com/app/960055ab3e6823bf
意訳+要約
Linux環境で使用されている圧縮ツール「XZ Utils」に仕掛けられたバックドアのスクリプトをGoogleのエンジニアが解説
XZ Utilsは、Linuxで使用される圧縮ツールです。2024年4月4日、XZ Utilsにバックドアスクリプトが見つかったことが発表されました。このバックドアスクリプトにより、攻撃者はXZ Utilsを実行しているシステムに不正アクセスできるようになります。
この攻撃は、XZ Utilsのソースコードに悪意のあるスクリプトを挿入することで実行されました。このスクリプトは、XZ Utilsの実行時に実行され、バックドアを追加します。バックドアは、攻撃者がXZ Utilsを実行しているシステムにアクセスできるようにするコマンドを実行します。
攻撃者は、XZ Utilsのソースコードを入手し、悪意のあるスクリプトを挿入しました。このスクリプトは、XZ Utilsのテストファイルに偽装されていました。攻撃者は、XZ Utilsの開発者をだまして、このテストファイルをXZ Utilsのソースコードにマージさせました。
XZ Utilsの開発者は、このテストファイルを単なるバグ修正であると信じていました。そのため、このテストファイルをマージした後、XZ Utilsの新しいバージョンをリリースしました。この新しいバージョンには、バックドアスクリプトが含まれていました。
この攻撃は、XZ Utilsのソースコードのセキュリティ上の脆弱性を悪用したものです。XZ Utilsのソースコードは、攻撃者が悪意のあるスクリプトを挿入できるほど脆弱でした。
この攻撃から学ぶべき教訓は、ソフトウェアのソースコードのセキュリティを十分に確保することです。ソフトウェアのソースコードは、攻撃者が悪意のあるコードを挿入できる可能性があるため、慎重に管理する必要があります。
重要なポイント
- 攻撃者は、XZ Utilsのソースコードに悪意のあるスクリプトを挿入することで、バックドアスクリプトを作成しました。
- バックドアスクリプトは、XZ Utilsの実行時に実行され、攻撃者がXZ Utilsを実行しているシステムにアクセスできるようにするコマンドを実行します。
- 攻撃者は、XZ Utilsのテストファイルに偽装した悪意のあるスクリプトを、XZ Utilsの開発者にだましてマージさせました。
- この攻撃は、XZ Utilsのソースコードのセキュリティ上の脆弱性を悪用したものです。
GeminiへのQA
Q:このような事態がおきた背景には、何があると思いますか?
XZ Utils バックドア事件の背景には、以下の要因が考えられます。
XZ Utils のソースコードは、GitHub で公開されていました。攻撃者は、GitHub のソースコードを改ざんし、悪意のあるコードを挿入しました。この悪意のあるコードは、XZ Utils のビルドプロセスを変更し、悪意のあるライブラリをコンパイルするようにしていました。
- XZ Utils の広範な使用
XZ Utils は、Linux ディストリビューションやソフトウェアパッケージの圧縮に広く使用されています。そのため、攻撃者は、XZ Utils のバックドアを利用することで、多くのシステムに影響を与えることができました。
- 攻撃者の高度な技術力
攻撃者は、XZ Utils のソースコードを改ざんし、悪意のあるコードを挿入するだけでなく、そのコードを難読化することで、検出を困難にしました。また、攻撃者は、XZ Utils のビルドプロセスを変更することで、悪意のあるライブラリをコンパイルするようにしていました。
これらの要因が重なり、XZ Utils バックドア事件が発生したと考えられます。
XZ Utils バックドア事件は、ソフトウェアのソースコード管理の重要性を改めて認識させてくれる事件です。ソフトウェアのソースコードは、攻撃者が悪意のあるコードを挿入できる可能性があるため、慎重に管理する必要があります。また、ソフトウェアの使用前に、脆弱性チェックを行うことも重要です。
Q:開発者の性善説で信頼しきっていたのも問題だったと思います。
確かに、XZ Utils 開発者の性善説も、今回の事件の一因と言えるでしょう。悪意のあるコードが混入する可能性を十分に考慮せず、レビューなしでテストファイルをマージしてしまったことが、攻撃者につけ入る隙を与えてしまいました。
しかし、性善説だけが問題だったわけではありません。前述したように、XZ Utils のソースコード管理の脆弱性や、XZ Utils の広範な使用、攻撃者の高度な技術力も、今回の事件の発生に大きく影響しています。
これらの問題を解決するためには、以下のような対策が必要と考えられます。
- ソースコード管理の強化
ソースコードは厳格に管理し、レビューなしでコードをマージしないようにする必要があります。また、ソースコードリポジトリへのアクセスを制限し、改ざんを防止する対策も必要です。
- 脆弱性対策
ソフトウェア開発者は、脆弱性を早期に発見し、修正する必要があります。また、ソフトウェアユーザーは、常に最新のソフトウェアを使用し、脆弱性対策パッチを適用する必要があります。
- セキュリティ意識の向上
ソフトウェア開発者だけでなく、ソフトウェアユーザーもセキュリティ意識を高める必要があります。ソフトウェアの安全性について理解し、安全なソフトウェア開発・利用を実践することが重要です。
これらの対策を講じることで、XZ Utils バックドア事件のような事件を防ぐことができるでしょう。
参考リンク
圧縮ツール「XZ Utils」にバックドアを仕込んだ謎の人物「Jia Tan」は一体何者なのか? - GIGAZINE
感想+雑記
悪意によるものか善意によるものか分からないが、ソース管理が杜撰だったのが問題だろうな。。。
やろうと思えば、誰でもプルリクは出せるから、マージする際は、ちゃんと見ないとダメだと思う。
たとえ、名声や権威があるひとでも、ね。
人である以上、間違えることはあるからな。
自分は、マージ時に機械的にレビューされたり新規ソースのカバレッジ見るようにしているけど、それの大事さを再認識できた。
もし、開発者のOSS貢献度が数値化されて、上記のバックドア仕込むようなプルリクだすと係数が上がって、弾き出されるようになっったら、PSYCHO-PASSのシビュラシステムの前衛的なものができるなって感じた。
まぁ、アカウント変えたら意味ないとは思うが。
というか、シビュラシステムって、アメリカのクレジットスコアを発展させたようなものだと思っているのだが、どこからインスピレーションを受けたんだろ?
コミット相手が誰であっても、ちゃんとルールを守らせないとダメってのが教訓だね。
GitHub Actionsとかで機械的にやるのが、一番公平で安全を確保できる手段だと感じた。