
2025.03.07
メール対応担当の8割以上が「カスハラ被害」に クレームのハード化・長期化を防ぐ4つの対策
HDMI探検隊(仮)(全1記事)
リンクをコピー
記事をブックマーク
mzyy94氏:「HDMI探検隊」と題して、LT(ライトニングトーク)をお送りします。自己紹介はさっくりと。元セキュリティ系で今は映像系をやっているエンジニアです。
探検に行く前に「みなさん、HDMIをご存じですか?」というところから、基礎を押さえておきましょう。
知っている人がほとんどだと思いますが、HDMIは、映像と音声を送る端子とケーブル、そしてその通信規格のことです。イーサネット通信や、制御系としての機器コントロールや、ディスプレイコントロールなどもできます。今回はこのHDMI制御系の探検をしていきたいと思います。
HDMI制御系には2つのプロトコルが存在しています。1つがConsumer Electronics Control(CEC)というプロトコルで、もう1つがディスプレイをコントロールするDisplay Data Channel(DDC)というプロトコルです。
CECは、主にリモコン操作や、テレビ・ディスプレイの入力切替や、HDMIがつながっている機器のスタンバイ状態やそれが復帰したときの通知などを行う単線のバス規格なのですが、DDCはもうちょっと複雑で、ディスプレイとのやりとりを中心とした、I-squared-C(I2C)を使った機器間のプロトコルです。
このDDCをもう少し深堀りすると、仕様にはこれら4つが策定されています。
1つ目、DDC/CI(DDC Command Interface)は、ディスプレイのボリュームを上げたり、ディスプレイの輝度を変えたりなどの操作をI-squared-C(I2C)を通して行う規格です。
2つ目です。コンテンツ保護のため映像自体を本当は鍵で暗号化するのですが、その鍵をやりとりするためにDDCの中ではHDCPというプロトコルが使われています。
3つ目です。EDIDは、ディスプレイが表示できる解像度やrefresh rateなどをHDMIの機器に対して送るためのプロトコルです。
4つ目に挙げているのが、SCDCです。HDMI 2.0から追加された、DRMやスクランブルなどいろいろな情報を追加でやりとりするためのプロトコルです。
この4つがDDCのプロトコルに策定されています。
これら制御系がハードウェアに対してどのようにつながっているのかは「Wikipedia」でググると出てくるのですが、HDMIの結線は一般的なType Aの端子で19本つながっています。
この図のようにつながっていて、これら4つが主に映像と音声を伝送する役割を担っていて、残りが制御系を担っています。
ここまでが制御系と映像の基礎知識でしたが、ここからは制御系の探検をしていきたいと思います。
HDMI制御系をいじっていくのですが、一般の家庭にもあるこういった機器を使って、制御系はいじることができるので、これを使いたいと思います。
Raspberry Piの回路図には、ハードウェア的にもHDMIのこの制御線がきちんとつながっていることが記されていて、ライブラリがAPIとして提供されているので、VideoCoreにつながっているHDMIの制御線をこのVideoCoreを経由して操ることができます。これらを使って探検を進めていきます。
CECを探検していく方法として、愚直にVideoCoreのAPIを叩く方法もあるのですが、もう1つの方法の、VideoCoreのAPIを使ったラッパーみたいな存在のcec-clientというコマンドを使って、CECフレームを送ってみます。
CECフレームは、けっこう単純な形式になっていて、上位ビットから「送信元バスID」「宛先バスID」「OPコード」に「引数」というかたちで流すことで、送りつけることができます。
こういったことを踏まえていろいろとやってみると、CECのフレームは送り放題なんですね。通信元の偽装はたまに弾かれるんですが、認証機構もなくけっこう自由にできます。なので、機器のリモコン操作なども、勝手にほかの機器に対して送りつけることができます。
バス自体が単線でだいぶ低速なので、送り過ぎると、けっこうな頻度でほかのCECの通信が妨害できることがわかりました。ほかにも、引数を不正なものにしてみたり、細工をしたものが実際にどうなるかをちょっと調査したところ、あまりおもしろい挙動にはつながらないことがわかりました。
次は、DDCを探検してみます。これも愚直にVideoCoreのAPIを叩く方法があるのですが、Raspberry Piはデバイスツリーのオーバーレイを当ててI2C自体を露出させられるので、これを使ってI2Cのバスを出して、実際に触ってみることで探検を進めていきます。
オーバーレイを当てると、Raspberry Pi 3までは2番のバスに、Raspberry Pi 4からは12番のバスにDDCのI2Cバスが出てくるのですが、これでフレームアドレスをチェックすると「0x37、0x3a、0x50、0x54」といったアドレスのバスが露出していることがわかります。「0x37」がDDC/CI、「3a」がHDCP、「50」がEDID、「54」がSCDCです。
これがわかったので、i2ctransferのコマンドなどを使って、いろいろと仕様書を片手にやってみると、HDCPのやりとりはけっこうな確率でテレビやディスプレイ側が処理待ちをする挙動になっているので、途中で止めると不安定になりました。あとは、HDCPの失効リストというSRMファイルが提供されているのですが、それを書き換えることでデバイスを失効させることもできました。ほかにもDDC/CIを使って、ディスプレイ設定を好き勝手にいじることができました。
簡単にいじり回せるということは、悪用も簡単にできるということですよね。「BadHDMI」と勝手に命名しましたが、「BadUSB」のHDMI版みたいなものがあってもおかしくないなと思います。
善良なHDMIデバイスのフリをして、BadUSBみたいにあるとき急に悪さをするHDMI機器が現れたとしたら相当危険じゃないか、ChromecastやFire TVなどの安全なデバイスに慣れきっている世間には衝撃が走るんじゃないかなと危惧をもっています。
認証がないので、CECやDDCが端子につながってさえいれば、どんな機器からでも送れるという点が、大きな問題点かなと考えています。
攻撃例としては、CECでリモコン信号を送りつけて、ほかのHDMI機器を勝手に操作したり、単線のバスなCECは機器によってはすべての通信が見られるので、パスワード入力を盗んだり、DDC/CIで輝度を高頻度で変えたり、ボリュームを大小さまざまな値にセットしてハードウェアに負荷をかけたり、挙動を不安定にさせたり、HDCPやSCDCの手続きを無視することで、ファームウェア側で待ちに入るのを利用して、ディスプレイ自体をハングアップさせたりなどの悪用が考えられます。
単純なPoC(Proof of Concept)をTwitterに投稿したので、興味のある方はこのハッシュタグ(#BadHDMI)で検索してもらえればと思います。
ということで、発表「HDMI探検隊」は、HDMI制御系を探検していたらBadHDMIにつながるんじゃないかなというところに着地しました。以上、発表を終わります。
関連タグ:
2025.03.25
減点を恐れてモチベ低下、果ては離職も… あらゆる“会社の害虫”を大繁殖させる「ラスボス」の正体
2025.03.24
最悪の場合、組織を死に至らせる“会社の害虫”とは 誤った意思決定や品質不祥事を招く要因
2023.02.13
小6で「ヤマギシ会」に入り、23歳まで子どもだけで集団生活 「お金が存在しない」コミューン育ちの青年が社会に出て知ったこと
2025.03.25
ムダな仕事がなくならない“マッチョな職場”を変えるには 近年の過度な「KPI主義」が組織に与えた影響
2025.03.27
交渉で「落としどころを探る」という考えは捨てるべき プロが教える、チャンスを逃さない条件交渉のコツ
2025.03.19
組織をダメにする“害虫”の正体は間違った思い込み AIやDXなど手段のみにこだわるダメ上司の見極め方
2025.03.24
気づけばモラル崩壊……人材育成に無頓着な企業の末路 業績アップや採用にもつながる“人への投資”の重要性
2025.03.21
マネージャーの「自分でやったほうが早い」という行動で失うもの 効率・スピード重視の職場に足りていない考え方
2025.03.21
査定時期に上司から1年前の失敗を指摘される理不尽 変えられない過去を議論する「成果主義」の弊害
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.03.25
減点を恐れてモチベ低下、果ては離職も… あらゆる“会社の害虫”を大繁殖させる「ラスボス」の正体
2025.03.24
最悪の場合、組織を死に至らせる“会社の害虫”とは 誤った意思決定や品質不祥事を招く要因
2023.02.13
小6で「ヤマギシ会」に入り、23歳まで子どもだけで集団生活 「お金が存在しない」コミューン育ちの青年が社会に出て知ったこと
2025.03.25
ムダな仕事がなくならない“マッチョな職場”を変えるには 近年の過度な「KPI主義」が組織に与えた影響
2025.03.27
交渉で「落としどころを探る」という考えは捨てるべき プロが教える、チャンスを逃さない条件交渉のコツ
2025.03.19
組織をダメにする“害虫”の正体は間違った思い込み AIやDXなど手段のみにこだわるダメ上司の見極め方
2025.03.24
気づけばモラル崩壊……人材育成に無頓着な企業の末路 業績アップや採用にもつながる“人への投資”の重要性
2025.03.21
マネージャーの「自分でやったほうが早い」という行動で失うもの 効率・スピード重視の職場に足りていない考え方
2025.03.21
査定時期に上司から1年前の失敗を指摘される理不尽 変えられない過去を議論する「成果主義」の弊害
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由