Foscamに含まれるXSSの脆弱性

まだご存じない方のためにもう一度言っておきますが、フォーティネットは先日、セキュリティ業界におけるサイバーセキュリティスキル不足に対処するため、高度なスキルを持つ人材の育成を目的にFortinet Network Security Academy(FNSA)を発足させました。

こうしたプログラムの価値を示すため、当社のフランスオフィスのチームは学生と協力し、様々なセキュリティプロジェクトで定期的なコラボレーションを行っています。そうした学生とのコラボレーションプロジェクトの成果の一つとして、以下の発見がありました。

概要

前回のブログ記事に記したように、シリアル接続を介してIPカメラのファイルシステムへのアクセスが成功した後、潜在的な脆弱性がないかを調べるためにファイルシステムを詳しく見ていくことになっていました。

これを行うため、フォーティネットはEurecomと連携し、学生プロジェクトを結成しました。調査中、EurecomのEmanuele CozziがIPカメラのファイルシステムUI内(具体的にはCGIスクリプト内)に欠陥があることを発見しました。見つかった欠陥は、特定のページへのコード注入だけでなく、侵害を受け、バックドアが有効になっているバージョンのファームウェアを脆弱なカメラ上にアップロードすることさえも許してしまいます。

概念実証(POC)

この欠陥はカメラの2つのCGIスクリプトに存在しています。これがコード注入を許してしまいます。1つは注入できる文字数に20文字という制限があり、もう1つは64文字(', , n, r以外)の注入が可能です。

20文字の制限というのは、エクスプロイトの機会としてはあまり有効なものではありませんが、64文字あれば、より有効なものをカメラに注入するのに十分です。以下の動画では、見つかった脆弱性の1つを使ってフィッシングページが注入されるという攻撃シナリオを実演しています。

カメラのログイン認証情報のフィッシングを行う際の典型的な攻撃シナリオには、以下の形式のHTTPリクエストが必要となります。

http:  //[IP]/[VULNERABLE_SCRIPT].cgi?host=

<[INJECTED_HTML]>&next_url=index.htm&cam_user=[USERNAME]&cam_pwd=[PASSWORD]

この動画では、欠陥のあるCGIスクリプトが悪用され、Foscam Web UIログインページに似たフィッシング用のURLに誘導されています。このフィッシングページから、アタッカーはバックドアを仕込んだバージョンのファームウェアをカメラにアップロードすることができます。

悪用

攻撃の前提条件

  • IPカメラの認証済ユーザー名とパスワードを知っていること

ただ、インターネットに接続されている多くのカメラが、一般的に知られているデフォルトの認証情報を使用していることもあり、必須の情報とも言えないでしょう。

攻撃を成功させる条件

  • 新しいカメラに設定されているデフォルトのユーザー名とパスワードをそのまま使用しているカメラは特に脆弱です。これはUIのバージョンが2.4.10.5あるいは2.4.10.10となっているカメラの場合、特に被害が大きくなります。
  • デフォルトの認証情報の問題を回避するため、最新のFoscam Web UI(バージョン2.4.10.12)では、ユーザーは最初のログイン時にカメラのユーザー名とパスワードを変更するよう求められます。しかし、これらのカメラは最初のログイン時までは上のXSSの脆弱性に対して脆弱な状態です。

Foscamは以下の理由により、同社のカメラは安全だと主張しています。

  • アタッカーはすでにログイン用のユーザー名とパスワードを知っているはず。
  • 最新バージョンのUIでは、最初のログイン時にユーザー名とパスワードの変更が必須となっており、カメラがデフォルトの認証情報でアクセス可能な状態になることを防いでいる。追加のセキュリティ層として、新たなパスワードの強度をもとに制限を設けている。

EurecomのAurelien FrancillonとAxelle Apvrilleに心より感謝します。