オープンソースソフトウェアの問題点
2021年12月9日に公開されたThe Apache Software Foundation開発のLog4j脆弱性に関するニュースは、瞬く間に世界中を駆け巡りました。そしてIT機器のベンダーのみならずクラウド・ソーシャルサービスからソフトウェアベンダーまで多岐に渡り影響を与えました。
この出来事はオープンソースソフトウェアの利便性とは裏腹に、潜在的なリスク管理の重要性を浮き彫りにしました。ここでは改めて顕在化したオープンソースソフトウェアの問題点について考えていきます。
オープンソースソフトウェアとは
オープンソースソフトウェア(Open Source Software)略してOSSとも言い、利用者の目的を問わずソースコードの使用・再頒布の自由が保証されているソフトウェアのことを指します。つまりソフトウェアコードの調査や再利用、修正・拡張・再配布に制限が設けられていないため自由に利用できるソフトウェアのことです。 【参考】:OSG-JP オープンソースの定義 (v1.9) 【参考】:Open Source Initiative The Open Source Definition
ニーズ変化の激しい現在、投資効果を高めるには早期サービス化が望まれます。そのためすぐに利用できるオープンソースソフトウェアは魅力的です。このため導入事例が一層増えてきています。
オープンソースソフトウェアのメリット
オープンソースソフトウェアは多くのメリットがあり、多岐に渡り利用されています。具体的なメリットは以下の通りです。
・開発期間の短縮 従来はソフトウェアをカスタムで1から開発することが一般的でした。現在ソフトウェアの活用分野が多岐に渡り、設計工程・開発工程を短縮するためにオープンソースソフトウェアの選定機会が増えました。
・製品品質の確保 オープンソースソフトウェアはよく用いられるソフトウェアのスタックを組み合わせて検証され、実際に活用されています。そのため利用者は、すでに実用レベルにあるソフトウェアを入手し使用できます。このことでシステム全体の最低限の品質を確保し、検査工程を簡素化することができます。
・開発・配布の柔軟性が高い オープンソースソフトウェアは幅広い開発環境・実行環境に対応しています。そのため、ニーズに合わせてハードウェア構成やネットワーク構成を選定することができます。あわせて運用時のモジュール配布も実情に合わせて決めることができます。
・コスト削減が可能 オープンソースソフトウェアは、有償サポートを選択しなければ無償利用可能であることが多いです。そのため初期導入時も運用時も総じてコスト削減が可能となります。
オープンソースソフトウェアの注意点と制約事項
オープンソースソフトウェアはメリットばかりではなく、デメリットも多くあります。開発・運用時の注意点と制約事項になりえます。具体的には以下のデメリットがあります。
・自社経験の蓄積が活用できない これまで自社開発で培ったノウハウが活用されず、オープンソースソフトウェアで平準化された機能で実装することで、自社の差別化や技術蓄積が価値をなさなくなることがあります。
例えば、独自開発のCOBOL資産をオープンに移行と言ってもすぐできませんし、Javaへ移行可能と言ってもJavaの作法が理解できないと対処できないことになります。独自にライブラリー化した開発コードもオープンフレームワークの言語へ移行するとなると、その特性(性能面・機能面・運用面)を理解し1から作り直せざるを得ない場合もあります。
・オープン系開発体系のスキルが必要 オープンソースソフトウェアのスキルが求められるために、新たにオープン系開発体系のスキルが必要となります。また問題発生時の問い合わせ先も従来のベンダー問い合わせからコミュニティを活用し、自身の責任で対処することが求められます。
・障害発生時のリスクがある 有償サポートオプションが提供されるオープンソースソフトウェアはまだ良いですが、多くは自身で問題解析が必要となります。このことは通常動作時は影響ないものの、障害発生時のエスカレーションや解析作業において作業遅延や障害個所の特定ができない恐れがあります。コミュニティ頼みで作業を進めることで問題の再現性が低かったり、改修の期日が決められないこともあります。
・オープンソースライセンス準拠が求められる オープンソースソフトウェアにおいてもライセンスの考え方があります。具体的にはコピーレフトは著作権が保持されています。GNU GPLが代表的な例で、Apache License 2.0とGNU GPLv3が同等です。このほか修正BSD ライセンスやMIT ライセンスにも同様に規定があります。
このようにオープンソースソフトウェアのリスクや危険性を認識し、さらにソフトウェアを利用する前にライセンス条項を確認して適切な利用方法を遵守することが求められます。
Log4jの教訓
Log4jの脆弱性が報告された時、ソフトウェアがネットワーク接続された機器に影響を及ぼしたことから、多くの利用者は為す術がなく修正版の提供を待つのみでした。これはオープンソースソフトウェアの利便性と引き換えにセキュリティ品質に対して事前の手立てがたてられないのではないか?という疑問が上がりました。
その後も Log4jはいくつかの脆弱性報告がされ都度修正がされていますが、利用しているソフトウェア管理やセキュリティチェックの重要性を改めて気付かされた出来事です。 【参考】:Apache Log4j Security Vulnerabilities
そもそもLog4jとは?
Log4jとは、The Apache Software Foundationの開発したJavaベースのロギングサービスです。6つのログレベルがありカスタマイズも可能なため、システムの重要度に応じたイベントロギングを行う際に最適です。そのためサーバーのみならず組み込みシステムやストレージシステムでも利用されています。 【参考】:Apache Log4j 2
なぜ Log4jが問題になったのか?
脆弱性Log4Shell(CVE-2021-44228)が2021年12月9日に一般に公開されました。これはLog4jがLDAP(Lightweight Directory Access Protocol)とJNDI(Java Naming and Directory Interface)のリクエストをチェックしないことを利用し、任意のJavaコードを任意のサーバー・コンピュータ上で実行できてしまうものです。 【参考】:CVE-2021-44228 Detail
Log4jはロギングサービスとして標準的に用いられているオープンソースソフトウェアであるため、問題が深刻化しました。LDAPはローカルとリモートのURLオブジェクトを取得するもので、JNDIはJavaが参照するデータオブジェクトを検索します。そのため、任意のJavaコードがネットワークを通じて実行できてしまいます。
Amazon AWS・iCloud・Twitter等のクラウドサービスやソーシャルサービス、インテル・シスコ・ネットアップ等のハードウェア・チップベンダー、オラクル・Debian・Fedora等のソフトウェアベンダー等も対応に追われ、影響を公表しています。組み込みシステムやストレージシステムでもロギングの機能を標準搭載しているため数多くのベンダーが対応に追われました。
問題は判明しましたがソースコードを修正するGitHub登録メンテナーも少ないことが判明し、改修作業も時間が要しました。同様に利用者自体もパッチ適用や新たに発見された脆弱性に対応するために修正作業に追われたので、この10年で最悪の危険性の高い脆弱性とも言われています。実際に攻撃が成功しているサイトもあり、収束にはもう少しかかると見られています。
今後の動向
以上の経験からオープンソースソフトウェアの改修をただ単に待つことが良いのか議論がされています。Googleのブログではオープンソースソフトウェアをより安全に利用するためにできることは何か議論のきっかけとなりました。 【参考】:Making Open Source software safer and more secure
実際にGoogleは GOSST(Google Open Source Security Team)のスポンサーとなり、オープンソースソフトウェアのセキュリティ改善を進めた参加者を報奨金とともに表彰する活動をすすめています。 【参考】:Secure Open Source Rewards
またThe Linux Foundationのプロジェクトとして「Securing the open source ecosystem」が組織されオープンソースソフトウェアの利用広まる中、サイバーセキュリティを防ぐ安全性を高めるためのセミナー・トレーニング・ツール開発をすすめています。 【参考】:Securing the open source ecosystem 【参考】:The Linux Foundation
以上の流れから、今後も各団体から安全性確保の活動が報告されていくと考えられます。
オープンソースソフトウェアのメリットとデメリットを意識しましょう
オープンソースソフトウェアは簡単にソフトウェアを入手可能で、堅牢で実績あるソフトウェアスタックを短期間・低コストに構築することができます。しかしながらLog4jの脆弱性Log4Shellでは、改めてリスク管理とデメリットを含めたソフトウェア利用上の課題を認識させられました。
システムの安全性を高めるためにも、常に全体感のある判断と事前準備・対策を含めた運用設計を行いリスク低減を図っておくことをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから