機密情報が漏えいする脆弱性を含むGradleのplugin-publishプラグイン
2020年3月31日
0 分で読めます数日前の3月27日、Gradleのplugin-publishプラグインに関するセキュリティ脆弱性(CVE-2020-7599)が公表されました。この脆弱性は、バージョン0.11.0未満のすべてのパッケージに影響します。脆弱性は3月4日に、NetflixでDeveloper Productivityを担当するDanny Thomasによって発見され、直ちにGradleに報告されました。
機密情報
このパッケージで見つかった問題は、いわゆる「機密情報の挿入」脆弱性です。このケースでは、パッケージがログファイルに機密情報を出力します。プラグインの作成者がcom.gradle.plugin-publish Gradleプラグインを使ってGradleプラグインを公開すると、署名済みAWS URLがプラグインに渡されます。Gradleビルドを--info以下のログレベルで実行すると、このURLがログファイルに出力されます。多くのパブリックCIシステムと同様に、ビルドログが公開されている場合、このURLが悪意ある攻撃に利用されるおそれがあります。Danny Thomasによるこちらの公開CIビルドで、このようなデータ漏えいの例を確認できます。
攻撃の可能性
このURLは1時間有効で、再利用できる可能性があります。そのため、攻撃者がこのURLを使って、最近アップロードされたプラグインを悪意あるパッケージに置き換えるおそれがあります。問題を調査した結果、Gradleは成果物が置き換えられた事実はないと発表しました。また、デフォルトのログレベルはLIFECYCLEであるため、通常はURLがログに表示されないことも重要です。詳細はGradleのドキュメントをご覧ください。
修正方法
これを受けてGradleは、URLのログレベルを下げた新しいバージョンのpublishプラグインをリリースしました。plugin-publishプラグインをバージョン0.11.0に更新してください。また、Gradleを--debugログレベルで実行するとURLが引き続き公開されるため、実行しないようにしてください。ログが公開されている環境でログレベルを下げることは、一般に非常に危険です。Gradleはプラグインの修正版をリリースしただけでなく、攻撃可能な期間を短縮するために署名済みURLの有効期間も短縮しました。詳しくは、Gradleのセキュリティブログをご覧ください。
CTFを始めよう
オンデマンドのバーチャル入門ワークショップを視聴して、CTFの課題の解き方を学びましょう。



