新しいアクシスOSのセキュリティ研究は、透明な設計によって支えられている

新しいアクシスOSのセキュリティ研究は、透明な設計によって支えられている

このブログでは、組み込み Axis OS ベースのすべての Axis デバイスに影響する 3 つの新しい脆弱性(CVE-2021-31986CVE-2021-31987CVE-2021-31988) を公表します。これは、IoT ビデオカメラ・プラットフォームに関する脆弱性調査に関する弊社の以前の作業(こちらで公開)に続くものです。この情報は、この問題を修正するファームウェアをリリースしたベンダーであるAxis との協調開示の一環として公開されるものです。脆弱性の性質に関する詳細は以下を参照されたい。

これらの脆弱性に関する調査を文書化する一方で、Axisがセキュリティレビューに適用した透明性の高いアプローチによって、研究者が脆弱性の静的解析を即座に実行し、動的テストを正確に実行して検証することが可能になり、あらゆる資産所有者によるレビューに必要な労力が劇的に最適化されたことを説明する。

歴史

1883年、オランダの言語学者で暗号学者であったオーギュスト・ケルクホフスは、そのエッセイの中で、次のように述べている。 軍事暗号で、暗号スイートの実用的な設計に必要な6つの基本事項を説明した。そのうちの1つは、現代の暗号システムの基本原理として歴史に刻まれた:

「システムの設計には秘密が必要であってはならないし、システムの漏洩が通信相手に迷惑をかけてはならない。

ケルクホフの原理として知られるものの背景にある考え方は単純だ。暗号システムの安全性は、その動作や構成要素の秘密性に依存してはならない。暗号システムの安全性は、その動作や構成要素の秘密に依存してはならない。その代わりに、限定された鍵情報に依存しなければならない。鍵情報を秘密にしておけば、敵がその内部構造の詳細を知っているかどうかに関係なく、スキームのすべての安全性要件が満たされることが保証される。

ケルクホフスの原則は、1世紀以上前に提唱され、特に暗号技術に関連するものであるにもかかわらず、現代のIT、OT 、IoT デバイスのセキュリティ設計とレビューに今日でも適用される。注目すべきは、独立したレビュアーがそのセキュリ ティを分析するために必要なすべてのアクセスと手段を持つことができるよう、デ バイスは可能な限り透明でオープンであるように考案されなければならないことである。

これは「不明瞭さによるセキュリティ」アプローチとは対照的で、システムのセキュリティを、その運用を隠蔽し、可能な限り最小限の情報を公開することに求めるものである。この後者の解決策は、歴史的に長期的には成功しないことが証明されており、NISTのような標準化団体が反対を唱え始めたほどである1。

無名による安全保障

先日のブログ記事で、Annke社製の人気ネットワークビデオレコーダー(NVR)であるN48PBBに影響を及ぼす新たなリモートコード実行の脆弱性を発表しました2。その分析中に、HTTPエンドポイントをファジングしているときに、非常に大きなペイロードを送信した後にデバイスを勝手に再起動させることに成功したときに、脆弱性の存在を示す最初のヒントを得ました。

とはいえ、脆弱性を正確にトリアージして検証するためには、多大な労力を費やさなければならなかった:

  1. このデバイスは、SSH経由でのオンデマンドアクセスを許可していたが、制限されたシェルにしかアクセスできず、デバッグ目的には役に立たないことが判明した;
  2. ファームウェアは、私たちの分析にすぐに利用できるものではなかった;
  3. なんとかファームウェアにアクセスしたところ、暗号化されていることが判明した。

実際、これらすべての対策により、解析には予想以上の時間がかかった。攻撃者が攻撃ペイロードを作成し、細かく調整するためには、難読化ステップをリバース・エンジニアリングし、デバイスへの完全なアクセスを得るために多大な労力を費やす必要があるためである。

しかし、誰かが脆弱性を発見しようがしまいが、それが製品の脆弱性の有無に影響を与えるわけではないことを強調しておかなければならない。

さらに、副次的な効果として、セキュリティ研究者と資産所有者の双方が、バグを発見し、責任を持ってベンダーに開示するために、同じ労力を費やす必要がある。

アクシス・コンパニオン・レコーダー

