PHP 本体の脆弱性 2 件。ログイン不要のリクエストを送るだけで、サーバー上で任意のコマンドを動かされる。
- RCE(Remote Code Execution): 外部から好きなコードを実行されること。乗っ取りとほぼ同義
- CVSS: 脆弱性の深刻度を 0〜10 で表す共通の点数。今回は 9.2(9.0 以上は最上位の Critical)
どんな脆弱性か
わざと処理を途中で打ち切らせ、壊れた状態を正しいものとして使わせる。
109618(1 リクエスト)
巨大な POST → メモリ切れで打ち切り → 後片付けが準備途中のデータを使う → 乗っ取り
109619(2 リクエスト。ワーカーは使い回される)
1 回目: わざとエラー → メモリは解放、ptr(番地を指す変数)だけ残る
2 回目: 同じ場所に攻撃者のデータ → 古い ptr が使う(use-after-free)→ 乗っ取り
状況
- 対象: Web で動く PHP すべて(FPM / mod_php など)。5.x〜8.x の修正版未満
- 10/21 修正版公開。修正前から攻撃が始まり、10/22 には Web シェルを置く攻撃も観測。国内 50 以上の組織がサービスを一時停止
対策
- 修正版 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 に上げる。公式いわく完全な緩和策はない
- 8.1 以前は公式リリースなし。ベンダーのバックポートか、サポート中の版へ移行
- つなぎ:
session.upload_progress.enabled=0(109619)、memory_limit=-1(109618)、プロキシで multipart を制限(両方)
参考: