東芝情報システム株式会社

オープンソースとは?

オープンソースとは何か?

現在、多くのソフトウェア開発プロジェクトにおいて、オープンソースが利用されています。これは、オープンソースの利用には、大きなメリットがあるためです。一方で、オープンソースの利用にはリスクも存在します。
オープンソースを正しく利用するためには、このようなメリットやリスクについて正しく理解することが重要です。このコラムでは、オープンソースとは何かという点について説明した後、そのメリットやリスク、またその回避方法について解説します。

オープンソースとは何か?

オープンソースについて、漠然と「ソースコードを公開しているソフトウェア」と理解している方も多いのではないでしょうか?

確かにオープンソースはソースコードを公開しています。しかし、ソフトウェアがオープンソースと呼ばれるためには、ソースコードの公開以外にもいくつかの条件が存在します。

この条件を定めている団体の1つに、Open Source Initiative (OSI)があります。この団体は、オープンソースが広く利用されるよう働きかけることを目的として設立されました。ここでは「The Open Source Definition」として、オープンソースとは何か、という定義を定めています。この定義は 10項目に及びます。

それぞれの項目についてここで解説はしませんが、オープンソースは誰もが差別されることなく自由に利用、再頒布することが可能となるよう定義されています。

オープンソースはこのような定義となっているため、

  • 世界中のさまざまな人々がダウンロードし、
  • 自分の必要な機能を追加し、
  • 不具合を見つけ出して修正し、再頒布する、

といったことが可能となっています。

活発に活動しているオープンソースプロジェクトのソフトウェアが、高い品質を実現しているのは、この仕組みがあるからです。

このように、高い品質のソフトウェアを簡単に入手可能である点が、オープンソースの最大のメリットと言えます。

オープンソースライセンスとは何か?

オープンソースは、誰もが自由に利用、再頒布可能と書きました。しかし、何をしても良い、と言うわけではありません。

オープンソースには必ず、そのオープンソースを利用する、特に再頒布するために守らなければならない条件が定められています。その条件を記述したものをオープンソースライセンスと呼びます。

たとえば、多くのオープンソースライセンスでは、オープンソースに対して開発者は何の保証も行わない、という条件を課しています。オープンソースは、世界中の人々がダウンロードして利用する可能性があるので、全ての人々に対して丁寧なサポートを行うことは難しい場合が多いためです。

また、オープンソースライセンスには、より良いソフトウェアを開発したいという開発者の思いが反映される場合も多くあります。たとえば、不具合の修正や、有用な機能追加を行ったソフトウェアを再頒布する場合には、その変更内容をフィードバックするように要求する、といった場合などです。

オープンソースライセンスとして有名なものに、GNUプロジェクトのGNU General Public License(GPL)があります。
このライセンスは、ソフトウェアを自由に利用可能とすることを重視した内容となっています。せっかく自由に利用可能なソフトウェアを作っても、それを改良したソフトウェアが特定の人にしか使えない形で流通してしまう、そのような事態とならないように、GPLのオープンソースを元に開発したソフトウェアは、必ずGPLで再頒布するよう求めています。

このように、さまざまな開発者の思いを反映したさまざまなオープンソースライセンスが存在し、その種類は 1000を優に超えています。しかし、オープンソースライセンスの種類があまりにも多いと、オープンソースを利用する場合に、その条件を精査するために多くの労力が必要となってしまいます。そこで、前述のOSIという団体では、オープンソースを利用しやすくするため、特定のオープンソースライセンスに認定を与え、オープンソースライセンスが増えすぎることを抑止しています。現在、OSIの認定しているオープンソースライセンスは 80種類程度です。

オープンソースを利用する場合には、その開発者の思いを尊重し、ライセンスを遵守することが重要となります。

組込みシステムにおけるオープンソースの3つのリスク

これまで見てきたように、ライセンスを守る範囲で自由に利用でき、品質も高いオープンソースですが、その利用にはリスクが存在することも事実です。

オープンソースを利用する上で対策を行わなければならないリスクは大きく3つ挙げられます。

オープンソースライセンスに潜むリスク

前述のオープンソースライセンスは法的な拘束力を持ちます。つまり、オープンソースライセンスに記述された条件に違反した場合には、法に反することになります。

このため、開発したソフトウェアにどのようなオープンソースが利用されており、そのオープンソースがどのようなオープンソースライセンスの下に頒布されているのかを正確に把握していなければいけません。