IPビデオ監視システムに関する調査を続けるため、IPビデオ監視機器の老舗メーカーであるAxis Communicationsのセキュリティを調査することにしました3。そのため、最大8台のPoE IPカメラを直接接続できるコンパクトなNVR、Axis Companion Recorderを購入しました。NVR の詳細については、その操作とセキュリティに関する詳細な説明を含む以前のブログ2を参照してください。

装置をセットアップした直後から、アクシスが採用している透明性の高いアプローチは明らかだ。

まず、このデバイスは、ウェブ・インターフェイスから有効にできるSSHサービスを介して、すぐに無制限のリモートアクセスを可能にする。

SSHアクセスを有効にする
図1- SSHアクセスを有効にする
AXIS Companion Recorder のルート SSH アクセス
図 2- AXIS Companion Recorder のルート SSH アクセス

第二に、ファームウェア・イメージはAxisのウェブサイトから自由にダウンロードし、解析することができる。有名な "binwalk "ツールを使ってイメージを解凍することができる。下のスクリーンショットでは、ファームウェアバージョン 9.80.2.2 が解凍され、"/usr/bin "の内容がリストアップされている。

Binwalk ファームウェアの抽出と "/usr/bin" のリストアップ
図 3- Binwalk ファームウェアの抽出と "/usr/bin" のリストアップ

これは、セキュリティ研究者や資産所有者がレビューを実行したり、異常な行動を調査したい場合に、優れた分析プラットフォームを提供し、必要なすべてのアクセスとツールを提供する。

脆弱性 説明

Axis Companion Recorder の調査により、以下の脆弱性が発見されました:

  • ヒープベースのバッファオーバフロー (CVE-2021-31986、CVSSv3 6.7)
  • ネットワークテスト機能における不適切な受信者の検証 (CVE-2021-31987, CVSSv3 4.1)
  • メールテスト機能における SMTP ヘッダインジェクション (CVE-2021-31988, CVSSv3 5.5)

CVE-2021-31986: ヒープベースのバッファオーバフロー

最初の脆弱性は完全に静的解析によって発見されたもので、他の方法ではほとんど発見されなかっただろう。この問題は、"libhttp_smtp_notify.so "ライブラリの読み取りコールバック関数(libcurlの "CURLOPT_READFUNCTION "オプションで設定される関数)で発見されました。特に、読み取りコールバック関数は、「size」に「nitems」を掛けたバイト数以上がlibcurlの宛先バッファ(我々のデバイスでは64kB)にコピーされていないことを確認できないことに気付きました。

受取人フォーム
脆弱な機能とコード
図4- 脆弱な機能とコード

コピーされたバイトのうち、read コールバック関数は libcurl 宛先バッファに、SMTP 設定パラメータのテストが試みられたときにブラウザから送信されるエンドポイント "/axis-cgi/smtptest.cgi" へのリクエストの "to"、"from"、"subject"、および "body" HTTP パラメータをコピーします。このリクエストは通常GETリクエストであるため、パラメータはURLのクエリ文字列を通して渡されるが、その文字数は10,000文字未満に制限されており、この問題を引き起こすには少なすぎる。しかし、ファームウェアが支援する手動分析によって、前述の制限に制限されない POST リクエストもエンドポイントによって受け入れられることが証明された。最後に、SSH経由でデバイスに接続し、CGIプロセスにデバッガを動的にアタッチする可能性が、脆弱性を確認した。

読み取りコールバック関数
CVE-2021-31986
図5- CVE-2021-31986

したがって、ブラックボックスのみのテストでは、以下の理由で問題を発見できなかっただろう:

  1. テスト者は、クエリー文字列による制限を避けるために、リクエストを別のHTTPメソッド(例えばPOST)を使うように変更し、リモートエンドポイントがそれをサポートしていることを知る必要がある;
  2. テスターは正確なバイト数を正しいパラメータで送信する必要がある;
  3. テスト者は、デバイスが再起動されず、一般的な "500 Internal Server Error "だけが目に見える応答であることを考慮し、メモリ破壊が起こったことを認識する必要がある。

