SlideShare a Scribd company logo
ほんとにあった怖い話
-デバイスセキュリティ診断 AWS IoT編-
2018.09.14
SecurityIoTLT#1 @ DEJIMA
Tatsuya Katsuhara
本日のトピック
• みなさんも出会うかもしれない「IoTにありがちな」とても
シンプルだけれど怖い脆弱性の話をします。
• エッジデバイスも含めて一番弱いところが、システム全体の
攻撃起点になります。
• AWS IoTを例に、デバイスが侵害される前提でのポリシー
設定ベスプラ(だと思う)を紹介します。
自己紹介
勝原 達也 @kthrtty
某SIer→某セキュリティ企業
デジタル・アイデンティティ(2007~2016)
認証、OIDC、OAuth、SSO、IAM
Web/プラットフォーム脆弱性診断(2016~2017)
IoT /ハードウェア/重要インフラセキュリティ(2017~)
事業推進、営業、マネジメント、合間にペンテスター
とある「よくできた」IoTシステム
IoT Gateway
ホームセキュリティ
エアコン
ライト
スマートフォン
Zigbee
MQTT
over TLS
AWS IoT
課金
デバイス侵害を起点とするアプローチ
プロセッサ 記憶装置/ROM
(EEPROM/FLASH)
デバッグ端子/
シリアル端子
・・・
単体の機器・モジュールに対してペネトレする 結合環境でペネトレする
システム
ファーム抽出・解析
セキュリティ設定の不備
秘匿情報の漏えい
データ改竄
デバッグロック解除
ログからの情報漏えい
通信モジュール
上位システムへの干渉
通信先の
差し替え
接続時の仕様ギャップによる問題
単体の問題を組み合わせ生じる攻撃
情報をあつめる
攻撃シナリオを考える
よくある仮説
「記憶媒体に証明書と秘密鍵が保存されていそう」
大容量記憶媒体の代表格「eMMC」
https://www.blackhat.com/docs/us-17/wednesday/us-17-Etemadieh-Hacking-Hardware-With-A-$10-SD-Card-Reader.pdf
NANDコントローラ
のおかげで、(低速
で良いなら)少ない
信号線で容易に読み
書き可能
楽勝じゃん?
実際には解析はそんなに簡単ではない
普通のファイルシステム
抽出結果のバリエーション
eMMCは基本的にBGAパッケージであるため、ピンに直接アクセスできない。
抽出したデータに平文で鍵が入っているとは限らない。
https://www.blackhat.com/docs/us-17/wednesday/us-17-Etemadieh-Hacking-Hardware-With-A-$10-SD-Card-Reader.pdf
様々な
アプローチ
組合せ
マイコンプログラム
保護されたキーストア
暗号化パーティション
暗号化ボリューム
etc…
非破壊検査へのあこがれ
https://www.flickr.com/photos/micahdowty/3732858713
なんやかんや苦労して
クライアント証明書と秘密鍵を抽出できた
注:鍵はイメージです
AWS IoTへ接続
• 対応プロトコル
• MQTT、MQTT(over WebSocket)、HTTP
• 特徴
• デバイスシャドウ
• カスタムオーソライザ(Congnitoで認証&トークン発行/バックエンド検証)
• AWS IoTポリシー(トピックレベルでデバイス毎にアクセス可否を制御)
• MQTTのセマンティクスへバインドされているRESTful API
30秒MQTT講座
• 元々IBMで開発され、OASIS Standardで標準化。
• 軽量プロトコルとしてIoT時代に注目されるようになった。
• Pub-Subメッセージ配信モデル。
Broker
Subscriber
Publisher
Publish
(事前に)Subscribe
Topic
Subscriber
(事前に)Subscribe
登場人物 概要
Broker
メッセージの受信・配信を行うハブ的サービ
ス
Topic メッセージの話題、受信/配信用のハコ
Publisher
あるトピックに対してメッセージをPublishす
るエンティティ
Subscriber
あるトピックに対してPublishされたメッセー
ジを購読するエンティティ
情報窃取
Device “ZZZ”を所有する悪意あるユーザが、”ZZZ”から抽出した証明書を
使って、正当なユーザが所有するDevice “AAA”に関するトピックを
Subscribeし、情報を窃取する。
ライト
MQTT AWS IoT
悪意のあるユーザ
②Subscribe中のトピックへ通知
Topic: device/AAA/light
③IoT Gatewayが
ライトをONにする制御実施
証明書
ZZZ
⓪Subscribe
Topic: #(すべて)
スマート
フォン
①API経由でAAAの
ライトをON
②Subscribe中のトピックへ通知
Topic: device/AAA/light
Device “AAA”
Device “ZZZ”
ライト
AWS IoT
悪意のあるユーザ
②Subscribe中のトピックへ通知
Topic: device/AAA/light
③IoT Gatewayが
ライトをONにする制御実施 スマート
フォン
MQTT
Device “AAA”
Device “ZZZ”
不正操作
Device “ZZZ”を所有する悪意あるユーザが、”ZZZ”から抽出した証明書を
使って、正当なユーザが所有するDevice “AAA”に関するトピックに
Publishし、不正な操作を行う。
証明書
ZZZ
①Publish
Topic: device/AAA/light
こんなことで気合いれて作ったサービスが
台無しになろうものなら超怖い
デバイス毎にクライアント証明書を分けたうえで、
証明書ごとに、アクセスできるトピック階層を制限
できれば、あるデバイスの証明書・秘密鍵が漏洩し
てしまったとしても他のユーザには影響が及ばない
AWS IoT Policy
• ${iot:ClientId}のように変数を用いてポリシーを定義できる。
• ポリシーは、クライアント証明書や、デバイスのグループ単位
で割り当てることができる。
AWS IoT Policy
• ${iot:ClientId}のように変数を用いてポリシーを定義できる。
• ポリシーは、クライアント証明書や、デバイスのグループ単位
で割り当てることができる。
テストだから、、、デバッグのために、、、
中途半端な設定のまま本番リリースしていませんか?
でも、実際やろうとすると
AWSのドキュメントが正直分かりづらい
最も重要(だと思う)変数
iot:Connection.Thing.IsAttached
ポリシーが評価されているモノに、証明書または
Amazon Cognito IDがアタッチされている場合
は、trueに解決されます。
https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/thing-policy-variables.html
iot:Connection.Thing.IsAttached
Device “AAA”
MQTT over TLS
AWS IoT
MQTT接続パラメータ(AWS IoTへの伝達)
クライアントID=”AAA”
クライアント証明書=“111”
デバイス内部の設定値
モノ識別子=”AAA”
クライアント証明書=“111”
AWS IoTの「モノ」の設定状態
モノ識別子=”AAA”
クライアント証明書=“111”=ならば
true ※Cognitoのときの話は省略
iot:Connection.Thing.IsAttached
Device “AAA”
MQTT over TLS
AWS IoT
MQTT接続パラメータ(AWS IoTへの伝達)
クライアントID=”AAA”
クライアント証明書=“111”
デバイス内部の設定値
モノ識別子=”AAA”
クライアント証明書=“111”
AWS IoTの「モノ」の設定状態
モノ識別子=”AAA”
クライアント証明書=“111”
証明書とモノ識別子を厳密に結びつける
=ならば
true ※Cognitoのときの話は省略
開発者が情報を正しく得られる状態?
コミュニティで
ちょろっと言及
SlideShareで
唐突に紹介
条件を取り除くと、同じ
証明書で複数デバイスが
Pub-Subできたよ。
(やばいセキュリティ
ホールだけどね。)
レジストリ変数を用いて
細粒度アクセスするとき
のIoTポリシーはこちら。
https://www.slideshare.net/AmazonWebServices/3-easy-steps-
to-building-largescale-iot-architectures
https://forums.aws.amazon.com/thread.jspa?threadID=247362
Google検索
“iot:Connection.Thing.IsAttached”
モノ識別子をトピック階層に含めアクセス制限
${iot:ClientId}※
${iot:Connection.Thing.ThingName}※
※MQTT接続時は同じ値に解決
${iot:ClientId}※
${iot:Connection.Thing.ThingName}※
モノ識別子をトピック階層に含めアクセス制限
単一ポリシーで複数のモノに対応できる
※MQTT接続時は同じ値に解決
情報窃取が防止できる
ライト
MQTT AWS IoT Core
悪意のあるユーザ
⓪Subscribe
Topic: #(すべて)
スマート
フォン
Subscribeするトピック文字列”#”がポリシーに違反しており強制切断。
Subscribeできるのは
ポリシーで許可された
Topic: device/ZZZ/light
など、悪意のあるユーザの
Device “ZZZ”に限定される
Device “AAA”
Device “ZZZ”
証明書
ZZZ
不正操作が防止できる
ライト
AWS IoT Core
悪意のあるユーザ
スマート
フォン
MQTT
Publishするトピック文字列”AAA”がポリシーに違反したので強制切断。
Device “AAA”
Device “ZZZ”
証明書
ZZZ
①Publish
Topic: device/AAA/light
Publishできるのは
ポリシーで許可された
Topic: device/ZZZ/light
など、悪意のあるユーザの
Device “ZZZ”に限定される
補足
• トピック階層にモノ識別子を含まない設計の場合は要注意。
• Policyでやれることは少ない(”#”とか”+”とかワイルドカードを除外する
ぐらい)
• アプリレベル制御をすることになる
• 証明書CNにトピック文字列の一部(モノ識別子)を含める手法もアリ。
• CSR作るときにCNにモノ識別子を予め指定しておく。
• AWS IoT Policyにリテラルとしてモノ識別子を含める手法は微妙。
• 理解しやすいが、ポリシーを「モノ」の数だけ作成することになる。
まとめ
• 全てのデバイスがセキュアであるとは限りません。
• サーバ側はデバイスがセキュアであることに依存しすぎず、
デバイス侵害時も影響を最小化する設計を意識しましょう。
• Pub-Subモデルはユーザやデバイスを「跨いだ」アクセスが
起こりがち。ちゃんと設定してサービスを守りましょう。
お終い

