クリティカルなvBulletinの脆弱性、未認証の攻撃者によるリモートPHPコード実行が可能に

最も広く利用されているフォーラムソフトウェアプラットフォームの一つであるvBulletinにおいて、クリティカルなリモートコード実行の脆弱性が公表されました。この脆弱性により、未認証の攻撃者がユーザーの操作や認証情報を一切必要とせず、影響を受けるサーバー上で任意のPHPコードを実行できてしまいます。

CVE-2026-61511として追跡されているこの脆弱性は、SSD Secure Disclosureと連携する独立系セキュリティ研究者によって発見され、2026年7月27日に公表されました。

この脆弱性の影響を受けるのはvBulletin 6.2.1以前、およびvBulletin 6.1.6以前で、現在稼働中の多数のフォーラムがリスクにさらされることになります。

脆弱性が存在するのは/includes/vb5/template/runtime.php内、具体的にはvB5_Template_Runtime::runMaths()メソッドです。

この関数は{vb:math}テンプレートタグで使用される数式を処理しますが、それをPHPのeval()関数に渡す前の入力サニタイズが不十分でした。

このコードは、数字・括弧・数学演算子(二項演算子)以外を除去することを意図した正規表現フィルターに依存しています。

しかし、この正規表現はXOR演算子(^)を許可してしまっており、これが「PHPGGC」的なエクスプロイト手法への扉を開いてしまいます。これは、JavaScriptにおけるJSFuckの難読化手法と同様に、許可された文字だけをビット演算で組み合わせることで任意の関数呼び出しや文字列を構築する技術です。

管理パネルへのアクセス権を持つ攻撃者であれば、テンプレート内に悪意のある{vb:math}タグを仕込むことでこの脆弱性を悪用できますが、さらに危険なのは認証を一切必要としない攻撃経路が存在する点です。

ajax/render/[template]ルートを悪用することで、攻撃者は{vb:math}を使用し、攻撃者が制御可能なパラメータを含むテンプレートをレンダリングできます。

pagenavテンプレートはその典型例です。このテンプレートは、ユーザーが指定したpagenav[pagenumber]パラメータを、認証チェックを一切行わないままテンプレート変数に直接代入し、後に{vb:math}によって処理され、最終的に脆弱なeval()呼び出しに渡されます。

公開されているPoCエクスプロイト(研究者EgiXの手によるものとされています)は、完全なリモートシェルアクセスを実証しています。

このスクリプトは、数値演算とXOR演算のみを使って正規表現フィルターを回避し、system()などの任意のPHP関数呼び出しをエンコードした上で、細工したPOSTリクエストをajax/render/pagenavに送信します。

これにより、攻撃者はWebサーバーの権限で対象サーバー上のインタラクティブシェルを事実上手に入れることになります。

vBulletinはこの脆弱性に対処するパッチをリリース済みであり、管理者は直ちにアップデートを行う必要があります。

これには、公式vBulletinアナウンスフォーラムで公開されているフルバージョンアップデートであるvBulletin 6.2.2に加え、6.2.1、6.2.0、6.1.6を稼働中でフルアップグレードよりも的を絞った修正を望む管理者向けのセキュリティパッチも含まれます。

直ちにパッチを適用できない組織は、暫定的な緩和策として、Webサーバーまたは WAFレベルでajax/render/エンドポイントへのアクセスを制限することを検討すべきです。また、括弧やXORパターンを多用した異常なpagenav[pagenumber]値を含む不審なPOSTリクエストがないか、ログを監視することも重要です。

SOC調査の死角を減らし、脅威をより早く封じ込めることで、ANY.RUNを使って対応コストと業務への支障を削減しましょう。

翻訳元: https://cyberpress.org/critical-vbulletin-vulnerability/

ソース: cyberpress.org