2019/07/08

Ruby の「strong_password」gem のバックドア

cracker hacker cyber 攻撃 侵入

2019 年 7 月 8 日 Emil Hozan 著

つい先日、セキュリティに関する知識を持つソフトウェア開発者がスピアフィッシングの標的になり、Firefox のゼロデイエクスプロイトの被害に危うくなるところだったという記事を書きました。彼が使用していたのは、幸いにも Firefox ではなく、Google Chrome でした。その後の経緯については、前述の記事でご紹介したとおりですが、その記事とこの記事に共通するのは、どちらの関係者もセキュリティチェックリストに従っていたという点です。

新しいソフトウェアがリリースされたり開発されたりすると、多くの場合は、何らかの形の changelog が作成され、changelog には、新しいリリースでの前のバージョンからの変更点が記述されます。これらの changelog を見直すことは、いくつもの理由から重要であり、その 1 つとして、変更点は何か、それらの変更が自分たちの製品や会社に何らかの影響を与える可能性があるかどうかを知ることができる点が挙げられます。変更点を文書化するのは良いことであり、変更点を適切に公開できるという、明らかなメリットがあります。

変更や冗長性を完全には理解できないとしても、多くの人ができるであろう、この単純な作業によって、他のユーザと協力しながら状況を詳しく調査し、潜在的な影響を評価できるようになります。ところがこのことは、以下に紹介する、strong_password という名前 Ruby の gem コンポーネントが乗っ取られたことがわかったきっかけにもなっていたのです。Ruby はプログラミング言語の 1 つで、gem は Ruby のモジュールまたはライブラリを指す言葉で、今回問題になった strong_password はパスワードの強度をチェックする Ruby の gemです。

簡単に言うと、この悪意を持って公開された Ruby の gem の「アップデート版」は、strong_password gem が本番環境で使用されているかどうかを最初にテストします。
そして、本番環境で使用されていると、ランダムな時間の経過後に、pastebin.com リストを手に入れ、2 つ目のペイロードを取得します。この 2 つ目のペイロードは、基本的にはバックドアを密かに開いて、攻撃者によるリモートからのコードの実行を可能にします。そして、感染した URL のリストを異なるドメインに送信します。

作成者による後に Ruby のセキュリティチームがさらに調査を実施し、この問題のある gem の公開は中止されました。ただし、Ruby を使用していて strong_password gem のユーザである場合は、直ちにアップデートする必要があり、不正侵入や不正侵入検知のログの社内での調査を検討することをお勧めします。この gem のダウンロード回数は 600 未満でしたが、影響を受けたであろうユーザはおそらく調査に着手していないものと思われます。

この問題の影響を直接受けないユーザ、さらには、できるだけ多くのユーザにこのメッセージを知ってもらうため、ソフトウェアベースのあらゆる製品で、今後のリリースにおいても同様の手順を実行することを検討してください。これには、Ruby や他のプログラミング言語、さらには、さまざまなハードウェア製品の OS リリースノートのアップデートも含まれます。