目次


IoT サイバー攻撃の脅威に立ち向かう

IoT アプリケーションにとって最も重要なセキュリティーのベスト・プラクティス

Comments

モノのインターネット (IoT) がビジネス・オペレーションに大変革をもたらしています

モノのインターネット (IoT) の急速な普及を後押ししているのは、イノベーションとコスト節約というメリットです。メディアはスマート・ホーム・アプライアンスやウェアラブル・ガジェットにスポットライトを当てていますが、それとは別に IoT はあらゆる業種のビジネス・オペレーションに大変革をもたらしています。これは特に、ロジスティクス、倉庫保管、生産ライン、パイプライン輸送、交通管理の分野に言えることです。

モノのネットワーキングは、新しいレベルの貴重なデータと管理機能をもたらしており、オペレーションの効率を高めることで、ビジネスの実践方法を変えています。例えば Continental Tires 社では、タイヤ製造工場でゴムのカートを見つけるのに、以前は手書きのメモに頼っていました。この方法では従業員が広大な工場内でカートを見つけるのに手間取り、それが原因で生産の遅れが生じてコストがかかっていました。そこでこの会社では、Wi-Fi センサーを利用することで、ゴムのカートを会社のインベントリー管理システムに組み入れて、この問題を解決しました。Wi-Fi センサーを利用してカートをネットワークに接続することで、従業員はモバイル端末から工場内のすべてのカートを瞬時に見つけられるようになったのです。

別の例として、Kenya Pipeline 社では自社のパイプライン・インフラストラクチャーをアップグレードし、油圧レベル、温度、流速を検知するモジュールを導入しました。これらのネットワーク化されたモジュール (すなわち、接続された機器) によって、リアルタイムのメトリクスとアラートが運用管理に提供されるようになりました。さらに、原因が事故であるか盗難であるかに関わらず、油漏れを検出するとそれに反応し、自動的にパイプラインをシャットダウンできるようになりました。

現実世界のモノに接続してデータを収集し、管理するという新しい時代の幕開けとともに、新たなセキュリティー・リスクが生じています。そのリスクは、高度なサイバー攻撃から、がむしゃらにデータを盗んで大混乱を巻き起そうするハッカーに至るまで、多岐に渡ります。IoT デバイスのセキュリティーは、それらのデバイスを管理するソフトウェアとアプリケーションに大きく依存しており、セキュアな IoT アプリケーションを開発できるソフトウェア開発チームはサイバー・スペースの最前線で作業を行うことになります。この記事では、IoT のセキュリティー・リスクを軽減する堅牢な IoT アプリケーションを開発チームが生み出すのに役立つ、セキュア・コーディング手法とセキュリティー機能についてのベスト・プラクティスを概説します。

IoT サイバー攻撃の脅威は現実であり、大々的に報じられています

ネットワーク接続されているデバイスは、例外なく攻撃を受ける可能性があり、ネットワーク上で直接的に攻撃される場合もあれば、アプリケーションによって間接的に攻撃される場合もあります。IoT デバイスで収集され、それに併置されたアプリケーションで処理されるデータには、個人データが含まれている可能性があります。このような個人データは、データや ID の窃盗犯にとっても、さらには大混乱を引き起こすことでハッカー・コミュニティーの称賛を集めて自尊心を満足させて楽しんでいるように見えるハッカーたちにとっても、例外なく価値があるものです。IoT デバイスと IoT アプリケーションはまた、サイバー戦争、サイバー・スパイ、ハックティビズム、さらにはテロリズムに関わる人々が照準を合わせる十分な対象となるのです。IoT サイバー攻撃には、物理的なサービスやインフラストラクチャーを機能不能に陥らせる可能性があるだけでなく、命を奪う可能性ことさえあると認識されています。

