オープンソースロジスティクスのBlack Duck、セキュリティリスク必要性を語る
オープンソースソフトウェア(以下、OSS)が多くの企業の情報システム、さらに家電製品を始めとする組み込みデバイスなどに組込まれている現在、ソフトウェアの脆弱性に無頓着ではいられない。常に世界中のどこかで脆弱性が発見され、ソフトウェアデベロッパーからシステムインテグレータまでその対応と防御に時間と労力を割かれているのが現状だ。そんな中、OSSを企業が利用する際のライセンス管理をメインにビジネスを展開してきたBlack Duckは、脆弱性の知見をデータベースとして蓄積することで企業におけるOSSの脆弱性リスクをよりタイムリーに伝えその時間と労力を減らすサービスを展開している。
クレイ氏は現在のグローバル2000と呼ばれるトップ2000社のエンタープライズ企業におけるOSSの使われ方について紹介を始めた。
ガートナーのリサーチによれば2016年にはグローバル2000でのミッションクリティカルなシステムにおけるOSSの使用比率は99%にもなると予想されています。
また同じくG2000の企業全体の抱えるソースコードに含まれるオープンソースの割合も2010年の10%程度から2014年には30%となり、2018年には80%となるだろうとガートナーは予測しています。それぐらいエンタープライズにおけるオープンソースの重要性は増しています。ところがこの普及度合いがかえってハッカーなどによる脆弱性を突いた攻撃などに広く使われる理由となってしまっています。つまり、オープンソースがどの企業でも利用され、オープンソースであるがゆえにソースコードを読むことができ、GitHubなどのリポジトリで手に入れる事ができます。さらに公的機関であるNIST(アメリカ国立標準技術研究所)が脆弱性に関する情報を公開していますので、悪意をもった人間がその脆弱性を使って悪用することも可能になっているのです。事実として脆弱性の数は毎年増え続けています。
またプロプライエタリなソフトウェアとは異なり、脆弱性に最終的に対応するのはコミュニティのエンジニアなので、利用者側が自衛するしかないということになってしまいます。実際にHeartbleed(OpenSSLの脆弱性)やShellshock(Bashの脆弱性)、Venon(仮想化基盤であるQEMUの脆弱性)などといった事案でもコミュニティのエンジニアが発見し、パッチを作成するという結果になっています。またHPEのFortifyやIBMのAppScanなどのスキャンツールでは殆どの脆弱性は見つけられることがありません。例えばShellshockですが、Bashが開発されたのが1989年です。でもShellshockが発見されたのが2015年なのです。それくらい長い間、このようなスキャンツールを使っても発見できなかったのです。実際に2014年で4,000個以上の脆弱性が発見されていますが、このような自動化ツールで検出されるのは1%以下でしかないのです。
そのような商用ツールで検出できないのはどうしてなんでしょう?
それらのツールはヒューリスティック分析をベースにしています。つまり過去のコードの書き方やルールに従って新しいソースコードを分析するのです。ですので新たに生み出された複合的で複雑な脆弱性の発見は非常に困難になっています。そしてその解決策である修正パッチもやはりそのソフトウェアを書いたコミュニティのエンジニアに依存してしまうがためにどうしても時間がかかってしまうのです。例えば、最近、この2月16日に発見されたglibcの脆弱性、これはGNU Cのライブラリーに関する脆弱性ですので、数多くのLinuxディストリビューション、Linuxのアプリケーションに関係する重大なものですが、これをGoogleが発見したその日にBlack Duckは我々が管理しているKnowledgeBaseであるVulnDBによってその情報が登録され、我々の顧客には告知がなされています。実際にはこの数日後になってもNISTが管理するNVD(National Vulunability Database)には情報は追加されていませんでした。Black Duckは常に最新の脆弱性情報を更新し、顧客にむけて発信しています。
企業が自身で自衛するしかないというお話がありましたが、それは難しいのでしょうか?
実際にそれをマニュアルでやろうとするのは非常に困難であると思いますね。NISTのデータベースには毎日約11件の脆弱性が追加されています。それを重要度に従って整理、順位付けを行って、自社のオープンソースのコードベースと突き合わせるのはほとんど現実的ではありません。ソフトウェアの開発につれてソースコードは増え続けるのですから。Black Duckのようなソースコードの高速なスキャンと常に最新情報によって更新されるKnowledgeBaseがあって初めてその部分のシステム化が可能になると思います。
そのような様々なデータを格納するBlackDuck Hubですが、データが多過ぎて遅くなるというようなことは無いのでしょうか?
我々の強みはソースコードのスキャンの速さ、そして常に最新の情報に更新され最大の規模を誇るOSSに関するKnowledgeBaseなのです。それをどんな状況でも安心して使って頂けるように従業員の約半分をエンジニアリングに従事させています。ですので、そのような心配はないと思います。安心してください(笑)。
少し話を変えて、コンテナベースでアプリケーションが配布される場合などにも対応は可能なのでしょうか?今後、ますます増えてくると思いますが。
Black Duckが提供するBlackDuck Hubは企業が保有するソースコードリポジトリだけではなくDockerなどのコンテナの中に含まれるコードもスキャンすることが可能なソリューションです。Dockerコンテナに関して言えば、Red Hatが提供するDeep Container Inspectionというコンテナベースのアプリケーションを検証するための仕組みにBlack Duckがパートナーとして参画していることで可能になっています。Red Hatは彼らのリサーチの結果として「コンテナがエンタープライズで導入されない最も大きな理由のひとつがセキュリティである」と述べています。これはコンテナのようなテクノロジーが利用されていることを阻む大きな障害だと思っています。Black Duckはその不安を取り除くようにソリューションを開発しているのです。
Black Duckはこれまでのオープンソースのライセンスのコンプライアンスチェックやロジスティクス管理から企業が依存するOSSにおけるセキュリティの「プロアクティブなリスク管理」の領域に踏み出しているようだ。今後の更なる進歩に期待しよう。