Rubyのrest-clientライブラリにコード実行型バックドアが発見される
Hayley Denbraver
2019年8月21日
0 分で読めます2019年8月19日、Ruby向けのシンプルなHTTP/RESTクライアントである[rest-client](https://snyk.io/vuln/rubygems:rest-client)で、新たなセキュリティ上の脅威が報告されました。メンテナーのRubyGemアカウントが侵害され、悪意のある第三者によってコード実行型のバックドアが仕込まれました。このエクスプロイトの影響を受けるのは、1.6.10より新しく、1.7.0.rc1より古いバージョンです。
何が起きたのか
GitHubユーザーの[juskoljo](https://github.com/juskoljo)は、8月19日にrest-clientのリポジトリで問題を報告しました。このユーザーはパッケージの各バージョンの差分を調べ、1.6.10から1.7.0.rc1までのバージョンがpastebin.comでホストされたリモートコードを実行し、悪意のあるサイトに情報を送信することを発見しました。このエクスプロイトによって、攻撃者は感染したホストのURLや環境変数などの機密情報を取得できました。
GitHubの問題のスレッドは一読の価値があります。オープンソースのセキュリティ問題がどのように対処されたかを知ることができます。最初のコメントではCVEが申請されたこと、2つ目のコメントでは改ざんされたバージョンが削除され、侵害されたメンテナーのアカウントがロックされたことが述べられています。さらにスレッドの後半では、RubyGemアカウントで二要素認証を使うことの是非が議論されています。
侵害されたバージョンはかなり古いものである点に注意が必要です。rest-clientは現在2.x.x系のため、エクスプロイトの対象バージョンはメジャーアップデートを一つ経ています。しかし、コードを保守する現実を考えると、このエクスプロイトの影響を受けるプロジェクトは数多く存在すると考えられます。
今すぐ何をすべきか
感染したバージョンを使用している場合は、できるだけ早くアップグレードしてください。バージョン1.7.0.rc1には修正が含まれています。Snykを使えば、脆弱なバージョンを使用しているかどうかを確認できます。
CLIをお使いの場合は、プロジェクトのディレクトリで$ snyk testを実行してください。依存関係に含まれる脆弱性がすべて表示され、rest-client.の脆弱性も確認できます。
使いやすいUIからプロジェクトをテストすることもできます。今すぐお試しください。
今回のエクスプロイトを教訓に、二要素認証が利用できるアカウントでは必ず有効にすることをお勧めします。
何を学べるか
この脆弱性は、パッケージマネージャーのアカウントで二要素認証を有効にすることの重要性を示しています。セキュリティを重視するメンテナーは、プッシュ権限を持つユーザーに二要素認証を必須にすることも検討すべきです。
また、この脆弱性は、依存関係を比較的新しいリリースに保つことが重要である理由も示しています。自動更新にも問題はありますが、攻撃者は古いリリースを狙うことで、いわば「目立たずに」攻撃しようとしていたことは明らかです。
今回の出来事から得られる最後の教訓は、この種の問題に迅速に対処することです。影響を受けるユーザーの数は多くないかもしれませんが、そのユーザーに及ぶ影響は非常に大きくなる可能性があります。影響を受けるユーザーができるだけ早く対処できるよう、広く知らせることが重要です。
この記事が注意喚起の一助となれば幸いです。使用しているrest-clientのバージョンが感染しているか心配な方は、今すぐSnykをお試しください。Snykでテストすると、プロジェクトに感染したバージョンのrest-clientが含まれているかどうかを確認できるほか、依存関係に存在するその他の既知の脆弱性も把握できます。
人気のオープンソースリポジトリで悪意のあるパッケージが見つかるケースは、ますます増えています。悪意のある可能性があるパッケージを発見した場合は、オープンソースパッケージの開示ポリシーに従ってSnykにご報告ください。https://snyk.io/vulnerability-disclosure/
Capture the Flagを始めよう
オンデマンドのバーチャル入門ワークショップを見て、Capture the Flagの課題の解き方を学びましょう。



