Translated message

A translation of this page exists in English.

Git における整数切り捨ておよびオーバーフローの脆弱性 (CVE-2016-2315、CVE-2016-2324)

Red Hat Product Security チームは、整数切り捨ての脆弱性 (CVE-2016-2315) および整数オーバーフローの脆弱性 (CVE-2016-2324) という Git の脆弱性を認識しています。これらの脆弱性により、ヒープベースのバッファーオーバーフローが発生し、結果としてリモートコードの実行が引き起こされる可能性があります。

概要

Git は、サーバーとクライアント間でのリポジトリー情報の交換に特殊な形式を使用します。これは pack ファイル 形式として知られています。

攻撃者は特別に細工された pack ファイルを作成し、これを脆弱なサーバーまたはクライアントに送ると、その処理時に整数切り捨てまたはオーバーフローをトリガーし、最終的にはメモリーの破損を生じさせる可能性があります。

背景情報

Git は、非集中型アーキテクチャーを持つ分散リビジョン管理システムです。クライアントサーバーモデルの集中型バージョン管理システムとは異なり、Git では Git リポジトリーの作業コピーは完全なリビジョン履歴を持つ完全なコピーになります。これにより、ユーザーは正式なリポジトリーに変更をプッシュするパーミッションなしにプロジェクトの作業および参加が可能となるばかりではなく、ネットワーク接続のない状態でも作業することができます。

影響を受けるバージョン

以下の「解決策」セクションの影響を受ける製品の一覧に記載されているように、Red Hat Enterprise Linux および Red Hat Software Collections 用に Red Hat がリリースし、サポートしている Git のバージョンが影響を受けます。さらに、バージョン 2.4.11、2.5.5、2.6.6、および 2.7.4 より前の Git のすべてのアップストリームバージョンがこれらの脆弱性の影響を受けます。

攻撃の詳細と影響

これらの脆弱性の根本原因は、パス情報を処理するために Git で使用される revision.c ソースファイルの path_name() 関数内で生じる整数切り捨ておよび整数オーバーフローの問題です。この関数には、攻撃者が送信する特別に細工した Git pack ファイルの一部として受信される可能性のある有害なデータを、その処理前に完全にサニタイズできないという弱点があります。これにより、メモリーの破損や任意コードの実行が引き起こされる可能性があります。

pack ファイル形式は、リポジトリー情報を効率的に交換するために Git により内部で使用されます。Git は pack ファイルの生成や pack ファイルの Git エンドポイント全体での送受信を行うために数多くのヘルパーツールを使用します。攻撃者は、長いパス名 (231 バイト、約 2 ギガバイト) またはパス要素のツリーを含む特別に細工された pack ファイルを作成して、そのファイルの処理時に path_name() 関数で脆弱性を引き起す可能性があります。

このような pack ファイルが作成され、一般に公開されると、このファイルはクライアントとサーバーの両方を攻撃するために使用される可能性があります。

脆弱なサーバーを攻撃するには、攻撃者は Git クライアントとして動作し、プッシュ 操作などの一環として、特別に細工された pack ファイルを脆弱なサーバーに送信する必要があります。脆弱なサーバーは有害な pack ファイルを有害な Git クライアントから受信し、組み込まれたパス情報の処理時に path_name() 関数の脆弱性をトリガーします。通常、このような操作には認証が必要です。攻撃者が攻撃を成功させるには、この認証を問題なく渡せる必要があります。

クライアントを攻撃するには、攻撃者は Git サーバーに有害な Git リポジトリーをセットアップし、無防備なユーザーにリポジトリーをクローンさせる必要があります。その後クライアントはサーバーから有害な pack ファイルをダウンロードし、このファイルの処理時に脆弱性をトリガーします。

膨大なパスデータの要件により、pack ファイルの未加工および非圧縮サイズは約 2 ギガバイトですが、これは攻撃者がネットワークに複数ギガバイトのデータを送信しなければならないという意味ではありません。内部で pack ファイル形式により使用される圧縮、さらにトランポートメカニズム (SSH など) による追加の圧縮により、ネットワーク転送データの合計が 200 メガバイト程度の場合でもこれらの脆弱性を悪用できる可能性があります。

解決策

すべての Git ユーザーには、これらの問題の修正に向けて、以下のバックポートされたパッチを含む更新済みパッケージにアップグレードすることをお勧めします。この更新を適用する前に、お使いのシステムに関連するリリース済みのすべてのエラータが適用されていることを確認してください。

製品 パッケージ アドバイザリー
Red Hat Enterprise Linux 6 git RHSA-2016-0496
Red Hat Enterprise Linux 7 git RHSA-2016-0496
Red Hat Software Collections git19-git RHSA-2016-0497

よくある質問

Git サーバーを実行していますが、どのようなリスクがありますか?

攻撃者が有害なデータをホストされている Git リポジトリーにプッシュできる場合に脆弱になります。認証が必要な場合、攻撃者は認証を問題なく渡せる必要があります。

Git クライアントを実行していますが、どのようなリスクがありますか?

攻撃者は、ユーザーに信頼されない、セキュリティー侵害を受けた Git リポジトリーからクローンさせることによってこの脆弱性を悪用する可能性があります。