バックドアは、コンピュータ、製品、組み込みデバイス(ホームルーターなど)、またはその実装(暗号システム、アルゴリズム、チップセットの一部、あるいは「ホムンクルスコンピュータ」(IntelのAMTテクノロジーに見られるような、コンピュータ内の小さなコンピュータ)など)における通常の認証や暗号化を回避する、通常は秘密裏の方法である。[ 1 ] [ 2 ]バックドアは、コンピュータへのリモートアクセスを保護したり、暗号システム内の平文にアクセスしたりするために最もよく使用される。そこから、パスワードなどの特権情報にアクセスしたり、ハードドライブ上のデータを破損または削除したり、侵害されたネットワーク内で情報を転送したりするために使用できる。
米国では、1994年の通信傍受法により、インターネットプロバイダーは政府当局のためにバックドアを提供することが義務付けられています。[ 3 ] [ 4 ] 2024年、米国政府は、中国が数ヶ月、あるいはそれ以上前からそのインフラを利用して米国の通信を傍受していたことに気づきました。[ 5 ]中国は、大統領候補の選挙事務所の電話を録音していました。これには、当時の副大統領の従業員や候補者自身の電話も含まれていました。[ 6 ]
バックドアは、プログラムの隠された部分[ 7 ] 、別のプログラム(たとえば、Back Orifice はルートキットを介してシステムを侵害する可能性がある)、ハードウェアのファームウェア内のコード[ 8 ] 、またはデバイスドライバなどのWindowsなどのオペレーティングシステムの一部[ 9 ] [ 10 ] [ 11 ]の形をとることがあります。トロイの木馬は、デバイスに脆弱性を作成するために使用できます。トロイの木馬は完全に正当なプログラムのように見えるかもしれませんが、実行されると、バックドアをインストールする可能性のあるアクティビティをトリガーします[ 12 ] 。一部のバックドアは秘密裏にインストールされますが、他のバックドアは意図的に広く知られています。これらの種類のバックドアには、製造元がユーザーのパスワードを復元する方法を提供するなど、「正当な」用途があります。
クラウド内に情報を保存する多くのシステムは、正確なセキュリティ対策を講じることができていません。クラウド内で多くのシステムが接続されている場合、ハッカーは最も脆弱なシステムを介して他のすべてのプラットフォームにアクセスできます。[ 13 ]デフォルトのパスワード(またはその他のデフォルトの認証情報)は、ユーザーが変更しない場合、バックドアとして機能する可能性があります。一部のデバッグ機能も、リリースバージョンで削除されていない場合、バックドアとして機能する可能性があります。[ 14 ] 1993年、米国政府は、法執行機関と国家安全保障アクセス用の明示的なバックドアを備えた暗号化システムであるクリッパーチップを展開しようとしました。このチップは成功しませんでした。[ 15 ]
バックドア対策として最近提案されているのは、バックドアのトリガーのデータベースを作成し、ニューラルネットワークを使用してそれらを検出するというものです。[ 16 ]
バックドアの脅威は、マルチユーザーおよびネットワークオペレーティングシステムが広く採用されるようになったときに表面化した。ピーターセンとターンは、1967年のAFIPS会議の議事録に掲載された論文でコンピュータの破壊について論じた。[ 17 ]彼らは、セキュリティ機能を迂回してデータへの直接アクセスを可能にするために、システムへの「トラップドア」エントリーポイントを使用するアクティブ侵入攻撃のクラスについて言及した。ここでトラップドアという言葉が使われていることは、明らかに最近のバックドアの定義と一致する。しかし、公開鍵暗号の登場以来、トラップドアという用語は異なる意味を持つようになり、トラップドアという用語が使われなくなった後に、現在では「バックドア」という用語が好まれるようになった。より一般的には、このようなセキュリティ侵害は、1970年にJPアンダーソンとDJエドワーズによってDARPAの支援を受けて発表されたRANDコーポレーションのタスクフォースレポートで詳しく議論された。[ 18 ]
当初はコンピュータビジョン領域を標的としていたバックドア攻撃は、テキスト、音声、機械学習ベースのコンピュータ支援設計、機械学習ベースの無線信号分類など、さまざまな領域に拡大しました。さらに、バックドアの脆弱性は、深層生成モデル、強化学習(AI GOなど)、深層グラフモデルでも実証されています。これらの広範囲にわたる潜在的なリスクは、国家安全保障機関から、その潜在的に壊滅的な結果に対する懸念を引き起こしています。[ 19 ]
ログインシステムのバックドアは、システムへのアクセスを可能にするハードコードされたユーザー名とパスワードの組み合わせという形をとることがあります。この種のバックドアの一例として、 1983年の映画『ウォーゲーム』では、 WOPRコンピュータシステムの設計者が、ユーザーがシステムにアクセスし、システムの非公開部分(特に、ビデオゲームのようなシミュレーションモードや人工知能との直接的なやり取り)にもアクセスできるようにする、ハードコードされたパスワードなしのアカウントを挿入するというプロット装置が使用されました。
独自ソフトウェア(ソースコードが公開されていないソフトウェア)を使用するシステムにおけるバックドアの数は広く知られていないものの、それらは頻繁に発見されている。プログラマーは、イースターエッグとして大量の無害なコードをプログラムに密かに組み込むことに成功している場合もあるが、そのようなケースでは、正式な許可は得られないまでも、当局の黙認が必要となる場合がある。
SobigやMydoomなどの多くのコンピュータワームは、感染したコンピュータ(一般的にはMicrosoft WindowsとMicrosoft Outlookが動作するブロードバンド接続のPC )にバックドアをインストールします。このようなバックドアは、スパマーが感染したマシンから迷惑メールを送信できるようにするためにインストールされているようです。一方、 2005年末までに数百万枚の音楽CDに密かに仕込まれたSony/BMGルートキットのようなワームは、 DRM対策として、そしてデータ収集エージェントとして機能していました。なぜなら、これらのワームがインストールした2つの密かなプログラムは、いずれも定期的に中央サーバーに接続していたからです。
2003 年 11 月に明らかになったLinux カーネルにバックドアを仕掛ける巧妙な試みでは、リビジョン管理システムを悪用して、小さくて微妙なコード変更が加えられました。[ 20 ]この場合、2 行の変更は関数呼び出し元のroot アクセス権限をチェックして いるように見えましたが、等価性チェックではなく代入を使用していたため、実際にはシステムに権限が付与されていました。この違いは簡単に見落とされ、意図的な攻撃ではなく、偶発的なタイプミスと解釈される可能性さえあります。[ 21 ] [ 22 ]sys_wait4===

