オープンソースソフトウェアのセキュリティ

オープンソースソフトウェア(以下 OSS)は、多くの IT を利用する技術者に認知され色々な分野で活用されるようになってきました。その一方で、社内や組織内に技術部門を持たないユーザなどは、システムの維持管理やセキュリティの面などから、OSS の採用に不安を感じることも多いようです。

そこで今回は、OSS を一般的な業務で利用しても本当に安全なのか、という点について想定問答集を作成してみました。この記事がユーザのみなさまの OSS に対する正しい理解や OSS 活用の手助けになれば幸いです。

OSS を導入することはセキュリテリ対策を考慮していないことになりますか。

OSS を導入することが、セキュリティ対策を考慮していない、とはなりません。世の中には、多くの OSS が稼働してるので、それらが全部ダメということにはなりません。

一部のブログ等で「ソースコードが公開されているので、セキュリティ面で心配がある。脆弱だ。」という言説を取る人がいますが、これはケースバイケースであり断定はできません。

世の中のソフトウェア製品にはすでに多くの OSS が組み込まれており、セキュリティ面で常に対策されている OSS が多数存在します。ソースコードが公開されていて多くの開発者に共有されることで、脆弱な実装が見つかりやすくなったり、脆弱な部分が発見された場合の対応を多くの開発者で素早く行うことが可能となるのが OSS の良いところです。

ただし、すでに開発が終息していたり遅滞しているような OSS では、脆弱性がなかなか修正されない、ということも起こりえます。そのような OSS を選択しない、ということが OSS のセキュリティ対策を考慮する第一歩になると思います。

ベンダー企業などが提供する OSS ではないソフトウェア製品を導入すればセキュリティ対策を考慮したことになりますか。

ベンダー提供のソフトウェア製品を導入したからといって、セキュリティ対策を考慮したことにはなりません。結局のところ、導入時に「セキュリティ対策を考慮している」と言えそうなのは、ベンダー提供の製品か OSS なのかに関係なく、

  1. 多くのユーザに⻑く利用されている実績があり、
  2. 導入時点で開発元が十分に開発・改善が行える状態であり、
  3. 頻繁にセキュリティ対策パッチがリリースされている

というあたりを評価することになると思います。ここで 1. は世の中(特にインターネット)での稼働数などを調べます。2. はベンダー提供のソフトウェアならば、その提供会社が健全かどうかを確認し、OSS であれば開発コミュニテイの活動状況やリリース状況を確認します。3. は 2. と似ていますが、過去の修正パッチが具体的にいつリリースされているのかを調べます。

OSS かどうかに関わらず、ソフトウェアに対して上記のような評価することがセキュリティ対策に直結します。

なお、公的機関が運用している JVN や NVD などの脆弱性情報データベースを参照して、あるソフトウェアに対して「どれだけ脆弱性が登録されているか?」という数をもって製品の脆弱性の尺度と考える人がいますが、実はよく使われるソフトウェアほど脆弱性も多く発見される傾向にあるので、「発見された脆弱性の数」ではソフトウェアがどれだけセキュアかは評価できません。もしも脆弱性の数を主な評価基準にしてしまうと、多くの PC で動作している有名 OS などは最低評価になってしまうはずです。

OSS と非 OSS はセキュリティの優劣がありますか。

あまり無いと考えています。結局、セキュリティはソフトウェアの利用を開始してからもずっと対応していくものですから、後々までセキュリティ対策(パッチ等)を提供してくれるものが優秀と言えます。

非 OSS の場合、有償のサポートサービスや保守契約などでセキュリティについても、手厚い対応を得られる可能性があります。他方 OSS において同じような対応を実現するには、その OSS の技術的な運用が可能な委託先を探し出す必要があります。もちろん、やろうと思えば OSS は自前ですべて運用や対応ができるので、技術力があればすべてを自分で対応することも可能です。

OSS の場合、自分の用途に応じてソフトウェアを改造することができます。しかしこれを行うと、その後のセキュリティパッチの適用がうまくいかなくなる可能性があります。OSS 開発元が提供するパッチの適用も問題なく行えるようにソフトウェアを改造するには、それなりに高い技術力が必要になります。非 OSS の場合、利用者は基本的に改造できませんから、このようなことは起きません。

また、OSS の場合は外国産のものが多く、ドキュメント類やインターネット上の情報が外国語(主に英語)であることが多いので、自助努力での運用がしんどい、というケースも多いようです。しかし、広く利用されているメジャーなソフトウェアであれば、外国産のものでも国際化対応により管理画面などが日本語に対応している場合が多く、ドキュメント類も多くの有志の努力によって積極的に日本語に翻訳されています。

さらに国内で開発されて公開される OSS も年々増えてきているので、うまく OSS を選択すれば、言語面での苦労を少なくすることも可能です。

OSS と非 OSS ではセキュリティを維持する方法は違いますか。

これについても、OSS と非 OSS であまり変わらないと思います。ソフトウェアに脆弱性が見つかった場合は、脆弱性の修正プログラム(パッチ)を入手し、それを適用していくことになります。

不幸にして修正プログラムが入手できない場合は、ネットワークで保護することを検討します。たとえば WAF(Web Application Firewall)をソフトウェアとインターネットの間に設置する、などです。これも OSS と非 OSS で変わらない対応です。

技術的な対応がよくわからない、というユーザであれば、上記に記載のような条件を設定した上で業者などを選定し、作業を委託するということも方針としては有効でしょう。これも本来、OSS と非 OSS で変わらないと思います。

以上

改定: 2021年11月16日
初版: 2021年11月10日