More Related Content

PDF
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
PDF
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
PDF
Keycloak拡張入門
PPTX
Argo CD Deep Dive
PDF
Serf / Consul 入門 ~仕事を楽しくしよう~
PDF
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
PDF
Ingress on Azure Kubernetes Service
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Keycloak拡張入門
Argo CD Deep Dive
Serf / Consul 入門 ~仕事を楽しくしよう~
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
Ingress on Azure Kubernetes Service

What's hot (20)

PDF
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
PPTX
[社内勉強会]ELBとALBと数万スパイク負荷テスト
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
PPTX
Keycloak入門
PPTX
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
PDF
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
PDF
AWSのログ管理ベストプラクティス
PDF
DockerとPodmanの比較
PDF
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
[Cloud OnAir] Google Cloud における RDBMS の運用パターン 2020年11月19日 放送
PDF
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
PPTX
AWSメンテナンス ElastiCache編
PDF
Docker道場オンライン#1 Docker基礎概念と用語の理解
PPTX
コンテナネットワーキング(CNI)最前線
PPTX
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
PPTX
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
PDF
これからのネイティブアプリにおけるOpenID Connectの活用
PDF
Kubernetes環境で実現するWebアプリケーションセキュリティ
PDF
分散トレーシング技術について(Open tracingやjaeger)
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
[社内勉強会]ELBとALBと数万スパイク負荷テスト
SPAセキュリティ入門~PHP Conference Japan 2021
Keycloak入門
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
AWSのログ管理ベストプラクティス
DockerとPodmanの比較
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
[Cloud OnAir] Google Cloud における RDBMS の運用パターン 2020年11月19日 放送
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
AWSメンテナンス ElastiCache編
Docker道場オンライン#1 Docker基礎概念と用語の理解
コンテナネットワーキング(CNI)最前線
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
これからのネイティブアプリにおけるOpenID Connectの活用
Kubernetes環境で実現するWebアプリケーションセキュリティ
分散トレーシング技術について(Open tracingやjaeger)
Ad