たとえば、ソフトウェアの開発を外部委託した場合に、オープンソースのソースコードが紛れ込んでいた場合などは、知らない間にライセンス違反となってしまう可能性があるため、十分な注意が必要となります。

オープンソースのセキュリティ脆弱性・インシデントによるリスク

オープンソースは、ソースコードを自由に誰でもダウンロードすることができ、品質の向上に寄与することが可能です。このため、頻繁に不具合が見つかり修正される可能性があります。

このような不具合の中には、それを悪用することで重大なセキュリティ事故を引き起こす可能性のあるものも存在します。このような不具合を、セキュリティ脆弱性と呼びます。

セキュリティ脆弱性は、活発に活動しているオープンソースプロジェクトのソフトウェアの場合は発見されるとすぐに、そのオープンソースの開発元によって修正が行われ、セキュリティ脆弱性の情報が公開される前に修正されたバージョンが公開されるため、この修正されたバージョンを利用している限り安全です。

しかし、もし、この修正前のソフトウェアを利用し続けた場合、セキュリティ脆弱性を悪用した攻撃にさらされることとなり、非常に危険です。

オープンソースを利用する場合には、常にセキュリティ脆弱性の情報を確認し、セキュリティ脆弱性のないバージョンを利用することが重要です。

オープンソースの保守・サポートに関するリスク

オープンソースについてご説明した際、「活発に活動しているオープンソースプロジェクトのソフトウェアの品質は高い」と記述しましたが、逆に言えば、あまり活発に活動していないオープンソースプロジェクトのソフトウェアの品質は高くない可能性があります。

新しいセキュリティ脆弱性が見つかったとしても、オープンソースの開発を行っているプロジェクトが修正してくれなければ、リスクは解消されないままです。

また、たとえ活発に活動しているオープンソースプロジェクトのソフトウェアでも、バージョンが古ければメンテナンスは行われません。

オープンソースを安全に利用するためには、活発に活動しているオープンソースプロジェクトの最新のバージョンを利用することが必要です。


これら 3つのリスクは、特に組込みシステム向けのソフトウェアで顕著となります。なぜなら、組込みシステム向けのソフトウェアは、その機器に組み込まれた形でユーザの元に届けられるからです。

企業のデータセンターやクラウドで動作するソフトウェアの場合、ユーザの元にソフトウェアは渡りません。このため、オープンソースをユーザに頒布したことにはならず、オープンソースライセンスの適用範囲外となる場合が多いのです。つまり、コンプライアンスのリスクは低くなります。また、たとえセキュリティ脆弱性が見つかったとしても、データセンター内にソフトウェアがあるため、対策が施されたバージョンへのアップデートも比較的簡単です。

一方、組込みシステムの場合には、ユーザの元にソフトウェアも渡るため、オープンソースライセンスの条件が適用されます。また、ソフトウェアのアップデートも困難となります。組込みシステム自体の寿命も長い場合が多いため、長期にわたる保守も考慮する必要があります。

このように、組込みシステム向けのソフトウェアでは、特にオープンソースのリスクには注意を払う必要があります。

組込みシステムにおけるオープンソースの3つのリスクを回避する具体策

組込みシステム向けにオープンソースを利用する場合のリスクについてご説明しましたが、リスクがあるからといって、オープンソースの利用を止めることはできません。

当社では、オープンソースのリスクを回避しながら安全にオープンソースを利用する方法としてオープンソース管理ツールである「Black Duck」をご提案しています。

Black Duck ロゴ

オープンソースの3つのリスクを回避する「Black Duck」とは?

オープンソースのリスクを回避するためには、ソフトウェアの開発ライフサイクルのなかで下記のような管理を行う必要があります。

オープンソースの特定

開発に利用したソフトウェアの内部で利用しているオープンソースを全て特定して列挙します。

オープンソースの管理

特定されたオープンソースに対して、開発元やオープンソースライセンスを確認し、記録します。

セキュリティ脆弱性のマッピング

政府機関などから公開されているセキュリティ脆弱性情報から、利用しているオープンソースに対応するセキュリティ脆弱性情報をマッピングします。

セキュリティ脆弱性の継続的な監視

セキュリティ脆弱性は、日々新しいものが発見されます。このため、セキュリティ脆弱性のマッピングは、開発時に行うだけでは十分とはいえません。開発完了後も継続的にセキュリティ脆弱性を監視し、リスクを回避する必要があります。

