Microsoftは、教師あり機械学習を活用することにより、セキュリティバグの特定と分類の精度を大幅に向上させたと発表した。開発時、さらには運用後の改善にはセキュリティ専門家の協力を仰ぐことが不可欠なのだという。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Microsoftは2020年4月16日(米国時間)、セキュリティ専門家の協力の下で機械学習を活用することにより、セキュリティバグの特定と分類の精度を大幅に高めることができたと報告した。
ソフトウェア開発者は毎日、実装しなければならない機能はもちろん、報告のあったバグの長いリストを目の前にして苦労している。セキュリティの専門家は、自動化されたツールを使ってセキュリティバグに優先順位を付けているものの、開発者側では誤検知に時間を費やしたり、誤って分類された重要な脆弱(ぜいじゃく)性を見逃したりしている。
Microsoftでは、約4万7000人の開発者がソフトウェア開発に携わり、1カ月当たり3万件近くのバグを作り込んでいる。同社はバグを「Microsoft Azure DevOps」とGitHubにある100以上のリポジトリに保存している。これを人力で処理しようとしても無理がある。2001年以来、1300万件の作業項目とバグを収集しているからだ。
逆にいえば、ラベルが付いた大量のデータは機械学習に向いている。Microsoftはこのデータを使うことで、セキュリティバグと非セキュリティバグを99%の精度で正確に判別し、優先順位の高い重大なセキュリティバグを97%の精度で正確に特定するプロセスと機械学習モデルを開発した。
Microsoftは今回の開発過程の概要を次のように報告している。
同社が掲げた目標は、セキュリティ専門家にかなり近い精度で動作する機械学習システムを構築することだ。セキュリティバグと非セキュリティバグにバグを分類することに加え、重大なバグと重大ではないバグを分類したい。
目標を達成するために、教師あり学習を採用した。セキュリティとラベル付けされたバグと、ラベル付けされていないバグを、機械学習モデルに大量に与える。このようなトレーニングを続けることで、機械学習モデルは学習結果を基に、事前に分類されていないデータをラベル付けできるようになるという想定からだ。
教師あり学習では事前にラベル付けされたデータから学習するため、大量の「良質な」データが必要だ。用意したデータが、モデルを効果的にトレーニングできる適切なデータであることを確認するため、Microsoftは以下の4つの観点からデータを評価した。
事前にデータを評価した結果、今回のプロセスを設計し、モデルを構築するのに十分な量の良質なデータが用意されているという確信が得られたため、次の段階に進んだ。
開発を目指した分類システムは、セキュリティ専門家に近い性能を発揮する必要があった。そこで全てのデータを学習させるのではなく、セキュリティ専門家がトレーニングデータを承認した上で、そのデータを機械学習モデルに与えることにした。
データに偏りが生じないよう統計的サンプリングを用いて、適量のレビュー用データをセキュリティ専門家に提供することに決め、モデルが機能するようになった段階では手法を多少変えて、稼働中のモデルについてもセキュリティ専門家の評価を受けることにした。
このようなプロセスの定義を経て、いよいよモデルの設計に入る。Microsoftは、機械学習モデルが2段階に働くようにした。モデルはまず、セキュリティバグと非セキュリティバグの分類方法を学習する。次に、深刻度のラベル(重大、重要、低影響)をセキュリティバグに適用する。
Copyright © ITmedia, Inc. All Rights Reserved.