Similar to 20180914 security iotlt#1_ほんとうにあった怖い話_aws_iot編 (19)

PDF
AWS IoT Device Defender による IoT デバイスのセキュリティ管理
PDF
Io t security-suzki-20170224
PDF
IoTデバイスセキュリティ
PDF
デバイス内データの安全な保管を考える
PDF
IoTセキュリティ・インシデント事例・警鐘の検討
PDF
2016年9月6日 IoTとセキュリティ『IoT開発におけるセキュリティ設計の手引き』
PDF
IoT Security
PDF
組込み(IoT)機器開発者目線の情報セキュリティについて
PDF
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
PDF
Mickey pac sec2016_final_ja
PPTX
エッジコンピューティングで実現できる活用シナリオ3選
PDF
2019 1214 io_t_sec_jp_06_kawano_slideshare
PDF
MRAAでIntel Edisonを遊ぼう
PPTX
SORACOM Conference "Discovery" 2018 | B2. IoTシステムにおけるデバイス管理とセキュリティ
PDF
JAWS-UG IoT 専門支部 | 現場に置かれた IoT デバイスのセキュリティをどうするの? SORACOM で実現する IoT のエンドツーエンド...
PDF
IoTセキュリティ概観 (供養)
PDF
「NISTIR 8320 ハードウェア対応セキュリティ: クラウド・エッジコンピューティングのユースケース向け プラットフォームセキュリティの階層型アプ...
PDF
20200219-iot@loft#8_security_of_smarthome
PDF
Io t ioe_network security
AWS IoT Device Defender による IoT デバイスのセキュリティ管理
Io t security-suzki-20170224
IoTデバイスセキュリティ
デバイス内データの安全な保管を考える
IoTセキュリティ・インシデント事例・警鐘の検討
2016年9月6日 IoTとセキュリティ『IoT開発におけるセキュリティ設計の手引き』
IoT Security
組込み(IoT)機器開発者目線の情報セキュリティについて
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
Mickey pac sec2016_final_ja
エッジコンピューティングで実現できる活用シナリオ3選
2019 1214 io_t_sec_jp_06_kawano_slideshare
MRAAでIntel Edisonを遊ぼう
SORACOM Conference "Discovery" 2018 | B2. IoTシステムにおけるデバイス管理とセキュリティ
JAWS-UG IoT 専門支部 | 現場に置かれた IoT デバイスのセキュリティをどうするの? SORACOM で実現する IoT のエンドツーエンド...
IoTセキュリティ概観 (供養)
「NISTIR 8320 ハードウェア対応セキュリティ: クラウド・エッジコンピューティングのユースケース向け プラットフォームセキュリティの階層型アプ...
20200219-iot@loft#8_security_of_smarthome
Io t ioe_network security
Ad