2010年 6月に、非常に高度で独特な Stuxnet というコンピューター・ワームが世界のメディアの注目を集めました。 Stuxnet は、イランの核施設で使用されている特定のソフトウェア制御システムだけをターゲットとするように設計されたマルウェアであり、Microsoft Windows のゼロデイ脆弱性を突いて核施設のネットワーク全体に伝播し、シーメンス STEP7 ソフトウェアの有無をスキャンしました。そしてシーメンスのアプリケーションのセキュリティー侵害に成功し、回転式遠心分離機の速度を急速に上げ下げする命令を出したのです。速度の急速な変化によって引き起こされた振動により、遠心分離機はバラバラになりました。2009年 11月から 2010年 1月までの間に、推定 1000 台を超える遠心分離機が Stuxnet マルウェアによって破壊され、イランの核プログラムを大きく後退させることになりました。この現実世界でネットワーク接続されたマシンは、ネットワーク経由でそれらのマシンを制御するアプリケーションへのセキュリティー侵害によってダメージを受ける可能性があることを、この Stuxnet マルウェアが実証したのです。

2015年 2月に放映された TV 番組「60 Minutes」で、ハッカーが自動車にアプリケーション・バッファー・オーバーフロー攻撃を仕掛けてハッキングした後、自動車を遠隔制御してブレーキを効かなくすることが可能であることを実際に示すエピソードが紹介されました。2015年 5月には、コンピューター・セキュリティーのエキスパートが、エンターテイメント・アプリケーションを使って飛行中の飛行機をハッキングするという事件が起こっています。その後の FBI の調査では、彼が短時間、飛行機を制御していたことが報告されています。既知の IoT 事件で悪用されたセキュリティー上の弱点は、ほとんどの場合、アプリケーション層にありました。つまり、いかにセキュアな IoT アプリケーションを開発するかが、生死を分ける問題になり得るということです。

セキュアな IoT アプリケーションを開発する

IoT デバイスのアプリケーション層は、ハッカーにとって最大の攻撃面です。アプリケーション層には、IoT デバイスと接続するあらゆるアプリケーションが含まれています。それらのアプリケーションには、ローカル Web アプリケーションもあれば、クラウド・ベースのアプリケーションや、スマートフォンあるいはタブレットのアプリもあります。アプリケーション・セキュリティーは、あらゆる IoT アプリケーションのソフトウェア開発ライフサイクル (SDLC) に本来備わっていなければならないものです。特に設計ステージ、開発 (コードの作成) ステージ、テスト・ステージでは、極めて重要な部分となります。

IoT アプリケーションの計画ステージや設計ステージでは、その計画されたアプリケーションのセキュリティー要件と個人情報保護要件について正式かつ「徹底的な」評価を行う必要があります。

セキュアな IoT アプリケーションを設計する

IoT アプリケーションには、「Security by Design (設計段階からセキュリティーを確保する)」という手法が必要になります。この設計手法では、徹底的にセキュリティー機能を設計し、アプリケーションの開発フェーズとテスト・フェーズでセキュリティー・フィックスを適用しなければなりません。アプリケーションがリリースされるまで待ったとしたら、それは全体的に脆弱なセキュリティーを招く行為となるだけでなく、開発プロセスを長引かせ、コストが増大することにもなります。従って、アプリケーションの設計フェーズでは、IoT アプリケーションに考えられるあらゆるセキュリティー要件を検討し、計画することが不可欠となります。

さらに、個人データを収集、保管、処理する IoT アプリケーションは、データ保護法や個人情報保護法に完全に準拠するように行わなければなりません。これらの法律では、どの国の国民のデータを収集するかによって程度の差はありますが、厳しい要件を規定しています。

設計ステージでは、開発する IoT アプリケーションのセキュリティー要件をレビューするために、セキュリティー要件の分析レビューを行ってください。また、IoT アプリケーションに適用されるデータ保護法をレビューし、それらのデータ保護法に対して個人情報保護要件の分析レビューを行う必要もあります。

