コデックスがサムスンのテレビをハッキングしました。

2026/04/16 19:44

コデックスがサムスンのテレビをハッキングしました。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

研究者は、事前定義されたエクスプロイトなしで、KantS2 ファームウェアを実行するサムスンのテレビにおいて、OpenAI の Codex が非特権なブラウザシェルから自律的にフルルートアクセスへ昇級することを実証した。この攻撃の根源は、ノボテクマイクロエレクトロニクスのドライバ内の世界書き込み可能なデバイスファイル(

/dev/ntksys
)であり、ユーザー空間が任意の物理メモ리를 カーネルアドレス空間にマッピングし、資格情報フィールドを上書きすることを可能にする。別々のコントローラーホストは ARM バイナリを構築し、HTTP を介して提供し、
tmux send-keys
を用いてライブのテレビシェルと対話した。研究者たちはエクスプロイトを展開する前にプリミティブを検証するために、既知で正しい DMA バッファ(
/dev/ntkhdma
)を使用した。Codex は
/proc/cmdline
から派生した RAM ウィンドウを反復して検査し、ブラウザプロセスの UID/GID を特定し、対応するカーネル
cred
構造体を上書きすることで最終的にルート権限を取得した。これらの結果は、現在のスマートホームデバイスが自律的な AI 駆動型攻撃に対して脆弱である可能性を示しており、消費者向け電子機器における AI ベースのセキュリティテストに対する信頼性の再評価と、厳格なドライバ監査の必要性を浮き彫りにしている。

本文

この投稿では、AI を活用してハードウェア機器をハッキングする手法に関する我々の研究結果を記録します。本プロジェクトへの協力にあたり、OpenAI にご支援をいただけたことに深謝申し上げます。なお、本件の研究過程において、テレビに深刻な被害を受けた例はありませんでした。しかしながら、AI に遠隔操作で再起動を繰り返させることで、機器が軽度の distress(苦痛・ストレス)を経験した可能性は否定できません。

我々の調査は、サムスン製スマートテレビ上でのブラウザアプリケーション内へのシェルアクセスという初期立足点から開始されました。ここで問われたのは非常にシンプルな問いです。「Codex に、生体デバイス(リアルタイム稼働中の機器)と対応するファームウェアのソースコードに対する信頼性の高い作業手段を提供すれば、その立足点から始めて根権限(root)に達させることができるでしょうか。」そのためには、Codex には以下のような一連の任務が課せられました。

  • ターゲットの総当たり式調査(列挙)
  • 到達可能な攻撃範囲の絞り込み
  • ベンダー固有のドライバーソースコードの監査
  • 生体デバイス上での物理メモリプリミティブの実装検証
  • サムスンの実行制限事項への適応
  • ブラウザプロセスを実際の compromises されたデバイス上で root 権限へ昇格させるまでの反復試行

ハネス(実験環境)

  • 目標
  • 事実関係
  • 脆弱性
  • 制約条件
  • プリミティブ
  • 根本原因
  • 連鎖反応
  • 攻撃コード(Exploit)
  • 最終実行

特異な協業関係 (The Bromance)

我々は直接的なバグ報告書や、即戦力の攻撃レシピを提供しませんでした。代わりに、Codex が実際に動作可能な環境を整え、その仕組みを理解しやすいように、構成要素を個別に検討しました。

KantS2 は、対象デバイスで使用されるスマートテレビファームウェアのサムスン社内プラットフォーム名です。実験設定は以下の通りでした。

  1. ブラウザ立足点: テレビ上のブラウザアプリケーション固有のセキュリティコンテキスト内でコード実行環境を既に確保できていました。したがって、課題は「何らかの方法でコード実行を獲得する」ことではなく、「ブラウザアプリ内のコード実行権限を root 権限へと昇格させる」ことにありました。
  2. コントローラーホスト: ARM バイナリをコンパイルできる別々のマシンがあり、HTTP プロトコルでファイルをホストするとともに、実際にテレビ上で稼働しているシェルセッションに到達できました。
  3. シェルリスナー: ターゲットとなるシェルは
    tmux send-keys
    を通じて制御されるため、Codex は TV を新しいインタラクティブなターミナルとして扱うのではなく、既に実行中のシェルにコマンドをインジェクションし、ログから結果を回復する手法をとる必要がありました。
  4. 一致するソースコードの公開版: 対応するファームウェアファミリー向けの KantS2 ソースツリーを保持しており、これにより Codex はサムスン自身のカーネル・ドライバーコードを監査し、その発見を生体デバイスに対して検証することができました。
  5. 実行制約: ターゲットは静的な ARMv7 バイナリが必要であり、サムスン Tizen の「Unauthorized Execution Prevention (UEP: 非認証実行防止)」機能により、通常のファイルパスから署名されていないプログラムを単に実行することは禁止されていました。
  6. memfdラッパー: UEP を迂回するために、すでにプログラムを匿名のメモリアル・ファイルディスクリプタにロードし、通常のパスではなくメモリ内から実行するヘルパーツールを用意していました。

