コードの品質がセキュリティリスクに直結する背景
家電やスマホ、テレビなどの身の回りのものから、自動車や電車、スーパーのレジ、工場まで、あらゆるものにコンピューターが組み込まれる現代において、これらを制御するソフトウェア・コードの品質向上および管理は重要な課題だ。今や製品の基本動作から新しい機能やサービスの追加まで、ソフトウェア・コードで行う。不具合や欠陥が見過ごされたまま提供、利用されて重大な事故が発生すれば取り返しの付かないことになる。
例えば、「ソフトウェアの塊」の自動車では、昨年4月に国土交通省が発表したリコール対象台数において、最も多かった原因がコンピュータープログラムの不具合だったと松岡氏は紹介する。最もリコール対象台数が多かったのは、トヨタのプリウスとプリウスα、OEM供給先のダイハツ工業のメビウスで合計124万台以上。
原因は、異常判定の制御プログラムのバグで、走行不能になる恐れがあったと言う。飛行機も同様だ。2018年10月と2019年3月に発生したボーイング737MAXの墜落事故も、ソフトウェアの不具合が原因だった。こうした不具合は最悪の場合、乗客や乗務員、歩行者などの命に関わる事態に発展する可能性がある。
不具合や欠陥は、大きく2つに分類することができる。1つは、自社やサードパーティのソフトウェア・コードの脆弱性。もう1つは、ネットワーク設定やアクセス制御、サイバーセキュリティ対策など、システム上の誤設定だ。そして最近はこうした「欠陥」部分を狙ったサイバー攻撃が増えている。
「サイバー攻撃者は、ソフトウェアのバグや脆弱性を入念に調査し、コードや変数のふるまいや特性で問題があるところを特定し、そこを足がかりにシステムへ侵入したり、サービスを停止させたりする。攻撃者の目的が何であれ、ビジネスリスクであることは間違いない。こうした背景から、最近はセキュリティのコンテキストでソフトウェア・コードの品質が語られることが増えた」(松岡氏)
だが、どんなに脆弱性が指摘され、対策が公表されても、パッチをあてないまま放置されるシステムも少なくない。2014年4月に発覚したOpenSSLの脆弱性「Heartbleed」も、なかなか修正されないまま運用されるサーバーが数年後も多数存在したという報告もある。
「こうした情報を知りながら改修せずに運用し続ける判断をしたのであれば、それは道義的・倫理的に問題だ。もしも経営層が技術面で理解できずに修正できていないのであれば、開発者や運用者がリスクをきちんと伝える必要がある」(松岡氏)
しかし、セキュリティの視点に立ったソフトウェア・コードの品質向上は、言うほど簡単ではない。松岡氏はその理由として、「コード量」「複雑度」「開発速度」「リスク」の4つを挙げた。
コード量は、大規模なシステムやサービスになるほど増えていく。また、ML・AIやクラウド、IoTなどを活用して複数の異なるプラットフォームや言語、サービスを連携させながら1つのシステムを構築することが多い昨今、システム全体だけでなく、品質管理も複雑だ。そのような状況で、アジャイル開発やCI/CD、DevOpsで開発スピードを上げつつ、高度化するサイバー攻撃のリスク軽減に向けた施策も実施する必要がある。