このページの本文へ

前へ 1 2 次へ

シノプシスが「2020年 オープンソース・セキュリティ&リスク分析レポート」を公開

商用アプリで進むOSS活用、ライセンス/脆弱性管理が飽和状態に

2020年06月02日 07時00分更新

文● 谷崎朋子 編集● 大塚/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

OSSコンポーネントの懸念点=「脆弱性」「ライフサイクル」「ライセンス」

 大きな課題はガバナンスの欠如だ。1つのアプリケーションの中で、企業/組織として利用が承認されたコンポーネントだけでなく、便利だからと開発者が勝手にダウンロードしたコード、再利用されたコード、購入した商用アプリ、サードパーティのライブラリ、アウトソース開発されたソフトなどが複雑に組み合わさっており、その中にどれだけの数のOSSコンポーネントが含まれているのか、把握するのが難しい。

 こうした現状をふまえて、吉井氏はOSSコンポーネントの利用にまつわる懸念点を3つ挙げた。

 まず1つめは「脆弱性」だ。今回の調査で発見された脆弱性を含むコードベースは75%に上り、CVSSスコアの高い(リスクの高い)ものに限っても49%を占める。脆弱性のあるコンポーネントで最も多く使われていたのは、680万以上のGitHubレポジトリで使われている人気のJavaScriptユーティリティライブラリ、Lodashだ。すでに脆弱性(CVE-2018-16487、CVE-2019-10744)は修正済みであり、パッチを当てればよいのだが、そもそも自社アプリケーションでLodashが使われているかどうかを把握できていなければ、見過ごす可能性が高い。

OSSコンポーネントの課題1「脆弱性」。監査対象の約半数が高リスクの脆弱性を含む結果に

 2つめの課題は「OSSのライフサイクル」である。監査対象のコードベースのうち、82%が開発終了から4年以上が経過したOSSコンポーネントを含み、同様に88%が過去2年間に開発活動実績のないOSSコンポーネントを使っていた。吉井氏が取り上げたあるOSSコミュニティは、2012年半ばを境に開発がぱったり止まっていた。

 「OSSは、テクノロジー進化の影響でどうしても“流行り廃り”が生じる。開発をやめてしまったコンポーネントも多い。こうしたコンポーネントを使い続けるのは問題で、開発終了後に脆弱性が発見されても対応がなされない」

 OSSの利用は“自己責任”の側面が大きいとはいえ、自社アプリケーションに組み込んだOSSコンポーネントすべてを、コミュニティの活動状況や脆弱性情報まで追いかけながら対応していくのはなかなか難しい。

>OSSコンポーネントの課題2「ライフサイクル」。シノプシス「Black Duck Open Hub」プロジェクトでは、OSSの開発活動をトラッキングしている

 3つめの課題は「ライセンス」だ。OSSのコードは、誰でも自由にアクセス/利用/変更/再頒布できるのが魅力である。ただし「自由に」扱えるのは「ライセンスを遵守したうえで」の話だ。そして、このライセンスが多種多様で複雑なのだ。

 OSSライセンスの種類は非常に多い。グローバルなオープンソース推進団体であるOSI(オープンソースイニシアティブ)は82種類と定義しているが、コードベースの機能や特性に応じて改変されたものも大量にあり、シノプシスのナレッジベースには2600種類以上が登録されている。もっとも、OSSの約98%が上位20種までのライセンスを採用しているため、これらを把握していれば大抵はカバーできるという。

 特に悩ましいのは、ライセンス条件があいまいなOSSコンポーネントへの対応だ。今回の調査では、「ライセンス違反の可能性がある」または「ライセンスなし(ライセンス条件に非適合)」と判定されたコンポーネントを含むコードベースが73%もあった。さらに、ライセンスや使用条件が作者によって明記されていないコードベースも33%あった。もちろん「ライセンスが明記されていないからどう使ってもよい」わけはなく、むしろ著作権侵害となるリスクが高い。

OSSコンポーネントの課題3「ライセンス」。あいまいなライセンス条件のほかにも、アプリ全体とOSSコンポーネントのライセンス条件が競合しているケースも多発している

 なお、2019年に見られた問題として、吉井氏は「Hippocratic License」というライセンスを取り上げた。このソフトウェアライセンスは“エシカル(倫理的)なOSSライセンス”をうたい、「誰であれ、このソフトウェアを(略)他の個人や団体(略)を積極的かつ意図的に危険にさらしたり、害したり、その他の方法で脅かすようなシステムや活動に使用してはならない」という文言を含む。一見“正しい”主張のように思えるが、JSON Licenseの「このソフトウェアは善い目的に使用されるべきで、邪悪な目的に使用してはならない」と同様に、社会背景や文化背景によって境界がゆらぐ「善/悪」に判断が依存するあいまいさがある。

対策には強力な社内戦略のほか「コミュニティ参加」が重要

 ここまで述べてきたような課題をクリアし、OSSコンポーネントを安全に活用していくためにはどうすればよいのか。その対策として、吉井氏は次の3点を挙げる。

・オープンソースに対する社内戦略の策定
・開発者のライセンスに対する意識改革
・コミュニティへの積極的な参加

 まずは、現在使用しているオープンソースコンポーネントは何かを特定する方法や、商用ソフトウェアとの管理方法の違いを学ぶことだという。「イノベーションの原動力でもあるOSSを使わないという選択肢は、現代においてはありえない」と述べた吉井氏は、よりメリットを引き出せる戦略作りが必須だとした。

 そして、アプリケーション開発者自身もライセンスについて学ぶことが大切だ。そのうえで、OSSコンポーネントのインベントリ(SBoM:Software Bill of Material、アプリケーションの構成部品やそのOSSライセンス、著作者を一覧でまとめたもの)を作成し、パッチ適用の戦略/ポリシーを策定、最新の状態を保っていく。

 そして最後は、OSSコミュニティへの参加だ。コミュニティに参加することで活動状況が分かり、脆弱性にもタイムリーに対応できる。また、開発への貢献や共同所有の意識が高まり、コラボレーションスキルも高めることができる。あらゆる分野のアプリケーションにオープンソースが採用される今、オープンソースとの付き合い方を改めて考えることが大切だとまとめた。

OSSのメリットを最大限引き出すための3つのポイントを挙げた

前へ 1 2 次へ

カテゴリートップへ

  • 角川アスキー総合研究所
  • アスキーカード