Japan
サイト内の現在位置を表示しています。
文書化されていない隠し機能
サイバーインテリジェンス2025年10月28日
製品には意図の有無に関わらず、文書化されていない隠し機能が含まれることがあります。テスト・デバックといった用途から隠ぺいまで理由は様々ですが、こういった機能は詮索や懸念を招きやすくなります。
今回は隠し機能の実装の理由やその例について解説します。
エグゼクティブサマリー
- スペインのセキュリティ企業がマイクロチップESP32に隠し機能を発見したことを公表
- 一般的に隠し機能はテストやデバッグのため、意図的な隠蔽、開発の都合などの理由で実装されるがCWEに脆弱性となりうる弱点として定義
- 隠し機能が明るみになるとサプライチェーン上の懸念を生む可能性があるため、できるだけ文書化し、また、詳しく文書化されているか確認することが重要
目次
IoT機器向けマイクロチップに見つかった隠し機能
2025年3月6日(現地時間)、スペインのセキュリティ企業は10億台を超えるIoT機器に搭載されている中国Espressif Systems社製のマイクロチップESP32に隠し機能を発見した [1] [2]と首都マドリードで開催されたRootedCON [3]で公表しました。すでにCVE-2025-27840 [4]が割り当てられています。発見者は独自のツールによるリバースエンジニアリングでESP32のBluetoothファームウェアに隠しコマンド(コード0x3F)を見つけ、文書化されていない29個のHCI(Host Controller Interface)コマンドが含まれていた [5]と報告しています。当初は一部の媒体で『バックドア』と記述されていましたが、後に『隠し機能』と訂正されました。
隠し機能はなぜ実装されるのか?
このようなドキュメント化されていない隠し機能はCWE-912 [6](隠された機能)、CWE-1242 [7](文書化されていない機能やチキンビットの組み込み)として脆弱性となりうるハードウェア・ソフトウェアの弱点としてCWE(Common Weakness Enumeration)に定義されています。
一方で、世の中には数多くの隠し機能が作られ、そして発見されています。隠し機能が作られるのは一般的に次のような理由です。
- テストやデバッグのための機能
特権のない状況だが特権があるに等しいことが別の手段で証明できる状態(デバッグモードに入る、特定のピン同士が接続されている等)で、本来なら特権を必要とする操作を実行するために意図的に実装される場合があります。簡単に利用できたり、ソフトウェアのみで実行可能だったりすると、バックドアとなる可能性が高くなります。 - 意図的な隠ぺい
方法さえ知っていれば誰でも簡単にアクセスできる特権操作だが技術的な制約等からアクセスコントロールできない場合、公開ドキュメントに記載しないことで弱点を知られないようにする場合があります。法的に知らせることができない可能性も考えられます。 - 開発の都合
短納期の開発でドキュメント化を怠った、長期間にわたって運用されていて古いコードについて誰も知らない、および、テスト不足でバグが残存しているなど、開発の都合で隠し機能が生み出される場合があります。
脆弱性になる可能性があるから隠し機能の実装をやめろと言われても、テストやデバッグができなくなると不便ですし、特権操作を制限するために複雑なアクセスコントロールを実装するよりも単にドキュメントに書かず誰にも知られないことを祈るほうが経済的で、ハードウェアであれば消費電力が下がり環境負荷も下がります。そもそもあるチップについて完璧にドキュメント化するとそれはもはや設計書以上のもので、悪用されれば模倣品を作られかねません。
隠し機能のメリットとデメリットの間にはある種のトレードオフがあることが、隠し機能が無くならない一因であると筆者は考えます。
隠し機能の例
リモートメンテナンスモード
同一のLANセグメントから特別なURLでアクセスするとデバッグ用のページが表示されるルーターが存在します。ファームウェアにハードコードされた認証情報でログインすると、telnetdを起動したり、通常は見られないsyslogやプロセスの情報を見ることができたりします。このようなものはCWE-259 [8](ハードコードされたパスワードの使用)の存在も疑われます。
特別なアクセス機能を持つセキュアブートデバイス
ブート時にファームウェアの整合性を検証するデバイスを考えます。このコードは通常のものとは分離された SPIフラッシュデバイスに保存され、障害を分析する用途で設計者にのみロック解除されることを意図した、文書化されていない「特別なアクセス機能」を含みます。攻撃者は何らかの手段でデバイスからコードをダンプし、リバースエンジニアリングで文書化されていない特別なアクセス機能を特定します。するとブートが完了する前に UART 経由で特定のコマンドを送信することで、特別なアクセス機能を使ってメモリの読み取りと書き込みが実行できます。
サービスモード
家電からエンタープライズ機器まで様々な『サービスモード(サービスマンモード)』が存在します。テレビであれば機種によって操作が異なりますが一例として、赤外線リモコンで音量のマイナスボタンを押しながら、2秒以内に特定のボタンを3回押すなどして『サービスモード』に入ることができます。サービスモードに入ると通常の設定画面より細かく色調を調整したり、密かにカウントされた総視聴時間がわかったりといった特別な機能が用意されています。あるスマートテレビではより複雑な操作でサービスモードに入らなければならない代わりに多くの隠し機能があります。スマートホームでは赤外線リモコンをインターネットから遠隔操作できる可能性があり、悪用されると常に真っ暗なテレビに変えられてしまいます。
ドキュメント化されていない仕様
CPUの仕様にドキュメント化されていないオペコードが存在する [9]ことがあります。古いものでは8ビットCPUのZ80および互換品に実装された、IX・IYレジスタへの8ビットアクセスやSLL命令が挙げられます。プログラムの高速化やCPUの種類を判別する手段として用いられる場合があります。近代的な事例としては、x86 CPUにおいてMOV SS命令やPOP SS命令の後でSYSCALL、SYSENTER、INT3などの特権レベルを変更する命令があった場合の例外処理が細かくドキュメント化されておらず、ほとんどのOSで実装の誤りによる脆弱性 [10] [11] [12]を生み出した問題がありました。
結び
利便性のために意図的に作られた隠し機能の存在が明るみになると、バックドアによる機密情報の収集を提供元やその国家が密かに行っているのではないかとのサプライチェーン上の懸念を生み出す原因となることがあります。そのような疑いをもたれないようにするため、できるだけ文書化することや詳しく文書化されていることの確認が必要です。
参照文献
[1]
Tarlogic detects a hidden feature in the mass-market ESP32 chip that could infect millions of IoT devices
[2]
Undocumented commands found in Bluetooth chip used by a billion devices
[3]
RootedCON
[4]
CVE-2025-27840
[5]
2025 RootedCon BluetoothTools
[6]
CWE-912: Hidden Functionality
[7]
CWE-1242: Inclusion of Undocumented Features or Chicken Bits
[8]
CWE-259: Use of Hard-coded Password
[9]
Z80 Undocumented Instructions
[10]
POP SS debug exception - CVE-2018-8897 [Moderate] & CVE-2018-1087 [Important]
[11]
CVE-2018-1087
[12]
CVE-2018-8897
この記事を執筆したアナリスト
川北 将(Kawakita Masaru)
専門分野:脅威インテリジェンス、AI
15年以上、セキュリティ領域の研究開発から製品開発まで広く携わり、現在も脅威インテリジェンス分析AIの技術開発・活用推進に従事。CTF世界大会に個人・団体で決勝出場経験あり。CISSP、情報処理安全確保支援士(RISS)、システム監査技術者を保持。
