Cisco Talos は、Linksys E シリーズ ルータの OS に複数発見された脆弱性を公開しました。
Linksys E シリーズのルーターには、エクスプロイト可能な OS コマンド インジェクションの脆弱性が複数存在します。認証された HTTP 要求がネットワーク構成に送信されると、これらの脆弱性がエクスプロイトされる可能性があります。エクスプロイトに成功すると、攻撃者によりルーター上で任意のコードが実行される危険性があります。
E シリーズ ルーターは小規模オフィスや家庭オフィス向けの製品で、使い勝手を向上するための機能をいくつか備えています。製品用途は、家庭内の PC、インターネット対応テレビ、ゲーム機、スマートフォンなどの Wi-Fi デバイスの接続です。
脆弱性の詳細
TALOS-2018-0625 には、3 件の関連する脆弱性(CVE-2018-3953、CVE-2018-3954、CVE-2018-3955)が記載されています。
ルーターの設定内容の大半は、ルーターの再起動後も保持される必要があります。ただし E シリーズ ルーターには書き込み可能なディレクトリ(/tmp)が 1 つしかなく、再起動時にそのディレクトリがクリアされるため、設定内容は NVRAM に保存されます。
製品におけるコマンド インジェクションは、すべて次のような流れになります。
設定内容の永続的な変更を示すパラメータとともに apply.cgi ページが要求されると、それらのパラメータは get_cgi 関数呼び出しによって処理されます。その後 nvram_set を呼び出すことでパラメータが NVRAM に直接保存されます。
特定の設定内容(今回の脆弱性に関連する変更を含む)を変更した場合、ルーターを再起動する必要が生じます。再起動リクエストは httpd バイナリが処理し、SIGHUP シグナルを PID1(バイナリ名「preinit」)に送ります。preinit バイナリは次に、必要なシステム サービスをすべて再起動させるコード パスを送信します。
その際、nvram_get 関数呼び出しからの RAW データがシステム コマンドに渡されます。
CVE-2018-3953 では、Web ポータルを介して Router Name 入力フィールドに入力されたデータが、machine_name POST パラメータへの値として apply.cgi に送信されます。machine_name パラメータは上記の nvram_set を呼び出すことで処理されます。最終的には start_lltd 関数内で nvram_get が呼び出され、ユーザ設定が反映された machine_name の NVRAM エントリの値を取得します。この値は、ホスト名をファイルに書き込んで実行するコマンドに直接送信されます。
CVE-2018-3954 の問題も同じ入力フィールドですが、コード パスはわずかに異なります。この脆弱性は libshared.so の set_host_domain_name 関数に起因しています。libshared.so では nvram_get が machine_name パラメータに対して呼び出されます。ここでの処理結果は sprintf の呼び出しによって文字列と結合され、システム コマンドに直接渡されます。
最後に CVE-2018-3955 では、Web ポータルを介して Domain Name 入力フィールドに入力されたデータが、wan_domain POST パラメータへの値として apply.cgi に送信されます。wan_domain パラメータは上記の nvram_set を呼び出すことで処理されます。
preinit バイナリは SIGHUP シグナルを受け取ると、libshared.so 共有オブジェクトから set_host_domain_name 関数を呼び出すコード パスを送信します。この共有オブジェクトは wan_domain パラメータに対して nvram_get を呼び出します。ここでの処理結果は snprintf の呼び出しによって文字列と結合され、システム コマンドに直接渡されます。
影響を受けるルーター
今回の脆弱性は Linksys E シリーズの複数製品で確認されており、影響を受けるファームウェア バージョンも多岐にわたっています。ルーターをお使いの場合はファームウェアを最新版に更新することをお勧めします。
まとめ
家庭向けルーターは主な攻撃目標のひとつとなっています。今回の脆弱性をエクスプロイトするには、攻撃者がすでにルーターで認証されている必要がありますが、エクスプロイトに成功するとルーターが完全に制御されるため深刻度は高いと言えます。
広範囲に拡大した IoT 攻撃(Mirai や VPNFilter など)からも分かるように、ルーターに侵入して大規模な標的攻撃を実施できる新たな脆弱性を攻撃者は必死に探しています。これらの攻撃を検出するのは年々困難になっているため、製造元がファームウェアを更新して脆弱性を修正しない限り安全性は保たれません。
SOHO ルーターが分散型サービス拒否(DDoS)攻撃の一部になる事態や、組織を狙った攻撃の感染経路となる事態を避ける上で、ルーターのファームウェアを最新状態に保つことは不可欠です。
カバレッジ
次の Snort ルールは、今回発見された脆弱性に対するエクスプロイトを検出します。脆弱性に関する新たな情報が発見された場合は、ルールが追加・変更される可能性もあります。最新情報にご注意ください。ルールに関する最新情報は、Firepower Management Center または Snort.org を参照してください。
Snort ルール:47133
本稿は 2018年10月16日に Talos Group のブログに投稿された「Vulnerability Spotlight: Linksys ESeries Multiple OS Command Injection Vulnerabilities」の抄訳です。