flawopen.com/Teardowns/cve-2026-1731-beyondtrust-websocket-command-injection
CVE-2026-1731:BeyondTrust のコマンド注入
CVE-2026-1731は未修正のBeyondTrust Remote Support/PRAで、WebSocket経由の認証前OSコマンド実行を許します。修正し、公開機器を調査してください。
受付で来訪者にバージョン番号を尋ね、その答えを数字だけ確認するのではなく数式を評価する計算機に渡す場面を想像してください。入力がデータから命令に変わるおそれがあります。CVE-2026-1731 は BeyondTrust サービスでこの境界を露出させました。修正では比較前に短い十進バージョン以外を拒否します。
主要な概念と専門用語
CVE-2026-1731- BeyondTrust Remote Support と Privileged Remote Access に存在する、認証不要の重大な OS コマンド注入脆弱性。
thin-scc-wrapper- クライアントプロトコル経路で使われる BeyondTrust の shell ラッパー。Rapid7 のパッチ分析では、相手から受け取るバージョンの処理が脆弱な境界とされています。
Bash の算術評価- Bash の数値比較演算子はオペランドを算術式として評価します。そのため、信頼できない文字列がデータと式の境界を越える可能性があります。
CWE-78- OS コマンドで使われる特殊要素の無効化が不適切な状態。OS コマンド注入とも呼ばれます。
CISA KEV- 実環境での悪用証拠がある脆弱性を記録する CISA の既知悪用脆弱性カタログ。
フレームワーク対応
- このガイドで説明する弱点の CWE 参照: CWE-78
- CISA KEV — 追加日 2026-02-13 — CVE-2026-1731
根本原因の分析 (Root Cause)
BeyondTrust が 2026 年 2 月に公開したアドバイザリは、CVE-2026-1731 を Remote Support と Privileged Remote Access の認証前リモートコード実行として説明し、CWE-78 と CVSS 4.0 9.9 を割り当てています。細工されたクライアント要求により、サイトユーザーの権限で OS コマンドが実行される可能性があります。Rapid7 によるベンダーパッチの分析では、ソース上の境界は thin-scc-wrapper の WebSocket 経路にあります。スクリプトは相手が制御する remoteVersion を読み取り、Bash の数値演算子で比較します。この比較は算術評価を行うため、単純な数値でない値は不活性な文字列ではなく式として解釈される可能性があります。パッチは比較前に ASCII 数字 1~2 桁(^[0-9]{1,2}$)を要求します。以下のコードは情報源に基づく簡略化した例であり、製品スクリプト全体や悪用の実証ではありません。BeyondTrust は 2 月 10 日に初期の悪用試行を確認し、2 月 9 日より前に未修正だったインターネット公開の自社運用システムに対する活動は限定的と報告しました。その後 Google Threat Intelligence Group は、複数の攻撃クラスターと異なる後続活動を報告しています。これらは観測された活動の証拠であり、すべての被害環境で同じ攻撃チェーンが発生したことを意味しません。
ステップ・バイ・ステップの攻撃フロー
公開 appliance がプロトコル接続を受け付ける
対象サービスはシンクライアントプロトコル向けの WebSocket 経路を公開しています。Rapid7 は脆弱な経路を認証なしで到達可能と説明し、BeyondTrust は認証前 RCE と分類しています。
接続相手がプロトコルバージョンを送る
ラッパーは接続からリモートバージョン値を読み取ります。これは要求側が制御する値であり、信頼できるローカル設定ではありません。
Bash が値を算術オペランドとして扱う
脆弱な比較では Bash の数値演算子を使います。Bash は数値オペランドを式として評価するため、検証されていない入力が単なる文字列のままとは限りません。
サービスアカウントの権限でコマンドが実行される
悪用に成功すると、BeyondTrust のサイトユーザーのコンテキストで OS コマンドが実行される可能性があります。ベンダーは機密性・完全性・可用性への影響を高と評価しています。
観測された悪用から後続リスクが生じる
BeyondTrust は初期試行と、公開され未修正の自社運用 appliance への限定的な活動を報告しました。GTIG は後に複数クラスターと後続行動を報告しています。各報告は特定キャンペーンの証拠であり、共通の攻撃チェーンを示すものではありません。
パッチは比較前に入力を検証する
パッチは無効なリモートバージョンを拒否してラッパーを終了します。有効な値の場合のみプロトコルのネゴシエーションを続行します。該当パッチまたは修正版を適用し、脆弱な期間に公開されていたシステムを調査してください。
ソースコード比較:脆弱 vs 堅牢化
Rapid7 によると BT26-02 パッチは remoteVersion の比較前に 1~2 桁の検証を追加しています。抜粋は簡略化されており、製品プロトコルや要求の詳細は含みません。重要なのは Bash の算術評価より前に検証することです。引用符で囲むだけでは算術オペランドは安全になりません。可能なら shell を使わない型付きコンポーネントで解析・比較し、プロトコル境界で無効な値を拒否してください。
ソース抜粋: thin-scc-wrapper — Rapid7 によるベンダーパッチ分析に基づく簡略例
# 簡略例: remoteVersion は接続相手から届く。
read -r remoteVersion || exit 1
if [[ "$localVersion" -lt "$remoteVersion" ]]; then
version=$localVersion
else
version=$remoteVersion
fi
# 算術比較の前に想定外の入力を拒否する。
read -r remoteVersion || exit 1
if [[ ! "$remoteVersion" =~ ^[0-9]{1,2}$ ]]; then
exit 1
fi
if [[ "$localVersion" -lt "$remoteVersion" ]]; then
version=$localVersion
else
version=$remoteVersion
fi
エンジニアリング&システム堅牢化チェックリスト
- ✓自動更新のない自社運用環境を含め、Remote Support と Privileged Remote Access の全 appliance を特定します。
- ✓BT26-02-RS を適用するか Remote Support を 25.3.2 以降へ更新します。BT26-02-PRA を適用するか Privileged Remote Access を 25.1.1 以降へ更新し、BeyondTrust の最新アドバイザリで適用手順を確認します。
- ✓2026 年 2 月 9 日までにインターネット公開かつ未修正だった自社運用システムは、BeyondTrust のインシデント対応手順に従い、不正アクセス、永続化、権限昇格、データアクセスを調査します。
- ✓ネットワークとアプリケーションのテレメトリで予期しない WebSocket セッションやサービスアカウントが起動した不審な子プロセス・コマンドを確認し、通常動作と照合します。
- ✓すべての shell 境界で、数値比較の前に厳格な許可リストでプロトコル項目を検証します。信頼できないテキストを Bash 算術、
eval、コマンド文字列へ渡してはいけません。 - ✓空、過長、符号付き、空白入り、非十進文字のバージョン値に対する回帰テストを追加し、比較やプロセス起動前の拒否を確認します。