Zip Slip脆弱性チートシート
2018年6月28日
0 分で読めますJavaのローカル型推論とGitHubセキュリティのベストプラクティスに関する、前回までの2つのチートシートに続き、印刷して使える便利なチートシートシリーズを続けられることをうれしく思います。今回は、数千ものアプリケーションに影響を与えてきた、より具体的なセキュリティ脆弱性を取り上げます。今月のチートシートのテーマは、Zip Slip脆弱性です。2018年6月5日、著名なアーカイブ管理ライブラリやプロジェクトを対象に数か月にわたる調査を行った後、任意のファイルを上書きできる脆弱性をZip Slipと名付けて公開しました。この脆弱性は数十年にわたり何度も発生してきましたが、近年ではさまざまなエコシステムの主要なコードベースで、より広く見られるようになっています。
Zip Slipは、アーカイブからファイルを展開することで悪用される可能性のある、ディレクトリトラバーサルの一種です。ディレクトリトラバーサル脆弱性では、攻撃者が本来アクセスできないはずの対象フォルダ外のファイルシステムにアクセスできてしまいます。攻撃者は実行可能ファイルを上書きし、それをリモートから実行するか、システムやユーザーが実行するのを待つことで、被害者のマシン上でリモートコマンド実行を実現できます。また、設定ファイルやその他の機密リソースを上書きして被害を与える可能性もあり、クライアント(ユーザー)のマシンとサーバーの両方で悪用されるおそれがあります。
この脆弱性を悪用する例は、以下の短い動画をご覧ください。機密ファイルが上書きされ、リモートコード実行につながる様子を紹介しています [embed]https://www.youtube.com/watch?v=l1MT5lr4p9o\[/embed\]Thisチートシートでは、Zip Slip脆弱性の影響を最も大きく受けた4つの主要なエコシステムを取り上げます。各エコシステムについて、脆弱なコードスニペットの例と、この問題を修正するための検証コードを紹介します。この脆弱性についてまとめた内容をここにすべて転載するより、調査結果とGitHubリポジトリを直接ご覧いただくのがよいでしょう。
Zip Slip Research page - Zip Slipの背景情報に加え、ディレクトリトラバーサル攻撃全般について説明しています。悪用可能なアプリケーションの処理フローの例や、脆弱性の有無を確認する方法を紹介します。また、調査対象となったすべてのエコシステムの脆弱なコードスニペットの例と、推奨する検証コードのサンプルも掲載しています。
Zip Slip Community repo - Zip Slipに脆弱なライブラリの最新状況を確認したり、脆弱なコードベースの追加や更新に協力したりするには、コミュニティのGitHubリポジトリでプルリクエストを送信してください。Snyk は、依存関係に含まれる既知の脆弱性の発見と修正を支援します。
無料で始めるには、Snykの無料アカウントに登録 して、アプリケーションにZip Slipやその他の既知の脆弱性がないかテストしましょう。