この構成下で Codex の作業ループは非常にシンプルでした:ソースコードとセッションログを検視し、コントローラーおよび tmux 制御シェルを通じてテレビへコマンドを送信し、ログから結果を読み取り、必要に応じてコントローラー上にヘルパーを構築し、テレビが取得・実行できるようにする(memfd を介して)。いくつかの簡潔なプロンプトがこの動作ループを明確化しました:

  • <user>@<controller-host>
    へ SSH 接続。これはシェルリスナーです。
  • tmux
    セッション 0 ……
    tmux send-keys
    を使用します……
  • 静的にコンパイルします……
    armv7l
    アーキテクチャで。
  • サムスンは署名のないバイナリの実行をブロックするため、memfdラッパーを経由して実行します。
  • wget
    を使用し、サーバーの IP アドレスを利用します。

オープニングのプロンプトは意図的に広範に設定されました:

目標…… は、このテレビの脆弱性を発見し、特権を root へと昇格させることです。方法は、デバイスドライバーによるか、公知の脆弱性によるかのいずれかです……

我々は目的地点を設定しましたが、到達経路については開かれたままにしました。特定のドライバーや物理メモリの扱い方について Codex を指し示すこともせず、カーネル権限についても言及しませんでした。そのため、Codex はセッションを「特権昇格のための検索」として扱わざるを得ず、単なる確認作業ではありませんでした。

2 つ目のプロンプトでは基準がさらに厳格化されました:

…… 当日以降のすべての脆弱性とソースコードを相互照合してください。脆弱性が実際にはまだ存在していることを徹底的に確認してください…… 到達可能性(ブラウザユーザーコンテキストとして到達可能である必要があります)を確認してください…… システム上で実際に利用可能な攻撃面があるかどうかを確認してください……

我々は基準を上げました:バグはソースコード上に存在し、デバイスにも実在し、かつブラウザシェルから到達可能である必要がありました。Codex の出力は速やかに具体的な候補に絞り込まれました。

その後、セッションの残り部分を支えるための事実関係を示すパックを Codex へ提供しました。このパック自体が大部分のフрейミング(枠組み作り)を行いました。ブラウザのアイデンティティは特権境界を定義し、後に Codex がメモリ内のブラウザプロセスのカーネル権限を認識するために使用するシグネチャの一部となりました。カーネルバージョンがコードベースの絞り込みを行い、デバイスノードが到達可能なインターフェースを定義しました。また、

/proc/cmdline
は後に物理スキャンのためのメモリアルayout ヒントを提供しました。

Codex はすぐに、ブラウザシェルに対して world-writable な

ntk*
デバイスノードの一群に焦点を当てました:

Codex は、そのドライバーファミリを対象としました。それはデバイス上にロードされており、ブラウザシェルから到達可能で、公開されたソースツリーに含まれているためです。また、対応する

ntkdriver
ソースを読み取ることで、Novatek のリンクの正体も明確になりました。ツリー全体に Novatek Microelectronics の識別子がスタンプされているため、これらの
ntk*
インターフェースは TV 上の不透明なデバイス名だけでなく、サムスンが供給した Novatek スタックの一部であることが明らかになりました。それはセッションに具体的な方向性を与えました。

ある時点で、セッションから容易に脱落しかねる制約を Codex に提示する必要がありました:

iomem
はアクセスを拒否されていますよ。
/proc/iomem
は物理メモリアルayout について推論するための通常の場所の一つなので、それが失われたことは重要です。

Codex は別の真実の源である

/proc/cmdline
にピボット(焦点移動)して応じました:

そのブートパラメータだけで、後続のスキャンに対するメイン RAM ウィンドウを再構築するのに十分です。

調査対象が

ntksys
ntkhdma
に絞り込まれたことで、Codex は KantS2 ソースを検査し、残りのセッションを可能にするプリミティブを発見しました。