More from Tatsuya (達也) Katsuhara (勝原) (9)

PPTX
とあるセキュリティ会社のIoTセキュリティチームの日常(ErrataはDescription参照)
PPTX
InternetWeek2016 企業を取り巻くDigital Identityの今とこれから - Identity Is The New Perimet...
PPTX
20150723 最近の興味動向 fido編
PPTX
20140307 tech nightvol11_lt_v1.0_public
PDF
OpenID Connect Summit Transfer of Information
PDF
Introduction of Bridging IMS and Internet Identity
PDF
クラウド時代の「ID管理」と「認証セキュリティ」
PDF
電子政府のアクセシビリティ~国民ID制度の重要視点として~
PDF
Open id tech_night_vol6_kthrtty_slideshare_ver
とあるセキュリティ会社のIoTセキュリティチームの日常(ErrataはDescription参照)
InternetWeek2016 企業を取り巻くDigital Identityの今とこれから - Identity Is The New Perimet...
20150723 最近の興味動向 fido編
20140307 tech nightvol11_lt_v1.0_public
OpenID Connect Summit Transfer of Information
Introduction of Bridging IMS and Internet Identity
クラウド時代の「ID管理」と「認証セキュリティ」
電子政府のアクセシビリティ~国民ID制度の重要視点として~
Open id tech_night_vol6_kthrtty_slideshare_ver

20180914 security iotlt#1_ほんとうにあった怖い話_aws_iot編