Compact

製品には意図の有無に関わらず、文書化されていない隠し機能が含まれることがあります。テスト・デバックといった用途から隠ぺいまで理由は様々ですが、こういった機能は詮索や懸念を招きやすくなります。
今回は隠し機能の実装の理由やその例について解説します。

エグゼクティブサマリー

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

この記事を執筆したアナリスト

100

川北 将(Kawakita Masaru)
専門分野:脅威インテリジェンス、AI

15年以上、セキュリティ領域の研究開発から製品開発まで広く携わり、現在も脅威インテリジェンス分析AIの技術開発・活用推進に従事。CTF世界大会に個人・団体で決勝出場経験あり。CISSP、情報処理安全確保支援士(RISS)、システム監査技術者を保持。