• ひとことでPHP の部品 Archive_Tar で、ファイル名の確認が不十分でファイルを上書きされる弱点です。
  • 深刻度7.8 重要CVSS v3.1
  • まずやることArchive_Tar を 1.4.11 以降に更新する

何をすればいいかを詳しく読む

基本情報(データから表示)

CVE番号CVE-2020-28949
製品PEAR Archive_Tar
深刻度(CVSS)7.8 重要CVSS v3.1
NVD による評価
詳細(ベクター)CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
KEVへの追加日2022-08-25
米国政府機関の対応期限2022-09-15
ランサムウェアでの悪用不明(確認されていない)
弱点の種類(CWE)CWE-74(インジェクション)

何が起きた

PHP の部品(ライブラリ)である PEAR Archive_Tar は、ファイル名に含まれる phar: という書き方だけを防いでいて、大文字の PHAR: や file:// のような別のストリームラッパーは防げていませんでした。このため、細工した tar ファイルを処理させることで、ファイルを上書きされたり、データの復元処理(デシリアライズ)を悪用されたりするおそれがあります。NVD の評価では、対象の機器上で利用者の操作が必要な形で悪用されるとされています。CISA の KEV に、悪用が確認された脆弱性として載っています。

攻撃の流れ

データをもとに、AIを使用して作成した図です。実際の攻撃は、これと異なる場合があります。

攻撃の流れ: 1. 攻撃者が細工した tar ファイルを用意する → 2. ファイル名に PHAR: などを仕込む → 3. 確認をすり抜けて処理される → 4. ファイルの上書きなどが起きる1攻撃者が細工した tar ファイルを用意する2ファイル名に PHAR: などを仕込む3確認をすり抜けて処理される4ファイルの上書きなどが起きる攻撃の流れ: 1. 攻撃者が細工した tar ファイルを用意する → 2. ファイル名に PHAR: などを仕込む → 3. 確認をすり抜けて処理される → 4. ファイルの上書きなどが起きる1攻撃者が細工した tar ファイルを用意する2ファイル名に PHAR: などを仕込む3確認をすり抜けて処理される4ファイルの上書きなどが起きる攻撃の流れ: 1. 攻撃者が細工した tar ファイルを用意する → 2. ファイル名に PHAR: などを仕込む → 3. 確認をすり抜けて処理される → 4. ファイルの上書きなどが起きる1攻撃者が細工した tar ファイルを用意する2ファイル名に PHAR: などを仕込む3確認をすり抜けて処理される4ファイルの上書きなどが起きる

誰が影響を受ける

Archive_Tar 1.4.10 以前を使っている PHP のアプリやサービスが対象です。Drupal も Archive_Tar を使っていて、Drupal の公式情報では、tar などのファイルのアップロードを受け付けて処理する設定の場合に影響があるとしています。

何をすればいい

Archive_Tar を直接使っている場合は、修正版の Archive_Tar 1.4.11 以降に更新してください。Drupal を使っている場合は、Drupal 9.0.9、Drupal 8.9.10、Drupal 8.8.12、Drupal 7.75 以降に更新してください。すぐに更新できないときは、Drupal の案内のとおり、信頼できない利用者に .tar、.tar.gz、.bz2、.tlz ファイルをアップロードさせないようにします。あわせて、使っている製品の公式の案内を確認してください。

やることチェックリスト

  • Archive_Tar を 1.4.11 以降に更新する
  • Drupal 9.0 は 9.0.9 以降に更新する
  • 信頼できない人の tar のアップロードを止める

用語メモ

ストリームラッパー
PHP で、file:// や phar: のような書き方によって、ファイルやデータの読み書き方法を切り替える仕組みです。
デシリアライズ 用語集で見る
保存や送信のために変換されたデータを、元のデータの形に戻す処理です。
ライブラリ 用語集で見る
ほかのプログラムから呼び出して使う、共通の部品となるプログラムです。

次に読む

公式情報と元データ

公式情報

元データ(英語・CISA KEV より)を開く

PEAR Archive_Tar Deserialization of Untrusted Data Vulnerability

概要

PEAR Archive_Tar allows an unserialization attack because phar: is blocked but PHAR: is not blocked. PEAR stands for PHP Extension and Application Repository and it is an open-source framework and distribution system for reusable PHP components with known usage in third-party products such as Drupal Core and Red Hat Linux.

推奨対応

Apply updates per vendor instructions.

この元データの出どころ: CISA KEV カタログで見る