Critical Progress Kemp LoadMaster Vulnerability Enables Pre-Auth Remote Code Execution
2026/06/30 gbhackers — Progress の Kemp LoadMaster に、深刻な認証前のリモート・コード実行 (RCE) の脆弱性 CVE-2026-8037 が発見された。広く導入されている Kemp LoadMaster の脆弱性を悪用する、デバイス API にアクセス可能な未認証攻撃者は、LoadMaster の API 処理に存在する初期化されていないメモリ/文字列終端のバグを突くことで、任意のシェル・コマンドを実行できる。さらに LoadMaster は、ネットワーク・エッジに配置されるため、この脆弱性の悪用に成功した攻撃者に対して、ネットワーク内へ侵害の足掛かりを提供する可能性がある。

Kemp LoadMaster は、ロードバランサおよびアプリケーション・デリバリ・コントローラ (ADC) であり、Layer 4/7 のトラフィック分散/SSL/TLS オフロード/ヘルス・チェック/組み込み WAF を提供する。
2026年6月4日に Progress は 、API が有効な環境において GA v7.2.63.1 以下/LTSF v7.2.54.17 以下に影響を及ぼす、コマンド・インジェクションを介して RCE に至る脆弱性を詳述する、セキュリティ情報と関連アドバイザリを公開した。
この脆弱性は、TrendAI Research の Syed Ibrahim Ahmed により責任ある開示が行われ、ZDI アドバイザリ ZDI-26-342 として文書化されている。
この脆弱性に関連するコード・パスは、”/accessv2″ に送信された認証情報を検証する API エンドポイントに存在する。LoadMaster は、単一引用符で囲まれたシェル引数の値をサニタイズするために escape_quotes() ヘルパー関数を使用している。この関数は、入力内の単一引用符を検索し、存在する場合には新しいヒープ・バッファを割り当て、それぞれの単一引用符を 4 バイトのシェル・セーフなシーケンス「”’」に置き換える。

Progress Kemp LoadMaster の脆弱性
今回の調査によると、CVE-2026-8037 は典型的な入力サニタイズの不備ではなく、ヒープのセマンティクスと出力を終端しない、文字列エスケープ実装が組み合わされることで発生する問題である。
2 つの実装上の欠陥が、この問題を深刻化させている。第 1 に、パッチ未適用の escape_quotes() は malloc() を使用しており、新たに割り当てられたバッファは初期化されない状態を維持する。第 2 に、この関数は、エスケープ済み文字列を生成した後に、Null 終端文字を書き込んでいなかった。
したがって、その後にエスケープ済みポインタが sprintf()/system() のチェーンで validuser コマンド・ラインを構築するために使用されると、終端文字が存在しないため、sprintf は意図したバッファの外側まで読み取りを続け、隣接するヒープ・メモリへと読み進める。そのときに、制御可能なデータが残存している場合であっても、malloc() により解放済みのチャンクが返される場合があるため、攻撃者はコマンドの断片を隣接チャンクへヒープ・スプレーできる。
このエクスプロイト手法は、エスケープ・ロジック自体を悪用してアロケータのメタデータを書き換えるものであり、apiuser フィールド内の 4 個の単一引用符は正確に 16 バイトのエスケープ済みデータへ展開される。それにより、次のチャンクの先頭 16 バイトを書き換えることが可能となる。本来であれば、この位置に存在するのは、アロケータのメタデータが挿入した Null バイトであり、それにより読み取りが停止されるはずだ。
その一方で攻撃者は、多数の JSON パラメータをスプレーすることで、エスケープ済み apiuser フィールド由来のチャンクに隣接する場所に、細工したペイロード・チャンクを配置する確率を高められる。結果として、sprintf() はスプレーされたデータを読み続け、攻撃者が制御する内容を含むコマンド・ラインを構築した後に、system() を介して実行し、認証前の RCE を達成できる。
この脆弱性が強力である理由は、必要とされるのが API へのアクセスのみであり、認証や単純なインジェクション構文すら不要な点にある。それに加えて、このエクスプロイトは、アロケータの挙動/正確なヒープ・レイアウト/対象システム自身のエスケープ・ルーチンを巧妙に操作できる。
緩和策および検出方法は明確である。すでに Progress は、メモリ割り当てを calloc() に変更し、終端 NUL を明示的に書き込むことで、範囲外読み取りを防止するパッチを公開している。この脆弱性に対処するために、ユーザーに対して強く推奨されるのは、ベンダーが提供する更新プログラムを直ちに適用することである。
パッチを直ちに適用できない場合は、信頼できないネットワークからの管理 API アクセスを無効化し、必要とされるアクセスを、ネットワーク ACL/VPN/ジャンプ・ホスト経由に限定してリスクを低減すべきである。
また、validuser の異常な system() 呼び出し/プロセス生成/LoadMaster アプライアンスからの予期しないアウトバウンド接続などを監視することが推奨される。
訳者後書:脆弱性 CVE-2026-8037 の原因は、プログラム内部の文字列処理における「初期化されていないメモリ」と「文字列終端の処理漏れ」という 2 つの実装上の欠陥にあります。関数内で新しいメモリ領域を確保する際に、内容が初期化されない状態で使用され、さらに文字列の終端を示す文字が正しく書き込まれませんでした。これにより、システムが文字の終わりを認識できず、隣接するメモリ領域まで過剰に読み進めてしまいます。その結果、攻撃者が配置した悪意のデータによりコマンドが構築され、実行されてしまう仕組みです。ご利用のチームは、ご注意ください。よろしければ、Progress で検索も、ご利用ください。

You must be logged in to post a comment.