【更新 2026-08-02】本記事を見直し、修正しました。主な修正点:論文本文(PDF)を確認し、「限界と留意点」の記述を実際の評価内容に差し替えました(検証シナリオの規模と検出件数、258ポリシーを使ったスケーラビリティ評価、ツールがオープンソースで公開されていること)。あわせて他のMQTTブローカーへの適用可能性について、論文の考察節の記述を反映しました。
AWS IoT Coreの権限設定は、デバイスを1台ずつ確認しても安全とは限りません。2026年7月30日にarXivで公開された査読前の研究は、「個々のデバイスの権限は正しく見えても、MQTTトピックを介してつながることで、信頼レベルの異なる機器の間に意図しない情報の流れが生まれる」ことを形式手法で捉え、それを自動検証するツール「IoT:Poker」を提案しています。IoT機器をクラウド連携で運用している組織にとって、権限レビューのやり方そのものを見直す材料になります。
この記事でわかること
- 「権限を個別に検証するだけでは不十分」という研究の主張の中身
- AWS IoT Coreで「広すぎる権限」が具体的にどう現れるか(AWS公式の非準拠例)
- 研究成果を自社の権限レビューにどう活かすか、そして何が限界か
どんな研究なのか
論文は「Checking Information Flow in Cloud-based IoT Access Control Policies (Extended Version)」(Lorenzo Ceragioli、Letterio Galletta、Edoardo Lunati)。arXivに2026年7月30日付で公開されたプレプリント(arXiv:2607.28088)で、分類はcs.CR(暗号・セキュリティ)、cs.LO(計算機科学における論理)、cs.SE(ソフトウェア工学)です。
要旨によれば、研究チームはAWS IoT Coreの構成要素を形式的にモデル化し、アクセス制御ポリシーが許してしまうデバイス間の通信を「情報フローグラフ」として定義しました。そのうえでSMTソルバ(論理式の充足可能性を判定する自動証明器)を使ってグラフの有限表現を構築し、デバイス間の情報フローを検証できるようにしています。実装したツールがIoT:Pokerで、現実的なシナリオと実在するいくつかのポリシーで評価した、とされています。
なぜ「1台ずつのチェック」では足りないのか
答えは、権限の危険性が「組み合わせ」で生じるからです。ポリシーを単体で見ると、どのデバイスも「自分に必要な範囲しか許可されていない」ように見えることがあります。しかし実際の通信はメッセージブローカー(トピック)を介して起こります。
たとえば次のような構成を考えてみてください。
- 工場ラインのセンサーAが、トピック
factory/telemetryにパブリッシュできる - 来客向けデジタルサイネージBが、同じ
factory/telemetryをサブスクライブできる
AのポリシーもBのポリシーも、それぞれ単体では「必要な1トピックだけ」に絞られていて、監査ツールの指摘にもかかりにくい書き方です。しかし2つを合わせると、工場ラインの稼働データが来客の目に触れる区画へ流れる経路が成立します。論文が「デバイスが異なる信頼レベルを持つ、あるいは複数のサブシステムに区画化されている状況では、権限を個別に検証するだけでは不十分」と述べているのは、まさにこの構造です。
これが厄介なのは、経路が2ホップ、3ホップと連鎖しうる点です。BがさらにトピックCへ転送する権限を持てば、A→B→Cという間接経路ができます。人手でポリシーを1枚ずつ読んでいて気づける規模ではありません。だからこそ「グラフとして表現し、機械的に到達可能性を解く」というアプローチに意味があります。
AWS IoT Coreで「広すぎる権限」はどう現れるか
研究の話の前提として、AWS自身が「これは危険」と明示しているパターンを押さえておくと理解が早くなります。AWS IoT Device Defenderの監査項目「AWS IoT policies overly permissive」(API名 IOT_POLICY_OVERLY_PERMISSIVE_CHECK、重要度はCritical)は、以下のようなポリシーを非準拠として検出します。
| 操作 | 非準拠になる書き方 | 何がまずいか |
|---|---|---|
| Connect | client/* |
どのデバイスでも接続できてしまう |
| Connect | client/${iot:ClientId}(条件なし) |
条件キー iot:Connection.Thing.IsAttached を付けないと実質ワイルドカードと同じ |
| Publish | topic/$aws/things/*/shadow/update |
他の全デバイスのシャドウを書き換えられる |
| Subscribe | topicfilter/$aws/things/+/shadow/update |
+ により全デバイスのシャドウ更新を覗ける |
| シャドウ/ジョブAPI | thing/* |
任意のモノに対して操作できる |
推奨される書き方は、リソース指定にポリシー変数 ${iot:Connection.Thing.ThingName} を埋め込み、自分自身のトピック空間だけに閉じる形です。AWSは「1デバイス1アイデンティティ」「既知のクライアントIDでしか接続できないようにする」「パブリッシュ/サブスクライブは特定され固定されたトピック集合に限る」ことを最小権限の実践として挙げています。
ここが今回の研究の位置づけを分ける点です。Device Defenderの監査は「1枚のポリシーが広すぎないか」を見る仕組みであり、上のセンサーAとサイネージBの例のように、個々は狭くても組み合わせで問題が起きるケースは想定の外にあります。IoT:Pokerが埋めようとしているのはその隙間です。
実務へのインパクト:どこに効くのか
この研究がすぐに効いてくるのは、次のような環境を持つ組織です。
- OT/製造・設備系とオフィス系が同じIoT基盤に相乗りしている:信頼レベルの異なる機器が1つのアカウント・1つのブローカーを共有していると、区画化はポリシーの書き方だけに依存します。
- ベンダー納入のIoT機器を混在させている:複合機、清掃ロボット、入退室装置、環境センサーなど、ポリシーを書いたのが自社ではないケース。納入時のポリシーが「動けばよい」設計になっていることは珍しくありません。
- デバイス台数が増えてポリシーの全体像を誰も把握していない:まさに機械的検証が向く領域です。
逆に、IoT基盤を持たない組織にとっては直接の出番はありません。ただし「単体では正しい権限が、つながることで危険になる」という発想自体は、クラウドのIAM、SaaS間のアプリ連携、AIエージェントのツール権限など、権限設計全般に共通する視点です。
限界と留意点
実務に持ち込む前に、以下は正直に押さえておく必要があります。
- 査読前の研究です。arXivのプレプリントであり、結果や主張は今後変わりうるものとして読んでください。タイトルに「Extended Version」とあることから会議発表版の拡張版と見られますが、arXivの掲載ページ上で査読・採択の状況は確認できませんでした。
- 形式モデルとツールの対象はAWS IoT Coreに限定されています。Azure IoT HubやGoogle Cloud、独自のMQTTブローカーで検証した結果は示されていません。ただし論文の考察節では、Azure IoT HubやHiveMQのように認可ポリシーでパブリッシュ/サブスクライブを制御するMQTTブローカーであれば、「ごくわずかな修正で手法を適用できると確信している」と著者らが述べています(実際に適用した結果は示されていません)。
- 効果の検証は限定的な規模です。論文本文によれば、効果の検証は著者ら自身が構成した建物管理システム(BAS)の想定シナリオ(17デバイス・20証明書・15ポリシー)で行われ、3件のクエリのうち機密性の検証1件で違反を検出しています(照明のポリシーが広すぎるため、乗っ取られた照明が別フロアの錠に由来する情報を受け取れる経路)。実運用中の構成で何件の問題が見つかるかを示したものではありません。一方、スケーラビリティの評価には実在するIoTポリシー258本(P-Verifierのベンチマーク)を用いており、証明書258枚の構成でもグラフの構築は64秒未満、1000件の到達可能性クエリの応答は平均0.1秒未満と報告されています。
- ツールは公開されていますが、運用実績は分かりません。IoT:PokerはPythonで実装されたオープンソース(MITライセンス)で、GitHub(
edoxthebest/IoTPoker)で公開されています。SMTソルバにはcvc5を使用(Z3版の比較結果も付録に掲載)。ただし研究成果としての公開実装であり、製品としての実績や保守体制は論文に記載がありません。 - 「情報が流れうる」ことと「実害がある」ことは別です。グラフ上の経路は設計上の意図に沿ったものかもしれません。検証ツールが出す指摘は、最終的に自社の設計意図と突き合わせる必要があります。
現場目線の所感
正直なところ、IoT機器のポリシーは情シスにとって最も目が届きにくい領域のひとつです。サーバやPCと違って、導入部門も保守ベンダーも別で、「センサーが増えました」という報告が上がってくるのは動き始めた後ということが少なくありません。証明書とポリシーが何枚あるかを即答できる担当者は、そう多くないはずです。
そのうえで、ポリシーを1枚ずつ読んで「このワイルドカードは危ないか」を判断する作業は、地味なわりに見落としが出ます。ましてや「AとBを合わせると経路ができる」という組み合わせの問題は、人間が総当たりで確かめるのは現実的ではありません。こういう領域こそ、形式手法や自動検証が本来効くところだと感じます。研究がすぐ現場のツールになるわけではありませんが、少なくとも「うちの権限レビューは1枚ずつしか見ていない」と自覚するだけでも価値があります。
まずできるのは、Device Defenderの監査を有効にして*を含むポリシーを洗い出すこと、そして「どの機器がどのトピックに出入りできるか」の一覧を作ってみることでしょう。一覧にした瞬間に「なぜこれが同じトピックにいるのか」が見えてくることは、経験上よくあります。
情シスがまず参照すべき公的指針
IoTの権限設計・運用については、自前でチェックリストを作り込む前に公的な指針を土台にするのが近道です。
- IPA「IoT開発におけるセキュリティ設計の手引き」:機器・システムの設計段階で想定すべき脅威と対策の考え方。ベンダーへの要求仕様を書く際の共通言語として使えます。
- IPA「IoTのセキュリティ」:IoT関連の資料が集約されたポータル。導入部門への説明資料の出発点に。
- IPA「中小企業の情報セキュリティ対策ガイドライン」:限られた人員でどこから手を付けるかの優先順位付けに。
- AWS「Security best practices in AWS IoT Core」:ポリシー変数やクライアントID制限など、実装レベルの具体策はこちらが一次情報です。
あわせて、機器を導入する現場部門への啓発も欠かせません。「ネットにつながる装置を入れるときは情シスに一声かける」という当たり前の運用が根付いているかどうかで、後の棚卸しの難易度がまるで変わります。
まとめ
- 査読前の研究ながら、「IoTの権限は個別に検証するだけでは不十分で、デバイス間の情報フローとして見る必要がある」という指摘は実務感覚と一致します。
- AWS IoT Coreでは、まずDevice Defenderの監査(
IOT_POLICY_OVERLY_PERMISSIVE_CHECK)でワイルドカードを含む広すぎるポリシーを洗い出し、${iot:Connection.Thing.ThingName}による自己限定へ寄せるのが基本です。 - そのうえで「どの機器がどのトピックに出入りできるか」を一覧化し、信頼レベルの違う機器が同じトピックを共有していないかを確認しましょう。組み合わせで生じるリスクは、一覧にしないと見えません。
関連記事
- 最小権限の原則とは?情シスが押さえる基本と実務
- ラテラルムーブメント(横展開)とは?侵入後の脅威を解説
- レジデンシャルプロキシとは IoT踏み台化と情シスの備え
- 業務用清掃ロボットDEEBOT PROに脆弱性10件
出典
- Lorenzo Ceragioli, Letterio Galletta, Edoardo Lunati「Checking Information Flow in Cloud-based IoT Access Control Policies (Extended Version)」arXiv:2607.28088(2026年7月30日、査読前)https://arxiv.org/abs/2607.28088
- AWS「Security best practices in AWS IoT Core」https://docs.aws.amazon.com/iot/latest/developerguide/security-best-practices.html
- AWS「AWS IoT policies overly permissive(AWS IoT Device Defender 監査チェック)」https://docs.aws.amazon.com/iot-device-defender/latest/devguide/audit-chk-iot-policy-permissive.html
- IPA「IoT開発におけるセキュリティ設計の手引き」https://www.ipa.go.jp/security/iot/iotguide.html