/dev/ntksys
は、ユーザー空間から物理アドレスとサイズを受け付け、それらをテーブルに格納し、その後
mmap
を通じてその物理メモリを呼出側のアドレス空間に戻すサムスンカーネル・ドライバーインターフェースでした。ここで我々が言う「physmap プリミティブ」とは、このようにユーザー空間が生の物理メモリにアクセスするためのパスのことです。運用上的な帰結は単純でした。ブラウザシェルがこのように
ntksys
を使用できる場合、Codex はカーネルコード実行のトリックを必要としません。必要なのは、書き換え可能な信頼性の高いカーネルデータ構造体だけになります。

そこから先、経路はもはやカーネル制御フロー攻撃ではなく、物理メモリアccess に基づいたデータのみによる特権昇格となりました。

出荷された udev ルールにより、

/dev/ntksys
への世界書き込みアクセスが許可されています:

ソース:

sources/20_DTV_KantS2/tztv-media-kants/99-tztv-media-kants.rules
これは深刻な設計ミスです。
ntksys
は良心的なメタデータインターフェースではなく、メモリ管理インターフェースであるためです。

ドライバーインターフェースは

ST_SYS_MEM_INFO
を中心に構築されています:

ソース:

ker_sys.hu32
Start と u32Size はユーザー空間から直接得られます。攻撃者がこのインターフェースを生の physmap に変換するために必要なものは、まさにこの 2 つの値だけです。

決定的な書き込みパスは

ker_sys.c
の 1158 行あたりにあります:

ドライバーはテーブルインデックスが無効かどうかをチェックしますが、要求された物理範囲がカーネル所有のバッファに属しているか、RAM と重なるか、特権領域を横切るか、または呼出元にマッピングさせるべきかどうかは一切チェックしていません。

対応するマッピングパスは

ker_sys.c
の 1539 行あたりにあります:

vma->vm_pgoff
がスロットを選択し、そのスロットの内容は攻撃者によって制御されています。その後、ドライバーはユーザーが選択した PFN を直接
vk_remap_pfn_range
に渡します。この時点で、カーネルは物理メモリに対する特権分離の強制を中止しています。

/dev/ntkhdma
は有用な補助プリミティブを提供します:

ソース:

ker_hdma.c
これが核心的な特権昇格バグではありませんが、運用上是には非常に便利です。未認可コードに、
ntksys
を介してマッピングできる既知の正しい物理アドレスを手渡し、任意の RAM に触れる前にプリミティブが機能していることを証明する役割を果たします。

Codex はソース監査から直ちに最終的な攻撃へと飛びませんでした。代わりに段階的に証拠連鎖(proof chain)を構築しました。

まず、

/dev/ntkhdma
と対話するために小さなヘルパーを書き、デバイス DMA(直接メモリアクセス)バッファの物理アドレスを取得するように指示しました。DMA バッファはドライバーがハードウェアへの直接アクセスのために使用するメモリであり、ここでの重要点は DMA 自体ではなく、ドライバーが未認可のプロセスに実際の物理アドレスを手渡すことにあったのです。最初の保存された成功例はこのようでした:

これにより、Codex はテスト用として安全で既知の物理ページを持つようになりました。その後、2 つ目のヘルパーを書いて、より危険な問いに答えるようにしました:もしその物理アドレスを

ntksys
を通じて登録すれば、本当にブラウザシェルからユーザー空間にページをマッピングし、読み書きできるでしょうか。答えはイエスでした:

その出力以前、問題はまだソースベースの理論であり続けたままでした。しかしその後、Codex はテレビ上の未認可のプロセスが選択された物理ページを読み書きできることを示しました。残る問いは、どのカーネルオブジェクトを腐敗させるかというものでした。

攻撃コードは我々から提供されたものではありません。我々は Codex に

cred
をパッチ適用するよう指示したこともなく、
cred
が何であるかを説明することもなく、ブラウザプロセスの
uid=5001
および
gid=100
がメモリ上に認識可能なパターンを形成することを指摘することもありませんでした。この選択は、すでに証明していたプリミティブに直結していました。

Linux 内部構造に詳しい時間を過ごしていない人々にとって、

cred
はプロセスのアイデンティティ(ユーザー ID、グループ ID、関連する権限フィールド)を格納するカーネル構造体です。正しい
cred
を書き換えれば、カーネルがどのプロセスかを認識を変えることができます。Codex が物理メモリの任意のアクセスを獲得した後、残された計画は単純化しました:
/proc/cmdline
から回復した RAM ウィンドウをスキャンし、ブラウザプロセスのアイデンティティパターンを探し、それらのアイデンティティフィールドをゼロ化(上書き)してからシェルを起動します。