セキュリティー要件分析に関するポイント

  • ユーザー・アカウントの管理機能を計画すること。IoT アプリケーションによって適切なレベルでアカウントをカスタマイズできるようにすること。
  • セキュアなパスワード・リセット・メカニズムを設計すること。パスワードのリセット・プロセスは、ユーザーの便宜を優先してセキュリティーの厳格さを緩めがちですが、脆弱なパスワード・リセット・プロセスだと、システムに容易に侵入できるバックドアになってしまう恐れがあります。
  • 管理アカウント特権は必要に応じて持つことを基本とするよう制限するユーザー・アカウント構造を設計すること。管理上の操作と権限は、標準ユーザー・アカウントとは切り離すのが賢明です。このように構成すると、ユーザーによる誤った構成が原因で深刻なセキュリティー・ホールが生じるリスクを抑えられます。
  • アカウントのパスワードをアプリケーションでどのように保管するかを決定すること。平文のパスワードをデータベースやフラット・ファイルに保管することは禁物です。ベスト・プラクティスは、ソルト付きハッシュ・アルゴリズム (SHA-256 とソルトなど) を使用してパスワードを計算して一意のハッシュ値に変換することです。こうしておけば、パスワードを平文に戻すことができません。
  • 2 要素認証機能の追加を検討すること。信頼できないネットワークからアクセスされる機密データを処理するアプリケーションの場合は、なおのことです。
  • IoT アプリケーションにアカウント管理システム (Microsoft Active Directory サービスなど) を統合するためのサポートの追加を検討すること。この機能は、IoT アプリケーションをビジネス・エンタープライズ環境に統合する際に役立ちます。
  • 個人データまたは機密データをサード・パーティーの環境や信頼できない環境に保管することを計画している場合は、保管されているデータを保護するために暗号化を使用することを検討すること。
  • デジタル署名付きの (正真正銘の) 更新しか適用できないようなソフトウェア更新機能を設計すること。さらに、可能であれば、自動更新プロセスを検討すること。
  • アプリケーションがエンタープライズ・セキュリティー監視システムや syslog サーバーを使用してセキュリティー・アラート (ログイン試行の失敗など) を送信できるようにする、セキュリティー通知機能を提供すること。
  • セキュリティーの専門家を招いて、アプリケーションのセキュリティー機能とその設計を監査し、承認してもらうこと。

個人情報保護要件分析に関するポイント

  • アプリケーションによる個人データの使用法として計画されたすべてを文書化し、正当化すること。
  • 個人データの収集を、絶対的に必要なデータだけに制限すること。
  • 個人データを匿名化するルーチンの使用を検討すること。このプロセスが適切に行われれば、法的なデータ・プライバシー要件を満たす負担が取り除かれます。
  • 保管されているすべての個人データを暗号化するとともにそのデータをネットワーク (プライベート・ネットワークを含む) 上に送信するルーチンの作成、あるいはそのためのソリューション (SSL など) の使用を計画すること。
  • 個人情報の扱いについてコンシューマーへの透明性を確実にすること。個人情報の扱いに関する声明には、個人データの収集、処理、保管 (クラウド・ストレージを含む) について明記してコンシューマーに明らかにしなければなりません。個人データを使用する前に、ユーザーから明示的な同意を得て、アプリケーションによる個人データの使用法のすべてを説明した、個人情報の扱いに関する同意書に、署名または合意してもらう必要があります。
  • 業界の規制が適用されるその他のデータ・タイプについて検討すること。法規制による要件が完全に理解されていて、アプリケーション設計の一環として、それらの要件がコンプライアンスの対象となることを確実にしてください。
  • モバイル・アプリケーションに含まれる個人情報について検討すること。モバイル・アプリケーションは、GPS や SIM カード、あるいは機器の識別番号、機器のデータ、サード・パーティーのモバイル・アプリケーションからのデータとインターフェースを取ることがあります。このすべてのやりとりには、アプリケーション上の個人情報が含まれる可能性があるため、考慮する必要があります。

セキュアな IoT アプリケーションをコーディングする

IoT デバイスを制御および管理できるアプリケーションには、クラウド・ベースのアプリケーション、ローカル Web アプリケーション、モバイル・アプリケーション、そして IoT デバイス自体で実行されるソフトウェアなど、さまざまなタイプがあります。

IoT Web アプリケーション: セキュア・コーディングに関するポイント

IoT デバイスを管理するのに一般的に用いられているアプリケーションは、Web アプリケーションです。Web アプリケーションが IoT デバイスで直接ホストされるように設計されているか、それとも社内ネットワーク・サーバーでホストされるように設計されているか、あるいはクラウドでホストされるように設計されているかに関わらず、Web アプリケーションを開発 (コーディング) する際は、「OWASP Top 10」などの Web アプリケーション・セキュリティー開発のベスト・プラクティスに従わなければなりません。