SMTPテスト機能は、デバイスを認証した後にのみアクセスできる結果となった。しかし、前述の HTTP リクエストにはクロスサイトリクエストフォージェリ(CSRF)攻撃からの保護がないことに注意されたい。加えて、アプリケーションはダイジェスト認証メカニズムを使用しているため、"SameSite=Lax by default"(デフォルトで SameSite=Lax)クッキーのような最新のブラウザ側の緩和策は適用できません。

その結果、Companion Recorder Web アプリケーションにログインしている間に、被害者ユーザーに特別に細工された Web ページを閲覧させることで、外部のリモート攻撃者は、「smtptest.cgi」プロセスのコンテキストでデバイス上のメモリ破壊を引き起こし、任意のコードを実行することができます。

CVE-2021-31987: ネットワークテスト機能における不適切な受信者検証

つ目の脆弱性は、セキュリティに対する透過的なアプローチの重要性を裏付けるものである。この場合、脆弱性は、HTTP、電子メール、TCP受信者のテスト機能には、ローカルホストに公開されたネットワーク・サービスとの相互作用を阻止するためのブロックリスト・ベースのセキュリティ・チェックがあり、既知のバイパスで回避可能であったり、不完全であったりすることに起因している。

ファームウェアを静的に分析することによって、"httptest.cgi "の分析セッションから抽出された以下の証拠に示されるように、ブロックリストのアプローチはすぐに発見することができる。

脆弱なコード
図6 - 脆弱なコード

さらに、有名な「tcpdump」ツールをデバイス上に動的にアップロードすることで、ローカルホストに公開されたサービスへのリクエスト送信が可能であることが確認された。

TcpdumpによるCVE-2021-31987の確認
図7- TcpdumpによるCVE-2021-31987の確認

CVE-2021-31988: メールテスト機能における SMTP ヘッダインジェクション

3つ目の脆弱性は、前述のSMTPテスト機能にあるSMTPヘッダーインジェクションによるものである。

ここでも、ファームウェアを静的に調べることが可能であったため、"smtptest.cgi "の解析セッションから抽出された以下の証拠に示されるように、脆弱なパラメータを正確に特定し、入力検証機能がないことを検証することができた:

脆弱なコード
図8- 脆弱なコード

修復

Axisは、Axis OS LTSおよびActiveトラック4で、影響を受けるすべてのデバイスのためのパッチをリリースしているところです:

CVE-2021-31986およびCVE-2021-31988

  • AXIS OS アクティブトラック 10.7
  • AXIS OS 2016 LTS トラック 6.50.5.5
  • AXIS OS 2018 LTS トラック 8.40.4.3
  • AXIS OS 2020 LTS トラック 9.80.3.5

CVE-2021-31987

  • AXIS OS アクティブトラック 10.8
  • AXIS OS 2016 LTS トラック 6.50.5.5
  • AXIS OS 2018 LTS トラック 8.40.4.3
  • AXIS OS 2020 LTS トラック 9.80.3.5

これらのトラックに含まれていない、まだサポート中のAxisデバイスは、計画されたメンテナンスとリリースのスケジュールに従ってパッチを受け取ります。

サイバー攻撃から機器を保護するため、アクシスの公式ウェブサイトから最新版のファームウェアをダウンロードし、インストールすることをお勧めします。

Nozomi Networks は、脆弱性の悪用の試みを検出するために、Threat Intelligence サービスに特定のアップデートをリリースしました。ありがたいことに、Axis ポートフォリオのオープンで透明性の高い設計により、Nozomi Networks Labs は調査を加速し、これらの脆弱性を迅速に特定することができました。

我々は、Nozomi Networks の調査と、開示プロセス全体を通しての良好な協力に感謝する。アクシスコミュニケーションズは、長期的に持続可能なサイバーセキュリティは、協業と透明性によって生み出されると信じているため、研究者が当社のデバイスとファームウェアを検査することを歓迎します。
AXIS OSグローバル・プロダクト・マネージャー Sebastian Hultqvist氏

参考文献

  1. 「一般的なサーバー・セキュリティの手引き」米国標準技術研究所
  2. "New Annke Vulnerability Shows Risk ofIoT Security Camera Systems,"Nozomi Networks Labs
  3. アクシスドットコム
  4. Axis OS LTS & Active tracks",Axis.