IoTのセキュリティリスク Top 10 とそれらへの対応方法
このブログでもすでに何度か触れていますが、Webアプリケーションのセキュリティ向上を目的としたプロジェクトとして、OWASP(Open Web Application Security Project)というものがあります。OWASPはWebアプリケーションのセキュリティリスクに対し、全世界の個人や企業、その他の組織が適切な情報に基づく判断を行えるよう、セキュリティを取り巻く状況の可視化や、ベストプラクティスやフレームワークの紹介等を行っています。
OWASPはこの活動の一環として、最もクリティカルとされる10種類のセキュルティリスクを「OWASP Top 10 リスト」としてまとめています。このリストにはそれぞれのリスクについての説明の他、脆弱性の事例、攻撃の事例、回避手段に関するガイド、関連情報へのリンクが記載されています。これは優れたリストであり、セキュリティ関連ベンダーが「自社製品やサービスがどのようなタイプの攻撃を軽減できるのか」を示す際にも、引用されることが少なくありません。
OWASPではこれまでにもWebアプリケーションに関した「Top 10 Most Critical Web Application Security Risks」を公開していましたが、IoT(Internet of Things:モノのインターネット)に関しても同様の「OWASP Internet of Things (IoT) Top 10」(英語のみ)を作成し、公開しています。
IoTとは、身の回りにある様々なモノ、例えば冷蔵庫やトースターといった家電製品、寒暖計等のセンサー類、自動車等が、インターネットに接続されて互いにデータを送受信する世界を意味しています。このような家電製品や日用品によるインターネットアクセス実現に関心を持つベンダーを支援することが、「OWASP Internet of Things (IoT) Top 10」の目的です。このリストではIoT対応の機器やサービスのセキュリティリスクのうち、上位10項目を順に取り上げ、それぞれについての対応策を紹介しています。
ここでは2014年度の「OWASP Internet of Things Top 10」に含まれる項目を紹介すると共に、OWASPが示す対応策についてもまとめて掲載しておきます。
1 Insecure Web Interface(セキュリティが確保されていないWebインターフェイス)
Webインターフェイスのセキュリティを確保するには:
- 最初のアカウント設定時に、パスワードをデフォルトのものから変更するよう、必ずユーザに要求してください。できればユーザ名も変更できるのが理想的です。
- 十分に堅牢なパスワード再設定メカニズムを実装してください。またパスワード再設定メカニズムや新規ユーザページなどから、正規アカウントの情報が特定できないようにしてください。
- ウェブインターフェイスに、XSS(クロスサイトスクリプティング)やSQLインジェクション、CSRF(クロスサイトリクエストフォージェリ)への脆弱性が存在しないことを確認して下さい。
- 内部ネットワーク/外部ネットワークに関わらず、アカウント情報がネットワークトラフィックに露出しないようにしてください。
- 脆弱なパスワードは許可しないでください。またログインに3~5回失敗した場合には、そのアカウントをロックアウト(一時的に使用不可能に)してください。
2 Insufficient Authentication/Authorization(不十分な認証)
十分な強度を備えた認証を実現するには:
- 「1234」などの簡単なものではなく、推測されにくい強力なパスワードを要求してください。
- アカウント情報がプレーンテキストで伝送されていないことを確認してください。
- パスワードの複雑度設定や使用履歴の確認、有効期限設定等、パスワード制御に関する必要機能を実装してください。また新規ユーザの場合には、必ずパスワード変更を強制してください。
- 漏洩によって重大な問題を引き起こす機密性の高い情報にアクセスする場合には、ユーザの再認証を要求してください。
- インターフェイスがユーザのロール(役割)に応じて分離可能であることを確認してください。例えばアドミニストレータは全ての機能にアクセスできる一方で、一般ユーザはアクセス可能な機能を制限する、といった対応が必要です。
- ユーザが本来持っている権限を超えた権限を取得できる「特権昇格(privilege escalation)」が行えないことを確認してください。
- 必要であれば、よりきめ細かいアクセス制御を導入してください。
- アカウント情報が適切に保護されていることを確認してください。
- 必要に応じて二要素認証(ニ段階認証)を実装してください。
- パスワード再設定メカニズムが安全であることを確認してください。
- パスワード制御の設定に関しては複数の選択肢を用意してください。
3 Insecure Network Services(セキュリティが確保されていないネットワークサービス)
ネットワークサービスのセキュリティを確保するには:
- 使用機器が開いているポートを、ポートスキャナで確認してください。開いているポートについては、DoS攻撃やバッファオーバフロー、ファジング攻撃への脆弱性や、UDPサービス関連の脆弱性等をテストした上で、必要最小限のポートのみを開けてください。
- 提供サービスにバッファオーバフローやファジング攻撃、DoS攻撃などへの脆弱性が存在しないことを確認してください。
- ネットワークポートやサービスが、UPnP等によってインターネットから直接アクセスできる状態になっていないことを確認してください。
4 Lack of Transport Encryption(暗号化されていないトランスポート)
トランスポートに十分な暗号化を行うには:
- 各種デバイスやその上で動くモバイルアプリケーション、クラウド接続のトラフィックについて、情報がプレーンテキストで送られていないことを確認してください。ネットワーク上で情報をやり取りする場合には、SSLやTLSなどのプロトコルを使って暗号化してください。
- 使用しているSSLやTLSが最新であり、かつ正しく実装されていることを確認してください。
- SSLやTLSが使用できない場合には、他の業界標準の暗号化技術を活用し、伝送路におけるデータ保護を行ってください。
- 一般に推奨され認められている暗号化プロトコルのみが使用されていることを確認してください。
5 Privacy Concerns(プライバシーに関する懸念)
プライバシーに関する懸念を最小限に抑えるには:
- 各種デバイスやその上で動くモバイルアプリケーション、クラウドインターフェイスが、それらの機能にとって必要最小限の情報のみ収集していることを確認してください。
- 収集するデータは、機密保持の必要性が比較的低いもののみに制限してください。
- 適切に暗号化されていない個人情報を、ストレージ等に保存あるいはネットワークで伝送すると、読み取られる危険があります。収集した全てのデータは、適切な暗号化によって保護してください。
- 収集した情報は、個人を特定できない状態にしてください。
- 収集した個人データには、承認を受けた者のみがアクセスできるようにしてください。
- 収集したデータには、保持期限を設定してください。
- 製品機能やサービスの提供等に必要と想定される範囲を超えるデータを収集する場合には、エンドユーザにそれに関する「通知と選択肢」を提供する必要があります。
6 Insecure Cloud Interface(セキュリティが確保されていないクラウドインターフェイス)
クラウドインターフェイスのセキュリティを確保するには:
- 最初のアカウント設定時に、パスワードをデフォルトのものから変更するよう、必ずユーザに要求してください。できればユーザ名も変更できるのが理想的です。
- ログインに3~5回失敗した場合には、そのアカウントをロックアウト(一時的に使用不可能に)してください。
- パスワード再設定メカニズムや新規ユーザページなどから、正規アカウントの情報が特定できないようにしてください。
- クラウドインターフェイスに、XSS(クロスサイトスクリプティング)やSQLインジェクション、CSRF(クロスサイトリクエストフォージェリ)への脆弱性が存在しないことを確認して下さい。これは、全てのクラウドインターフェイス(APIインターフェイスとクラウドベースのWebインターフェイス)について検証する必要があります。
- アカウント情報がインターネットに露出していないことを確認して下さい。
- もし可能であれば、二要素認証(ニ段階認証)を実装してください。
7 Insecure Mobile Interface(セキュリティが確保されていないモバイルインターフェイス)
モバイルインターフェイスのセキュリティを確保するには:
- 最初のアカウント設定時に、パスワードをデフォルトのものから変更するよう、必ずユーザに要求してください。できればユーザ名も変更できるのが理想的です。
- パスワード再設定メカニズム等の機能を使用することで、ユーザアカウントが列挙表示されないことを確認してください。
- ログインに3~5回失敗した場合には、そのアカウントをロックアウト(一時的に使用不可能に)してください。
- パスワード再設定メカニズムや新規ユーザページなどから、正規アカウントの情報が特定できないようにしてください。
- アカウント情報がワイヤレスネットワーク上で盗聴できないことを確認してください。
- もし可能であれば、二要素認証(二段階認証)を実装してください。
8 Insufficient Security Configurability(不十分なセキュリティ設定)
不十分なセキュリティ設定を改善するには:
- 機器の管理インターフェイスを見直し、より強力なパスワードの使用を必須としてください。
- 管理ユーザと通常のユーザを分離する仕組みを導入してください。
- 保管と伝送の両方の状態においてデータを暗号化してください。
- セキュリティ関連のイベントをログとして残す機能を導入してください。
- セキュリティ関連のイベントが発生した際に、アラートや通知をエンドユーザに送信する仕組みを導入してください。
9 Insecure Software/Firmware(セキュリティが確保されていないソフトウェア/ファームウェア)
ソフトウェア/ファームウェアのセキュリティを確保するには:
- 最も重要なことは、機器自体がアップデート機能を実装しており、定期的にアップデート可能であることです。まず使用機器がこの条件を満たしていることを確認してください。
- アップデートファイル中の重要な情報が、バイナリエディタ等を使用することで可読状態にならないことを確認してください。
- アップデートファイルが、一般に認められたアルゴリズムを使用し、正しく暗号化されていることを確認してください。
- アップデートファイルが、暗号化された接続によって送信されていることを確認してください。
- アップデート用サーバに脆弱性がなく、適切に設定され、セキュアな状態であることを確認してください。
- アップデートファイルが、アップロード/適用される前に正しく署名され、その内容が検証されていることを確認してください。
10 Poor Physical Security(物理的セキュリティの脆弱さ)
物理的セキュリティを強化するには:
- 機器類が容易に分解できない状態になっていることを確認してください。
- データ保存用のメディアが容易に取り出せない状態になっていることを確認してください。
- 保管時のデータが暗号化されていることを確認してください。
- USBなどの外部ポートを使って不正に機器にアクセスできないことを確認してください。
- 運用に本当に必要な外部ポートのみが装備されていることを確認してください。
- 管理機能がローカルなアクセスのみに制限できることを確認してください。
ここでは各項目に関する対応策を掲載しましたが、OWASPのそれぞれのページでは、攻撃者が攻撃可能となる条件、攻撃手法や侵入経路、脆弱性がどのような状況で生じるのか、技術面とビジネス面へのインパクト(影響)についても解説されています。また攻撃シナリオのサンプルも掲載されています。ぜひ目を通されるようお薦めします。