IoT Web アプリケーション開発でよくある過ちは、プライベート・ネットワーク Web アプリケーションのセキュリティーを、一般公開される Web アプリケーションのときほど念入りには講じないことです。社内ネットワークもセキュリティー侵害を受ける可能性はあるので、信頼できない環境になり得ます。従って、社内で公開される Web アプリケーションの脆弱性が、ハッカーやマルウェアに悪用される恐れがあるのです。

IoT Web アプリケーションについては、以下のセキュア・コーディングに関するポイントを検討してください。

  • すべてのユーザー入力をサニタイズすること。このコーディング手法により、Web アプリケーションに対する最も一般的な攻撃を防ぐことができます。最も一般的な攻撃とは、ユーザーによるデータ入力を検証するコードの不備を悪用して、悪意のあるスクリプトを注入したり、SQL データベース・コマンドを実行したり、バッファー・オーバーフローを発生させたりするといった攻撃です。従って、すべてのユーザー入力フィールドをクレンジングして、期待される文字の「ホワイト・リスト」だけを受け入れるようにすることが、基本的なアプリケーション・コーディングのプラクティスとなります。もちろん、クライアント・サイドの検証は Web ブラウザー内でコーディングしますが (JavaScript など)、入力のサニタイゼーションは、常に (サーバー) アプリケーション内で行う必要があります。ほとんどのハッキングは、URL を使用してコードを注入しようと試みられるためです。
  • クッキーをセキュアに使用すること。アプリケーションで SSL を使用してクッキーをセキュアなものとしてマークする場合、クッキーは SSL によって自動的に暗号化されます。Web アプリケーションが SSL で保護されるように設計されていない場合は、業界で認められている暗号化アルゴリズム (AES 256 など) を使用してクッキーの値を暗号化するルーチンをコーディングしてください。
  • アプリケーションのエラー・レポートをロックダウンすること。アプリケーションのエラー・メッセージは、ハッカーにアプリケーションやユーザー・アカウントに侵入する手段のヒントを与える可能性があります。「ユーザー・パスワードが誤っています」といった最も単純なエラー・メッセージでさえも、ユーザー・アカウント名が正しく推測されたことをばらしてしまいます。
  • データ暗号化ルーチンを使用すること。個人データや機密データを暗号化するアプリケーションが必要な場合、独自の暗号化ルーチンを作成しようとはせずに、業界で認められた暗号化方法および暗号化アルゴリズムを使用したライブラリーを利用してください。
  • アプリケーションが使用するサード・パーティー・ライブラリーのセキュリティーを前もって評価して文書化し、セキュリティーの脆弱性とパッチを継続的にモニターすること。例えば、データ通信を暗号化するために使用されているオープンソースの OpenSSL ライブラリーで、最近、Web アプリケーションを攻撃に対して脆弱にする重大な欠陥が見つかりました。この問題はすぐに、このライブラリーの更新バージョンのリリースによって解決されました。
  • 請負業者やサード・パーティーを含め、すべての開発者が、Web アプリケーションのセキュア・コーディング手法を使用する能力があり、その手法を使用するトレーニングを受けていることを確実にすること。

モバイル機器向け IoT アプリケーション: セキュア・コーディングに関するポイント

IoT モバイル・アプリケーション (具体的には、スマートフォンやタブレットのアプリ) は、ハッカーが進んで攻撃しようとするターゲットです。IoT モバイル・アプリケーションを開発する場合も、Web アプリケーションで使用するのと同じセキュア・コーディング手法が必要となりますが、IoT モバイル・アプリケーションを開発する場合には、他にもモバイル機器の認証、テレコムおよび SMS データ通信、さらなるプライバシー・リスクといったアプリケーションのセキュリティーに関する検討事項が追加されます。

モバイル機器向け IoT アプリケーションについては、以下のセキュア・コーディングに関するポイントを検討してください。

  • アプリケーションへのモバイル・プラットフォームとオペレーティング・システムのフィーチャーおよび機能の統合を評価すること。フィーチャーと機能は、モバイル・プラットフォームのタイプやオペレーティング・システムごとに異なります。モバイル機能を統合すると、セキュリティーを強化することができますが、それと同時にアプリケーションのセキュリティーが脆弱になる可能性もあります。例えば、Apple の機器に搭載されている生体認証用の指紋スキャナーは、モバイル・アプリケーションの認証プロセスを強化するものの、モバイル機器の認証システムだけに依存していると、それが無効になった場合、アプリケーションに深刻な脆弱性が生じる可能性があります。
  • IoT モバイル・アプリケーションが、すべての個人データおよび機密データを転送中にも保護すること、そしてデータがモバイル機器に暗号化された状態で保管されることを確実にすること。インターネット接続と Wi-Fi 接続 (つまり、パブリック・ネットワークとの接続) に関しては、暗号化されたネットワーク・サービスを強制的にアプリケーションが使用するようにする必要があります。これには、セルラー・ネットワーク上で送信されるデータも含まれます。また、アプリケーションでは、リムーバブル・メディアに保管されるすべての個人データを暗号化するようにしてください。

