悪意のコードを含む多数の分岐リポジトリが見つかった話

no extension

2022-08-03 頃の Twitter TL でちょっとした騒ぎを見かけたのだが,詳細記事が出たらしい。

最初は各リポジトリに悪意のコードがねじ込まれたのか? とリポジトリ・アクセスの認証周りを疑ったが,実はそうではなく

Rather, the thousands of backdoored projects are copies (forks or clones) of legitimate projects purportedly made by threat actors to push malware.

ということらしい。 GitHub の公式 tweet にも

とあり,ひと安心といったところ。

知らない人のために一応解説しておくと GitHub には pull request という仕組みがあり,他者のリポジトリにコードを貢献したい場合に自身のリポジトリに分岐(fork)させた上でコードを変更・追加し,そのコードを対象のリポジトリにマージするよう提案を行うことができる。 提案を受けた側は,そのコードのレビューを行った上で明示的な操作でコードを受け入れることができる。 もちろんダメなら拒否もできる。

Pull request は GitHub アカウントを持つユーザなら誰でも可能であり,その過程で悪意のコードを忍ばせることは形式上は可能である。 まぁ,普通は「そういう PR はレビューで拒否しましょうね」となるだろうし,一度そんなコードを送りつけた相手を二度と信用することはないだろう。 なので今回の件は spam の一種とみなすこともできる。 実際,アホみたいな数だしね。

気をつける点があるとすれば「悪意の PR」を送りつけるために作った分岐リポジトリのコードをうっかり取り込んでしまう場合だろう。 最初に紹介した記事では

As a best practice, remember to consume software from the official project repos and watch out for potential typosquats or repository forks/clones that may appear identical to the original project but hide malware.

と述べている。 言われんでも(笑)

それに続けて

Open source code commits signed with GPG keys of authentic project authors are one way of verifying the authenticity of code.

と書かれているが,ぶっちゃけプロジェクトの外側にいる人から見てコミットに OpenPGP 署名があることは大した保証にはならない。 この辺は以前書いた拙文を参考にしてほしい。

じゃあ git commit で OpenPGP 署名を付与することにどんな意義があるかというと,それはチーム運営で威力を発揮する。 つまり公開鍵や電子署名で「ユーザーの身元を保証」するのではなく「身元の保証されたユーザ」同士で鍵と電子署名を運用するのである。 これでチーム以外からのなりすまし commit を検知(防止ではない)しやすくなる。

オープンソース・プロジェクトであれば pull request を受け付けるメンテナの技量と判断が試されるところだろう。

参考図書

photo
セキュリティはなぜやぶられたのか
ブルース・シュナイアー (著), 井口 耕二 (翻訳)
日経BP 2007-02-15
単行本
4822283100 (ASIN), 9784822283100 (EAN), 4822283100 (ISBN)
評価     

原書のタイトルが “Beyond Fear: Thinking Sensibly About Security in an Uncertain World” なのに対して日本語タイトルがどうしようもなくヘボいが中身は名著。とりあえず読んどきなはれ。ゼロ年代当時 9.11 およびその後の米国のセキュリティ政策と深く関連している内容なので,そのへんを加味して読むとよい。

reviewed by Spiegel on 2019-02-11 (powered by PA-APIv5)

photo
信頼と裏切りの社会
ブルース・シュナイアー (著), 山形 浩生 (翻訳)
NTT出版 2013-12-24
単行本(ソフトカバー)
4757143044 (ASIN), 9784757143043 (EAN), 4757143044 (ISBN)
評価     

社会における「信頼」とは。

reviewed by Spiegel on 2015-11-28 (powered by PA-APIv5)