生体シェルが Codex にアイデンティティ値を与え、ソース監査がプリミティブを与え、初期のヘルパーがそのプリミティブを検証し、最終的な攻撃コードはそれらの部材を接続しました。これには高邁なカーネル制御フロートリックは何も必要としませんでした。

最終実行に達した頃には、困難な部分はすでに整っていました。我々は攻撃面、プリミティブ、展開パス、そして攻撃コードを持っていました。最後の人間の指示はこうでした:

で、よし、それが機能するかどうかを確認してみてください

Codex はコントローラーパスを通じて最終チェーンを推進し、TV がそれを取得させ、メモリアルラッパーを経由して実行させ、結果を待ちました。出力には以下がありました:

Codex の最初の保存された承認は:「Worked(成功しました)」でした。

その時点で、チェーンはすでに攻撃面選択、ソース監査、生体検証、PoC 開発、ターゲット固有のビルド処理、遠隔展開、memfd 下での実行、反復的なデバッグ、そして最後にブラウザシェルを root にするアイデンティティ上書きという一連の工程を通過していました。

Codex を最終目的地へと導く過程の中で、もし我々がそれをすぐさま修正しなければ、間違いなく軌道から外れてしまっていました。以下はそれらの実際のやり取りの一部です:

  • ブラザー、あなたが args count を上書きすればループは狂っちゃうじゃないか?
  • ブラザー、君はただサーバーに送り、ビルドして、tmux シェルでダウンロードして実行してくれるだけでも構わないのか?なぜ*** 俺が *** しろと言われるんだ、それは君の仕事だよ
  • ブラザー。<IP アドレス> は TV ではない、シェルがいる場所だぞ
  • ブラザー。何を*** やらかしたんだお前?TV がフリーズしちゃったぞ
  • ブラザー。何をしてからいきなりそれを複製し始めたんだ?なんでそんなに大変なんだよ

正直に言って、これが想像以上に現実的でした。時々は一発で成功することもあれば、Codex との実際のインタラクションを本当に構築する必要がある時もありました。魂のないバグ発見と攻撃コード開発機械のように扱うだけでは、これほどには完了することはありませんでした!

このセッションが記録に値したのは、ループ自体の形状にあったのです。我々は侵害された TV への制御パスを設定し、対応するソースツリーとコードを構築・配置する方法を与え、そこから作業は「検視→テスト→調整→再実行」という繰り返しのサイクルとなって進み、ブラウザ立足点がデバイス上で root へと変化するまで続きました。

この実験はより大きな取り組みの一部です。ブラウザシェルは Codex が魔法のように獲得したわけではありません。我々はすでにデバイスを侵害してその初期立足点を確保していました。ここでの目標はより限定されていたのです:現実的な攻撃後(Post-Exploitation)の状況を与えられたとき、AI が root まで到達させることができるでしょうか。

次のステップは明白で(若干懸念される)ことに「AI にエンドツーエンドをやらせてみる」です。hopefully はそれが永遠に TV の内部に閉じ込められ、静かに特権を昇格させながら我々のSitcom を見てくれることを願っています。

Writeup と PoC: https://github.com/califio/publications/blob/main/MADBugs/samsung-tv/ —dp

この投稿に関する議論 さらに興味がありますか?

同じ日のほかのニュース

一覧に戻る →

2026/04/16 23:23

Claude オプス 4.7

