SQuBOKやBSIは何を目指して策定されたのか
セッション序盤で、松岡氏はSQuBOK(Software Quality Body Of Knowledge:ソフトウェア品質知識体系ガイド)が制定された背景について触れる。
1980年にソフトウェア工学とTQM(Total Quality Management)とを結びつける目的から、日本科学技術連盟のなかにソフトウェア生産管理研究委員会(略称:SPC研究委員会)が設立された。2005年頃、委員会はソフトウェア品質学の知識体系の策定を検討し始めた。これが後のSQuBOKにつながる。この知識体系の目的は、ソフトウェア品質向上のために有用な知識を形式知化し、多くの人々に共有することにあった。
2007年に同委員会はSPC(Software Production Control)からSQiP(Software Quality Profession)へと名称を変更。同年にSQuBOKの初版が策定された。当時の策定部会は30名あまりで、実はこのメンバーのなかに松岡氏も含まれているという。
SQuBOKの第2版は2014年に発刊された。そして発刊後、最新のソフトウェア品質技術を定期的に評価する目的から冊子「SQuBOK Review」が作成されるようになった。また、後年の2020年に発刊されたSQuBOKの第3版では、取り扱う技術領域が拡大し策定部会の人数も40名あまりになったという。
「SQuBOKが版を重ねるなかで、扱う技術が変化してきている」と松岡氏は語る。最新版では、AIやIoT、DX、DevOpsなど、初版では取り扱っていなかった技術も扱うようになった。それだけではなく、SQuBOKにおけるセキュリティの扱いも大きく変化している。版を重ねるごとに、よりセキュリティを重要なものとして取り扱うようになったのだ。
松岡氏は次に、アメリカにおけるBSI(Build Security In)という取り組みについて語る。これはDHS(United States Department of Homeland Security:アメリカ合衆国国土安全保障省)とCMI(Carnegie Mellon University:カーネギーメロン大学)よる共同プロジェクトで、2005年10月にリリースされたものだ。BSIはセキュリティに関する知識を形式知化することを目的としている。
この取り組みはSoftware Assuranceと呼ばれる類いのものだ。Software Assuranceとは「脆弱性を管理できているか」「意図どおりに動作するか」という2つの観点でソフトウェア品質を保証するという考え方のことである。
脆弱性を管理するためにはSBOMが有効
SQuBOKやBSIの設立背景や目的を語った後、松岡氏は「体系的な知識や仕組みを用いてソフトウェアの品質を管理していくことは非常に重要」と述べる。そのうえで、脆弱性を管理するためにはSBOM (Software bill of materials:ソフトウェア部品表)を用いることが有効なのではないか、というアイデアを示した。
SBOMはコードベースに存在するすべてのオープンソースおよびサードパーティ・コンポーネントの一覧のことだ。SBOMには各コンポーネントのライセンスの種別や、コードベースで使用されるコンポーネントのバージョン、それらのパッチの提供状況も記述される。
SBOMを保守することで、ソフトウェアを構成するソースコードが高品質かつ定められた規格や規制に準拠しており、安全であることを保証できる。このように、ソフトウェアがどのような要素から構成されているのか解析することをSCA(Software Composition Analysis:ソフトウェア・コンポジション解析)という。
SBOMの有益性を示すため、松岡氏はある情報を提示する。日本シノプシスは毎年、各種産業におけるOSSの利用状況を調査した「オープンソース・セキュリティ&リスク分析(Open Source Security and Risk Analysis:OSSRA)レポート」を発行している。
2020年のレポートでは、1,253のアプリケーションを調査したところ、コードベースの7割をオープンソースが占めていることが提示された。つまり脆弱性の管理を行うには「OSSにどのような脆弱性が含まれるのかを見つけ出すこと」が必須となる。そして脆弱性可視化のためには、コードベースに含まれる要素を網羅的に洗い出せるSBOMが有効なのだ。
とはいえ、特定のアプリケーションに含まれるコードベースをすべて調べることは容易ではない。そこで日本シノプシスは、SCAを支援するためにBlack Duck Binary Analysisというソリューションを提供している。松岡氏はBlack Duck Binary Analysisの有用性についてセッション内で解説していった。
セッション終盤では、SBOMの有益性は世界各国で認められており、各所で標準化や推進をする動きが見られることも語られた。また、ソフトウェアの品質向上とリスク低減を目指すためには、SBOMの導入だけではなく、開発プロセスや組織体制の改善も必要であることを松岡氏は解説。「自動化されたセキュリティテストをCI/CDパイプラインのなかに組み込み、コード量の増加に伴う検証負荷の増大を軽減する」「ソフトウェア開発に関わるすべてのメンバーが、セキュリティ向上に対する意識を持つ」などの知見が示された。
最後は以下のまとめが示され、セッションは終了した。
ソフトウェア品質はセキュリティ品質を含む
- みなさんの組織ではセキュリティ品質の指標を含んでいますか?
脆弱性の混入を発見し管理するための手段が必要
- 既知の脆弱性、ライセンス違反の可能性、最新版の情報、更新頻度の情報
- ソースコードやバイナリーの状態を可視化するためにはSCAツールが必要
自前のコードを可視化するためにはSAST(静的解析)ツールが有効
- コード内の脆弱性や、潜在的な危険性を指摘してくれる
常に情報の更新と課題の抽出と対策の検討と適用を繰り返す
- ソフトウェアを使い続ける限り繰り返す
これを組織全体で共有し、ビジネスの課題として扱うことが必要
- リスク分析、脅威分析、ペンテスト、レッドチームなどで対策の選択と保護が適切か検証
- インシデントが発生した際に活用できる
オンラインセミナー:ソフトウェア品質とセキュリティ品質の温故知新
デブサミのセッションでは時間の関係で盛り込み切れなかった内容も含む”ディレクターズカット版”を、シノプシスのオンラインセミナーポータルでご視聴いただけます。