独立行政法人情報処理推進機構(IPA)技術本部 セキュリティセンターは5月12日、今後のIoTの普及に備え、IoT機器およびその使用環境で想定されるセキュリティ脅威と対策を整理した「IoT開発におけるセキュリティ設計の手引き」を公開した。
この手引きにおいてIPAは、IoTのセキュリティ設計において行うべき脆弱性への対応について解説している。行うべき対応は開発段階だけでなく運用段階にも及ぶ。
開発段階での対応
脆弱性を持った製品を出荷しないため、開発段階での対応としてIPAが実施すべきとしている内容は以下の通り。
新たに脆弱性を作り込まないこと
ソフトウェア(ファームウェア)開発において、セキュアプログラミング技術の適用やコーディング規約の利用によって、新たな脆弱性を作り込まないようにする。ハードウェアに生じる脆弱性の対策(例えば、物理的な攻撃への対策)も考慮する。
既知の脆弱性を解消すること
ソフトウェア(ファームウェア)開発において、外部のソフトウェア部品(オープンソースなどのフリーウェアを含む)を利用する場合、既知の脆弱性が存在しないか確認する。この際には、IPAが提供する脆弱性対策情報データベース「JVN-iPedia」の活用も可能としている。
なお、オープンソースを利用する場合、ソースコードが公開されているため、脆弱性の問題箇所が特定されやすく、脆弱性対策を怠った場合に、攻撃者によって攻撃手段として悪用されやすい点に留意すべきである。また、公開されているサンプルコードに脆弱性が存在し、そのままコピー&ペーストで流用して開発した製品に脆弱性が混入した事例もあるため、サンプルコードは脆弱性が存在しないことを確認した上で利用すべきであるとした。
残留している脆弱性を検出・解消すること
製品出荷前の脆弱性検査として、各種のテスト(既知の脆弱性検査、ソースコード検査、ファジングによる未知の脆弱性検出)を実施し、残留している脆弱性を検出・出荷までに解消する。
製品出荷後の脆弱性の新たな発見に備えること
開発段階で脆弱性をゼロにすることは容易ではなく、また製品出荷の時点では脆弱性でなかったものの技術の進展に伴い脆弱性とみなされる場合(例えば、暗号アルゴリズムや鍵長の危殆化)もあり得る。そのため、製品出荷後の脆弱性の発見に備えて、ソフトウェア(ファームウェア)の更新機能を実装すべきであるとした。