IoT デバイスのソフトウェア: セキュア・コーディングに関するポイント

これまでに取り上げたセキュアなアプリケーションの手法に加え、IoT デバイスで実行されるソフトウェアを開発する際には、さらに考慮しなければならないことがいくつかあります。例えば、ファームウェアの使用法や、物理インターフェースのアクセス制御などです。

IoT デバイスのソフトウェアについては、以下のセキュア・コーディングに関するポイントを検討してください。

  • 最新バージョンの IoT デバイス・ファームウェアを使用すること。
  • ファームウェア・メーカーからのファームウェア更新通知やファームウェアのセキュリティー上の脆弱性が見つかったことに関する報告をモニターすること。
  • ファームウェアの新しいリリースをアプリケーションでテストすること。ファームウェアの新しいリリースにより、アプリケーション・コードの更新が必要になることがあります。
  • IoT デバイスの物理インターフェースに関する要件をレビューすること。その要件の中で、アプリケーションがアクセス制御機能を提供することを要求している場合があります。
  • セキュリティー・パッチを適用して IoT アプリケーションを更新できるようにすること。適用するパッチは、デジタル署名付きでなければなりません。また、パッチをインストールする前にアプリケーションの更新プロセスでパッチの検証を行って、悪意のあるパッチがインストールされないようにする必要があります。
  • IoT アプリケーションが、すべての個人データを暗号化するだけでなく、IoT デバイスのリムーバブル・メディア (つまり、メモリー・カード) に保管される、IoT デバイスとアプリケーションの機密データも暗号化すること。

IoT アプリケーションでセキュリティーをテストする

IoT アプリケーションのタイプを問わず、開発フェーズでセキュリティー面の欠陥や脆弱性を見つけるのに最も効果的な手法の 1 つは、コード・レビューを行うことです。コード・レビューを行うのは、適切な能力を持った、理想的には開発プロジェクトに関係していないコード作成者でなければなりません。コード・レビューが正式かつ徹底したプロセスになるよう、別のプロジェクトに取り組んでいる開発者を起用することと、IBM Security AppScan Source などのツールの使用することを検討してください。AppScan Source は、Web アプリケーションやモバイル・アプリケーションのソース・コードの脆弱性をスキャンして、(テスト・ステージに先立つ) SDLC の早期に脆弱性を見つけることができます。このツールは、JavaScript、HTML5、Cordova、Java、Objective-C、またはエンタープライズ・モバイル・プラットフォーム IBM MobileFirst Platform で作成されたコードをサポートしています。

コード・レビューを行うと、SDLC にさらなるコストと時間が追加されるように思えるかもしれませんが、コード・レビューには大きな見返りがあります。コード・レビューによって、コストのかかる再テストやリリース後のセキュリティー・パッチを回避できるだけでなく、セキュアでない IoT アプリケーションのセキュリティーが侵害されて開発者としての評判に傷が付くといった事態も避けられるからです。開発ステージでのコード・レビューに加え、SDLC のテスト・ステージでは、徹底的なセキュリティー・テストを行う必要があります。そのテストは、IoT アプリケーションのタイプに応じた内容でなければなりません。

IoT Web アプリケーションのセキュリティー・テストに関するポイント

ソフトウェアのセキュリティー上の欠陥を見つけるために脆弱性スキャンと侵入テストを実行することは、IoT アプリケーションのリリース前に不可欠の最終ステップです。アプリケーション・コードをテストすると、SQL インジェクション、クロスサイト・スクリプティング、クロスサイト・リクエスト・フォージェリー、バッファー・オーバーフロー攻撃などといった一般的なアプリケーションの脆弱性を防ぐことができます。