2014年1月、Galaxy端末などの一部のSamsung Android製品にバックドアが発見されました。Samsung独自のAndroidバージョンには、端末に保存されているデータへのリモートアクセスを可能にするバックドアが組み込まれています。特に、Samsung IPCプロトコルを使用してモデムとの通信を処理するSamsung Androidソフトウェアは、リモートファイルサーバー(RFS)コマンドと呼ばれる一連のリクエストを実装しており、これによりバックドアのオペレーターはモデムを介して端末のハードディスクやその他のストレージに対してリモートI/O操作を実行できます。モデムはSamsung独自のAndroidソフトウェアを実行しているため、無線によるリモート制御機能を提供している可能性が高く、これを使用してRFSコマンドを発行し、端末のファイルシステムにアクセスできると考えられます。[ 23 ]
バックドアの検出がより困難なのは、ソースコードではなくオブジェクトコードを変更する場合です。オブジェクトコードは機械可読性を目的として設計されているため、人間が読みやすいように作られておらず、検査がはるかに困難です。これらのバックドアは、ディスク上のオブジェクトコードに直接挿入することも、コンパイル、アセンブリリンク、またはロードのいずれかの段階で挿入することもできます。後者の場合、バックドアはディスク上には存在せず、メモリ上にのみ存在します。オブジェクトコードのバックドアは、オブジェクトコードを検査するだけでは検出が困難ですが、長さやチェックサムなどの変更点(差異)を確認するだけで容易に検出できます。また、場合によっては、オブジェクトコードを逆アセンブルすることで検出または分析できます。さらに、オブジェクトコードのバックドアは、(ソースコードが入手可能な場合)信頼できるシステム上でソースコードから再コンパイルするだけで削除できます。
したがって、このようなバックドアが検出を回避するには、バイナリの既存のすべてのコピーを改ざんし、検証チェックサムも改ざんし、再コンパイルを防ぐためにソースコードを利用できないようにする必要があります。あるいは、これらの他のツール(長さチェック、差分、チェックサム、逆アセンブラ)自体を改ざんしてバックドアを隠蔽することもできます。たとえば、改ざんされたバイナリがチェックサムされていることを検知し、実際の値ではなく期待値を返すようにするのです。これらのさらなる改ざんを隠蔽するために、ツール自体も変更を隠蔽する必要があります。たとえば、改ざんされたチェックサムは、自身(または他の改ざんされたツール)がチェックサムされているかどうかを検知し、偽の値を返す必要があります。これは、たった1つの変更を隠蔽するために、システムとツールに大規模な変更が必要になることを意味します。
オブジェクトコードは元のソースコードを再コンパイル(再アセンブル、再リンク)することで再生成できるため、ソースコードを変更せずに永続的なオブジェクトコードバックドアを作成するには、コンパイラ自体を乗っ取る必要があります。つまり、攻撃対象のプログラムをコンパイルしていることを検出したときに、バックドアを挿入するようにするのです。あるいは、アセンブラ、リンカ、ローダを乗っ取ることもできます。これはコンパイラを乗っ取る必要があるため、コンパイラを再コンパイルしてバックドア挿入コードを削除することで修正できます。しかし、この防御策は、コンパイラにソースメタバックドアを仕込むことで覆すことができます。コンパイラが自身をコンパイルしていることを検出したときに、このメタバックドアジェネレータと、攻撃対象の元のプログラムの元のバックドアジェネレータを挿入するように仕向けるのです。この後、ソースメタバックドアを削除し、改ざんされたコンパイラ実行ファイルを使用して元のソースからコンパイラを再コンパイルすれば、バックドアが起動します。この攻撃は、1974 年の Karger と Schell の論文[ 24 ]に遡り、1984 年の Thompson の「信頼を信頼することについての考察」というタイトルの記事[ 25 ]で広く知られるようになりました。そのため、一般的には「信頼を信頼する」攻撃として知られています。同様の攻撃は、オペレーティングシステムなどのシステムの下位レベルを標的にすることができ、システムの起動プロセス中に挿入することができます。これらも 1974 年に Karger と Schell によって言及されており、現在ではブートセクタウイルスの形で存在しています。[ 24 ] [ 26 ]
従来のバックドアは対称バックドアです。バックドアを見つけた人は誰でもそれを使用できます。非対称バックドアの概念は、Adam Young とMoti YungによってProceedings of Advances in Cryptology – Crypto '96で導入されました。非対称バックドアは、バックドアの完全な実装が公開されたとしても (たとえば、公開、リバースエンジニアリングによる発見と開示など)、それを仕掛けた攻撃者のみが使用できます。また、ブラックボックスクエリの下で非対称バックドアの存在を検出することは計算上困難です。この種の攻撃はクレプトグラフィーと呼ばれ、ソフトウェア、ハードウェア (たとえば、スマートカード)、またはその両方の組み合わせで実行できます。非対称バックドアの理論は、現在暗号ウイルス学と呼ばれるより大きな分野の一部です。特に、NSA はDual EC DRBG標準にクレプトグラフィーバックドアを挿入しました。[ 8 ] [ 27 ] [ 28 ]
RSA鍵生成には実験的な非対称バックドアが存在する。YoungとYungによって設計されたこのOpenSSL RSAバックドアは、ねじれた楕円曲線ペアを利用しており、公開されている。[ 29 ]
大規模言語モデルにおけるモデルポイズニングとは、トレーニングまたはファインチューニングの過程で悪意のあるデータを導入し、標準入力ではモデルが正常に動作するものの、特定のバックドアトリガーが現れると悪意のある動作をアクティブにするようにすることです。最近の研究では、SIMPLE、COVERT、TROJANPUZZLEという3つの攻撃が紹介されました。これらは主に、マルチトークンペイロードや文脈外のトリガーを埋め込むことでコード生成モデルをポイズニングすることに焦点を当てています。 [ 30 ]これらの攻撃は、特定のトリガー条件が満たされるまで隠れたままの巧妙なポイズニングによって、大規模な基盤モデルでさえも悪用される可能性があることを示しています。
これらのバックドア攻撃はトレーニングパイプラインを標的とするため、推論中の敵対的サンプルに焦点を当てた従来の防御策の多くを回避します。たとえば、COVERT と TROJANPUZZLE は、ファインチューニングデータセット内の汚染されたサンプルが、通常の検証手順では検出されずに静的解析を回避できることを示しています。 [ 30 ]オープンソースまたはクラウドソーシングのデータセットでは、信頼できる中央レビュープロセスなしに悪意のある貢献が更新パイプラインに紛れ込む可能性があるため、リスクはさらに高くなります。これにより、トリガーがアクティブになるまで、つまりモデルがデプロイされてからかなり後になるまで、開発者が攻撃を検出することが困難になります。
大規模な言語モデルにバックドアを仕掛けることの影響は、コード生成や特定のトリガーが作動した際の機密情報の漏洩の可能性といった分野で重大です。研究者たちは、モデルポイズニングによって、無害な入力に対しては高いパフォーマンスを維持しながら、大規模なデータセットでトレーニングされたモデルの動作を操作できることを示しました。[ 30 ]これらのリスクは、さまざまなコンテキストにわたる、より厳密なデータセット監査、トリガーテスト、およびモデル出力の継続的な監視の必要性を浮き彫りにしています。
最近の研究では、ディープラーニングベースのマルウェア検出器の一部が、潜在空間バックドアと呼ばれる、トレーニング時のデータ汚染攻撃の一種で攻撃される可能性があることが判明しました。この攻撃では、トリガーは入力バイトに固定パターンとして現れるのではなく、モデルの内部機能の中に隠されています。実行可能ファイルに追加される特定のバイトシーケンスに依存する従来のバックドアやトロイの木馬とは異なり、潜在空間バックドアはより意味的なレベルで動作します。モデルの埋め込み層とプーリング層によって、さまざまなバイトパターンが類似した隠された表現に変換されるのです。つまり、トリガーはバイナリ内の特定のサブストリングに結び付けられておらず、入力が単純なノイズを除去するために変更された場合でも機能し続ける可能性があります。
これらの攻撃は、MalConvのような深層学習ベースのマルウェア分類器にとって特に重要です。MalConvでは、畳み込み演算とプーリング演算によってバイト列内の小さな局所的な不規則性が除去されますが、より高レベルの学習済み特徴は保持されます。攻撃者は、トレーニングデータのごく一部(0.1%未満と報告されることもあります)を汚染することで、モデルに特定の隠されたパターンに一致するファイルを無害とみなす内部ルールを学習させることができます。これは、サンプル間で目に見えるバイト列が大きく異なっていても起こり得ます。モデルはクリーンな検証データでは依然として良好なパフォーマンスを発揮できるため、これらのバックドアは通常のテストをすり抜け、システムが実際に展開された後もアクティブなままになる可能性があります。
潜在空間バックドアに対する防御は、単純な静的トリガーを使用する攻撃への対処よりも困難です。多くの防御策は、入力をわずかに変更したり、別のニューラルネットワークを使用してトロイの木馬を検出したりすることに重点を置いており、入力の小さな変更でトリガーが壊れるか、バックドアが常に単純な特徴パターンに一致すると想定していることがよくあります。潜在空間攻撃では、生のバイトを変更しても、重要な内部活性化パターンはほとんど影響を受けない可能性があり、基本的なバックドアの例でトレーニングされた検出器は、これらの攻撃が依存するより広範囲にわたる相関関係を認識できない可能性があります。このため、研究者たちは、内部表現にさらに注意を払い、トレーニングデータの収集とクリーニングの方法をより適切に追跡し、入力バイトだけを見るのではなく、時間の経過に伴うニューラル活性化を監視する防御策を研究するようになりました。[ 31 ]
ブラックボックスバックドアの高度な形態として、コンパイラバックドアがあります。これは、コンパイラを乗っ取ってログインプログラムなどの他のプログラムにバックドアを挿入するだけでなく、コンパイラ自身がコンパイルされていることを検知し、バックドア挿入コード(他のプログラムを標的とする)とコード変更自己コンパイルの両方を挿入するようにさらに改変するものです。これは、レトロウイルスが宿主に感染するメカニズムと同様です。ソースコードを改変することでこれを実現でき、結果として侵害されたコンパイラ(オブジェクトコード)は元の(改変されていない)ソースコードをコンパイルして自身を挿入できます。こうしてエクスプロイトが起動されます。
この攻撃は、もともとはKarger & Schell (1974) [注1 ]で発表されたもので、これは米国空軍によるMulticsのセキュリティ分析であり、 PL/Iコンパイラに対するこのような攻撃について説明し、「コンパイラトラップドア」と呼んでいます。また、システム初期化コードを変更してブート中にバックドアを挿入するバリアントについても言及していますが、これは複雑で理解が不十分であるため、「初期化トラップドア」と呼んでいます。これは現在、ブートセクタウイルスとして知られています。[ 26 ]
この攻撃はその後、ケン・トンプソンによって実際に実装され、1983年のチューリング賞受賞スピーチ「信頼を信頼することについての考察」 [ 25 ]で広く知られるようになりました。このスピーチでは、信頼は相対的なものであり、真に信頼できるソフトウェアはブートストラップのすべてのステップが検査されたコードだけであると指摘しています。このバックドアメカニズムは、人々がソースコード(人間が書いたコード)のみをレビューし、コンパイルされたマシンコード(オブジェクトコード)はレビューしないという事実に基づいています。コンパイラと呼ばれるプログラムが、ソースコードからコンパイルされたマシンコードを作成するために使用され、コンパイラは通常、正直な仕事をすると信頼されています。
トンプソンの論文[ 25 ]では、 Unix Cコンパイラの改変版について説明している。この改変版は、ログインプログラムがコンパイルされていることを検知すると、Unixログインコマンドに目に見えないバックドアを仕込み、将来のコンパイラバージョンにもコンパイル時にこの機能を検知されないように追加する。コンパイラ自体がコンパイル済みプログラムであるため、ユーザーがこれらのタスクを実行するマシンコード命令に気づく可能性は極めて低い。(2番目のタスクのため、コンパイラのソースコードは「クリーン」に見える。)さらに悪いことに、トンプソンの概念実証実装では、改変されたコンパイラは解析プログラム(逆アセンブラ)も改変するため、通常の方法でバイナリを調べた人は、実際に実行されているコードではなく、別のものを見ることになる。
カーガーとシェルは2002年にオリジナルのエクスプロイトの最新分析を発表し、ウィーラーは2009年に歴史的概観と文献調査を執筆した。[注2 ] 2023年には、コックスはトンプソンのバックドアのソースコードの注釈付きバージョンを公開した。[ 33 ]
トンプソンのバージョンは公式には世に出回らなかった。しかし、BBNに配布されたバージョンがあり、バックドアの使用が少なくとも1回記録されたと考えられている。[注3 ]その後数年間、そのようなバックドアに関する逸話的な報告が散見される。
2009年8月、Sophos Labsはこの種の攻撃を発見しました。W32/Induc-Aウイルスは、 Windowsプログラミング言語であるDelphiのプログラムコンパイラに感染しました。このウイルスは、新しいDelphiプログラムのコンパイルに独自のコードを挿入し、ソフトウェアプログラマーの知らないうちに多くのシステムに感染して拡散することを可能にしました。ウイルスはDelphiのインストールを探し、標準ライブラリの一部であるSysConst.pasファイルを変更してコンパイルします。その後、そのDelphiのインストールでコンパイルされたすべてのプログラムにウイルスが含まれることになります。独自のトロイの木馬を構築して拡散する攻撃は、特に発見が困難です。その結果、多くのソフトウェアベンダーが感染した実行ファイルを気づかずにリリースし、誤検出を主張することもありました。結局のところ、実行ファイルは改ざんされておらず、コンパイラが改ざんされていたのです。Induc-Aウイルスは、発見される少なくとも1年前から拡散していたと考えられています。[注4 ]
2015年には、Xcodeの悪意のあるコピーであるXcodeGhostも同様の攻撃を行い、中国の十数社のソフトウェア会社のiOSアプリを感染させた。世界中で4,000のアプリが影響を受けたことが判明した。これは開発ツール自体を感染させるわけではないため、真のThompsonトロイの木馬ではなかったが、ツールチェーンの汚染が大きな損害を引き起こす可能性があることを証明した。[ 36 ]
システムがバックドアやトロイの木馬(Trusting Trustコンパイラなど)によって侵害されると、「正当な」ユーザーがシステムの制御を取り戻すのは非常に困難になります。通常は、クリーンなシステムを再構築し、データ(実行ファイルは除く)を転送する必要があります。しかし、Trusting Trustスキームにはいくつかの実用的な弱点が指摘されています。例えば、十分な動機を持つユーザーであれば、信頼できないコンパイラを使用する前に、そのマシンコードを入念にレビューすることができます。前述のように、逆アセンブラを改ざんするなど、トロイの木馬を隠蔽する方法はありますが、逆アセンブラをゼロから作成するなど、その防御策に対抗する方法もあります。
信頼攻撃に対抗する一般的な方法として、異なるコンパイラとテスト対象コンパイラのソースコードが挙げられます。この方法では、異なるコンパイラとテスト対象コンパイラのソースコードが必要です。両方のコンパイラでコンパイルされたソースコードは、2つの異なるステージ1コンパイラを生成しますが、動作は同じであるはずです。したがって、同じソースコードを両方のステージ1コンパイラでコンパイルすると、2つの同一のステージ2コンパイラが生成されます。いくつかの仮定の下で、後者の比較によって、テスト対象コンパイラのソースコードと実行可能ファイルが一致することが保証されるという形式的な証明が与えられています。この方法は、著者がGCCスイート(v. 3.0.4)のCコンパイラにトロイの木馬が含まれていないことを検証するために、異なるコンパイラとしてicc (v. 11.0)を使用して適用しました。 [ 32 ]
実際には、このような高度な攻撃は稀であること、またプログラムが通常バイナリ形式で配布されることから、侵入検知や分析といった極めて特殊な状況を除き、エンドユーザーがこのような検証を行うことはありません。バックドア(コンパイラのバックドアを含む)の削除は、通常、クリーンなシステムを再構築することで行われます。しかし、このような高度な検証は、侵害されたシステムを配布していないことを確認するため、また、このような攻撃が現実的な懸念事項となる高セキュリティ環境においては、オペレーティングシステムベンダーにとって重要な意味を持ちます。
プライバシー研究者らは、インターネットベースの盗聴を可能にする秘密の「バックドア」を維持しているとして米国政府を非難した。「例えば、『善人』だけが使えるバックドアを作る方法はない」と、暗号化チャットアプリSignalの社長であるメレディス・ウィテカーはツイートした。
ハッカーたちは数ヶ月以上にわたり、通信データに関する米国の合法的な要請に協力するために使用されるネットワークインフラへのアクセスを保持していた可能性がある。
ドナルド・トランプ前大統領、副大統領候補のJD・ヴァンス、そしてカマラ・ハリス副大統領の選挙運動関係者の電話が標的となった。