開発からリリース、運用に至る中で、何もしなくてもセキュリティが完璧だというソフトウエアは存在しない。ソフトウエアは常に脆弱性が存在するリスクを抱えており、何も対応しないままだといずれサイバー攻撃を受けてしまう。場合によっては、取り返しのつかない事態を引き起こす可能性もある。
では、そもそも脆弱性とはどのようなリスクなのか。具体的にどのような対策を行えば良いのだろうか。
9月12日~15日に開催された「TECH+ EXPO for セキュリティ 2023」にEGセキュアソリューションズ 取締役 CTOで独立行政法人情報処理推進機構(IPA)非常勤研究員 技術士(情報工学部門)の徳丸浩氏が登壇。脆弱性対応の基本となる知識と、必要なスキルについて話した。
脆弱性とは何か
冒頭、徳丸氏は「Webサイトへの侵入経路には2種類しかない」と説明した。その2つとは「認証の突破」と「脆弱性の悪用」である。前者は主にパスワードを推測されたり、漏えいしたりすることでWebサイトへの侵入を許してしまうケースだ。一方、後者はソフトウエア自体の脆弱性を悪用された結果、Webサイトに侵入されてしまうケースだ。
では、「脆弱性」とは何か。
徳丸氏によると、脆弱性とは「悪用可能なバグ」、あるいは「設定不備」のことを指す。前者の例としては「バッファオーバーフロー」や「SQLインジェクション」、「クロスサイトスクリプティング」などがあり、後者の例としてはパスワードをデフォルトで放置している場合や、任意のメールを中継する「オープンリレー」などが挙げられる。
脆弱性はさらに基盤ソフトウエアの脆弱性と、アプリケーションの脆弱性の2つに分類される。
基盤ソフトウエアの脆弱性は、ApacheやPHP、JRE(Java)などが対象となる。こうした基盤ソフトウエアの脆弱性は世界中で調査され、日々新たな脆弱性が報告されている。言わば“既知の脆弱性”であり、「CVE(Common Vulnerabilities and Exposures)」という番号で識別される。例えば、Apache Log4jの脆弱性であるLog4Shellについては、CVE-2021-44228と表記する。