IoT Web アプリケーションのセキュリティー・テストについては、以下のポイントを検討してください。

  • アプリケーションのセキュリティー・テストを実行して Web アプリケーションの脆弱性を見つけるために、IBM Security AppScan のようなアプリケーション脆弱性スキャン・ツールを使用すること。この手法の詳細については、developerWorks のチュートリアル「Scan your app to find and fix OWASP Top 10 2013 vulnerabilities」を参照してください。
  • セキュアでないアプリケーション・コードが発見されるとどのような問題が発生するのかを、開発者が確実に理解するようにすること。
  • 忘れずに、すべてのテスト API をセキュアにすること。
  • 熟練したハッカーが採る手法を再現した侵入テストを実行すること。侵入テストは、経験を積んだ CEH (Certified Ethical Hacker: 認定倫理的ハッカー) が実行する必要があります。この手法は、インターネットに公開されるアプリケーションのセキュリティーを確実にするためのベスト・プラクティスと見なされています。侵入テストは、アプリケーションのリリース前や、大幅なコード変更が行われた後、そしてそれ以降は年に 1 回定期的に実行してください。
  • 侵入テストのテスターに、検出された脆弱性とその脆弱性を悪用する手段を開発者に十分に説明してもらうこと。

IoT モバイル・アプリケーションのセキュリティー・テストに関するポイント

モバイル・アプリケーションに特化された脆弱性スキャン・ツールを使用してください。その一例は、モバイル・アプリケーションのセキュリティー・テスト専用に設計された、IBM Security AppScan Mobile Analyzer です。AppScan Mobile Analyzer は、モバイル機器向けアプリケーションの脆弱性を検出するだけでなく、検出された脆弱性の詳細、リスクのレベル、そしてその脆弱性に対処するためのソリューションを開発者に明らかにします。

IoT デバイス用ソフトウェアのセキュリティー・テストに関するポイント

IoT デバイス用ソフトウェアは、セキュリティーの専門家と IoT デバイス用ソフトウェアの脆弱性検出を専門とする企業によるテストを受ける必要があります。

まとめ

セキュアな IoT アプリケーションを開発するには、開発チームは従来の慣れ親しんだ枠組みから足を踏み出す必要があります。計画ステージや設計ステージで、セキュリティー機能とプライバシーに関する要件を分析するための時間を取ると、セキュアな IoT アプリケーションを開発する上で大きな見返りとなって返ってきます。開発ステージでは、IBM Security AppScan Source を使用してコード・レビューを行うことで、開発者は開発の初期段階でコードの脆弱性を検出して修正することができます。これは、テスト・ステージで脆弱性を検出して修正するより遥かに効率的です。テスト・ステージでは、開発チームは IBM Security AppScan や IBM Security AppScan Mobile Analyzer などのツールを使用することで、ハッカーが仕掛けるようなアプリケーション層の攻撃を再現する必要があります。AppScan に付属している、動画チュートリアル、脆弱性の説明、セキュア・コーディング・サンプルは、いずれも開発者がセキュア・コーディング・テクニックをさらに向上させ、セキュアな IoT アプリケーションを作成する自信を高められるよう、開発者を教育する上で有用な資料となります。

この記事で説明した開発手法は、開発時間全体を短縮してコストを削減し、IoT アプリケーションに脆弱性が潜在する可能性を大幅に減らして、開発チームにメリットをもたらします。IoT アプリケーションがリリースされた後に脆弱性が見つかった場合、解決するのにコストがかかるだけでなく、その脆弱性をハッカーが見つけたとしたら、企業の評判にも開発チームの評判にも最終的に傷が付くといった事態になりかねません。


ダウンロード可能なリソース


関連トピック

  • IBM Internet of Things Foundation を IBM Bluemix プラットフォームと組み合わせて利用すると、アプリケーションから IoT デバイスとそのデータにアクセスする単純ながらも強力な手段となります。
  • IEEE Standards Association - Internet of Things には、IoT に関係する数々の標準、プロジェクト、そして優れた IoT ソリューションに必要な環境を構築することに直接関係するイベントが用意されています。

コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=セキュリティ, Mobile development
ArticleID=1022843
ArticleTitle=IoT サイバー攻撃の脅威に立ち向かう
publish-date=12032015