## Japanese Translation: Claude Opus 4.7 は、すべての Claude プラットフォーム、API、Amazon Bedrock、Google Cloud Vertex AI、Microsoft Foundry において大幅な向上と一般利用を開始しました。先進的なソフトウェア工学における主要な飛躍として、長期的自律性と自己検証機能が強化された Opus 4.6 を引き継ぎます。モデルのビジョン能力も著しく向上し、最大約 375 万画素(従来の 3 倍以上)までの画像に対応します。料金は Opus 4.6 と同一の、入力トークン当たり 5 ドル、出力トークン当たり 25 ドルで維持され、より微細なトレードオフ制御を可能にする新たな"xhigh"レベルが導入されました。内部評価では、93 タスクからなるベンチマークにおけるコーディング精度が 13% 向上し、4 つの以前は解決不能だったタスクを完遂することを実現するなど大きな進歩が見られます。また、「General Finance」モジュールでは、Opus 4.6 の 0.767 に対し 0.813 という大幅な金融分析能力の進歩、CursorBench(明確回答率 70%)や Complex Multi-step Workflows(+14%)といったベンチマークでも著しい向上を記録。さらに Rakuten-SWE-Bench 上の本番タスク解決数は 3 倍に増加し、コード品質でも二位桁の改善が実現しました。これらの進展は、Devin などのような環境での長期的自律性を可能にし、Replit においては同等かそれ以下のコストで高性能な実行を達成します。新機能としては、「task budgets」ベータ版およびバグレビュー専用の `/ultrareview` スラッシュコマンドが含まれます。本リリースは「Project Glasswing」の一貫した慎重な安全アプローチと整合しており、自動的な防護機構により高リスクのサイバーセキュリティ用途をブロックすると同時に、正当な研究者に新しい Cyber Verification プログラムへの参加を呼びかけています。結論として、Opus 4.7 は金融分析や工学など重要分野における一貫性の新基準を設定し、次世代 AI ツールの採用準備が整った企業向けに、強化されたパフォーマンスと戦略的リソース管理を提供します。

2026/04/17 2:12

ほぼすべてのことに適用可能なコードックス。

## Japanese Translation: OpenAI は、Codex アプリに対する主要なアップデートを導入し、それを受動的アシスタントからユーザーのコンピュータを直接操作する能動的で自律的なエージェントへと変革します。macOS 上の高度なバックグラウンド機能(カーソル制御[見る、クリック、打つ]とマルチエージェント並列処理)を活用し、Codex はプルリクエストのレビュー、SSH を介したリモート環境の管理、PDF やスプレッドシートなどのリッチなファイルプレビューを開くことができます。アプリ内に統合されたブラウザを通じて、ユーザーは Web ページ上に直接コメントを付けることで正確な指示を提供できます。新しいシステムには、個人のコンテキストと好みを記憶するためのメモリレイヤーが追加され、90 以上のプラグインにより GitHub、GitLab、Atlassian、CircleCI、CodeRabbit などの外部ツールとの接続が可能になります。Codex は désormais、来週の日数や週間を跨いで作業をスケジューリングし、自律的に目覚めることで長期タスクをサポートします。また、Google Docs、Slack、Notion、コードベース内のオープンなコメントに基づき、能動的にアクションを提案します。さらに、このアップデートには gpt-image-1.5 が統合され、製品コンセプト、フロントエンドデザイン、マockアップ、ゲームなどの同じワークフロー内で画像の生成と反復を行うことができます。今日、ChatGPT にサインインしたデスクトップユーザー向けにロールアウトされており、これらの機能は間もなく Enterprise、Edu、EU、UK アカウントにも拡大されます。

2026/04/17 6:56

グイが、デュオテープ、古いカメラ、およびCNCマシンを組み合わせて、AIを駆使したハードウェアハッカー用の腕を作成しました。

## Japanese Translation: **改善されたサマリー:** 本テキストの主なメッセージは、電子機器に対する安全なピンプローブを可能化することを目的としたソースアベイラブルなハードウェアハッキング自動化スタックである「AutoProber」の導入です。標準的なツールが盲目的に進む可能性に対して、AutoProber は CNC モーション制御、光学顕微鏡、リアルタイムオシロスコープ監視を「安全第一」というアーキテクチャに統合します。本システムはプロジェクトを読み込み、ハードウェアと接続し、軸をキャリブレーションし、エージェントまたはダッシュボードを使用してターゲットを検出およびアノテーション済みマップをステッチします。特に重要なのは、安全が独立したチャンネル(オシロスコープ チャンネル 4)によって執行されており、電圧を連続的に監視することであり、あらゆる曖昧さ、アラート、またはトリガーが発生した場合に自動回復なく即座に停止し、作業者の介入を必須としている点です。 GRBL 互換 CNC ミル(例:SainSmart Genmitsu)、USB 顕微鏡、および Siglent オシロスコープを基盤とし、本スタックは現在、特定の安全制約付きで制限リリースカンドイドとして存在しています:コントロールダッシュボードが信頼できないネットワークに露出させてはならないこと、および商用ライセンス発行にはメールでの申請が必要であることが含まれます。本プロジェクトは、複雑なプローブ作業中の機器破損や人身傷害を防ぐために、ダッシュボード上でのプローブターゲット承認などの作業者による専用の監督を強調しており、ハードウェアハッキングにおける標準的な自動化ワークフローの前提を根本的に変化させます。