このような管理を手作業で行おうとすると、ソースコードの全チェックや、セキュリティ脆弱性の公開情報の全チェックなど、膨大な工数が必要となります。また、オープンソースの見落としや、脆弱性の見落としなども発生する可能性があります。

オープンソース管理ツールである Black Duck は、このような問題に対応するため、開発サイクル全体にわたって管理を自動化し、開発者を支援いたします。また、Black Duck は Continuous Integration(CI)ツールである Jenkins をはじめとした、さまざまな開発ツールとの連携が可能となっており、開発者に対して大きな負担を強いることなく導入が可能です。

Black Duck」が3つのリスクを回避できる3つの理由

ではBlack Duckはなぜオープンソースの3つのリスクを効率よく回避することが可能なのか、その理由をご説明します。

理由1. ソースコードの自動解析
Black Duck 仕組み

Black Duck付属のスキャナツールは、ソースコードを解析し、シノプシス社の持つオープンソースデータベース(Knowledge Base)とのマッチングを行い、ソースコードがオープンソース由来かどうかを自動判別します。シノプシス社のKnowledge Baseは、世界最大規模であり、さらに自動検索や専門のエージェントにより、常に新しい情報が追加されています。

自動解析機能では、オープンソースから 1関数だけ部分的に利用した場合でも、検出することが可能です。

この機能により、「オープンソースライセンスに潜むリスク」で記述したような、知らない間にオープンソースのソースコードが紛れ込むような状況を回避することが可能となります。

理由2. オープンソースの自動特定

オープンソースのライブラリなどをそのまま利用している場合、Black Duckはオープンソース名、バージョン、開発元、オープンソースライセンスまで、自動で特定します。オープンソースを 1関数だけ部分的に利用したような場合には、完全な自動特定は出来ませんが、引用元として最も可能性の高いオープンソースを提案します。

この機能により、利用しているオープンソースのオープンソースライセンスで規定されている内容を確認することが出来ますので、「オープンソースライセンスに潜むリスク」を回避することが可能となります。

また、開発元を特定する際、その開発元の活動状況や、新しいバージョンが存在するかどうかも確認することが可能です。これにより「オープンソースの保守・サポートに関するリスク」を回避することが可能となります。

理由3. セキュリティ脆弱性の自動マッピング

特定されたオープンソース情報を、米国の政府機関 National Institute of Standards and Technology(NIST)の公開する National Vulnerability Database(NVD) のセキュリティ脆弱性情報と突合せ、利用しているオープンソースに関連するセキュリティ脆弱性情報を自動でリストアップします。

組込みシステムでは、リリース後のソフトウェアアップデートも困難である場合が多いため、開発中に判明している最新のセキュリティ脆弱性に全て対処完了している必要があります。セキュリティ脆弱性の自動マッピングの機能により、「オープンソースのセキュリティ脆弱性・インシデントによるリスク」を回避することが可能です。

また、セキュリティ脆弱性情報は常に監視しており、利用しているオープンソースに新しいセキュリティ脆弱性が見つかった場合にも、すぐに警告が行われます。重大なインシデントの原因となるようなセキュリティ脆弱性をいち早く把握して、アップデート計画を立てることが可能となります。


これまでお話してきたように、オープンソースを利用することは、大きなメリットがありますが、リスクがあることも事実です。 このリスクを手作業で回避しようとすれば、大きな手間が必要となります。

オープンソースのリスクを効率的に回避しながら、オープンソースのメリットを享受するため、Black Duck の導入をお勧めしています。

Black Duck お問い合わせ・資料請求

オープンソース管理に関する検討用資料のご案内や、導入相談、お見積り依頼などのお問い合わせをお受けしております。

Black Duck 導入相談

オープンソースライセンス管理「Black Duck」の導入相談に関するお問い合わせです。

Black Duck 見積り依頼

オープンソースライセンス管理「Black Duck」のお見積り依頼です。

Black Duck デモ依頼

オープンソースライセンス管理「Black Duck」のデモ依頼です。

Black Duck 概要資料

オープンソースライセンス管理「Black Duck」の概要をまとめた資料です。

↑ページトップへ

お気軽にお問い合わせください。

電話番号044-246-8320

受付時間:9:00~17:45
但し、土曜・日曜・祝日および当社休業日を除く