海の向こうの“セキュリティ”

「FOSS」に貢献している人の多くはセキュリティに関わることに消極的?

フリー/オープンソース・ソフトウェア開発者の実態調査

フリー/オープンソース・ソフトウェア開発者の実態調査

 2014年4月に明らかになったOpenSSLの脆弱性「Heartbleed」をきっかけに、オープンソースのセキュリティに関するさまざまな取り組みがなされるようになって来ている中、Linux Foundationと米ハーバード大学の研究者らは、フリー・ソフトウェアとオープンソース・ソフトウェア(Free and Open Source Software、以降FOSS)のセキュリティおよび持続可能性を改善する最善の方法を特定することを目的に、FOSSの開発者をはじめとする、FOSSに貢献している人々に関する実態調査を行いました。

 この調査は、最も広く使われているFOSSのプロジェクトに貢献している人々と、そのような限定なしにFOSSに貢献している人々の2つのグループに対して行われています。ここでいう「最も広く使われているFOSSのプロジェクト」とは、Linux Foundationとハーバード大学の研究者らが2020年2月に発表した調査結果に基づいています。

 今回の調査結果を簡単にまとめてしまうと、FOSSに貢献している人の多くは、脆弱性の修正などのセキュリティの必要性を認識しているものの、実際に自分がセキュリティに関わることに対しては消極的で、中にはセキュリティを「魂を枯れさせる雑用(soul-withering chore)」「耐えがたいほど退屈な手続き上の障害(insufferably boring procedural hindrance)」とまで考えている人が存在する実態が明らかになっています。

 この結果は非常に残念ではありますが、驚くものではありません。そもそもFOSSに貢献しようと考える人の多くは、何か新しいものを生み出すことに強い関心があるものであり、脆弱性の修正をはじめとするセキュリティというもの全般に対して、そのような「創造性」を見い出せない人がいるのも仕方のないことではあります。もちろん、セキュリティにも十分に創造性はあるのですが、それはなかなか理解してもらえていないのが現実ですし、例えば、見つかった脆弱性を丁寧に修正する作業を「ワクワクして楽しめる」人はそう多くはいないでしょう。

 このように、セキュリティの観点では残念な実態が明らかになってしまったのですが、それでも調査結果からは改善に向けた鍵となるポイントがいくつか得られています。

 今回の調査では、回答者の約75%がフルタイムで雇用されており、また約半数がFOSSへの貢献を「有給で」行っていることが明らかになっています。これらの点を踏まえ、調査から得られた鍵となる 4つのポイント を挙げるとともに、それぞれのポイントに対応するアクションが提案されています。なお、これらのアクションの提案先は、FOSSプロジェクトそのものに限らず、FOSSの貢献者を雇用している、または雇用する可能性のある企業や組織、さらに、FOSSプロジェクトに何らかの支援をしている、または支援を検討している企業や組織、人など、広範囲に渡っており、極端に言えば「世の中」に対する提案とも言える内容となっています。意図的に理想主義に走っているようなところもありますが、それでも参考になる部分はあるでしょう。

1. 貢献者の動機のトップ3は非金銭的なものである(必要とされる機能や修正を追加すること、学びを楽しむこと、創造的で楽しい仕事をしたいとのニーズを満たすこと)。

[提案アクション]

(1)従業員がFOSSに貢献することで得られる知識とスキルの価値を認識する。

(2)新しい貢献者の学習プロセスをサポートする。例えば、全てのオープンソースプロジェクトのベストプラクティスに関するプロジェクトデモや教材、無料のコースを提供する。

(3)全ての貢献者のための創造的なタスクと日常的なタスクのバランスをとり、やりがいのある充実した経験を通じて継続的な関与を促進する。

(4)FOSSプロジェクトに経済的支援を行う際には、貢献者への金銭的支払い以外の支援オプション(例:セキュリティ監査、コンピューティング資源、出張)を検討する。

2. FOSSのセキュリティにもっと力を注ぐ必要があるのは明らかだが、その負担を貢献者だけにかけるべきではない。

[提案アクション]

(1)重要なFOSSプロジェクトのセキュリティ監査に資金を提供し、その監査によって特定のマージ可能な変更を行うことを要求する。

(2)よりセキュアな成果を明確に得るために、脆弱性を生みやすいFOSSプロジェクトの一部またはコンポーネント全体を書き換える(例:メモリセーフな言語での書き換えに貢献する)。

(3)セキュアなソフトウェア開発のベストプラクティスに優先順位をつける。

(4)企業は、セキュアなソフトウェアの開発トレーニングを、有給のFOSS開発者の採用または継続的な専門能力開発の要件にすべきである。

(5)プロジェクトとその貢献者がセキュアなソフトウェアの開発プラクティスを発展させ、且つ維持することを奨励するために、バッジングプログラム、メンタリングプログラム、および尊敬されるFOSS貢献者の影響力を利用する。

(6)継続的インテグレーション(CI)パイプラインの一部として(理想的にはデフォルトのコード管理プラットフォームの一部として)セキュリティツールと自動テストをプロジェクトに組み込むことを奨励する。

3. より多くの貢献者が雇用主から報酬を得て貢献するようになってきているので、利害関係者は企業とプロジェクトの利益のバランスを取る必要がある。

[提案アクション]

(1)透明性を高め、且つFOSS全般および特定のFOSSプロジェクトへの数年間に渡る支援を明確に約束することで、FOSSプロジェクトへの企業の関与に対する懸念を和らげる。

(2)有給の貢献者が新しいボランティアの貢献者を指導するために時間を割くように奨励する。

(3)組織の多様性と統制を確保するためにFOSSプロジェクトを中立的なガバナンスを持つ財団に移管する。

4. 従業員のFOSSへの貢献に対する企業支援の積極的なトレンドを強化する。

[提案アクション]

(1)従業員がFOSSプロジェクトにいつ、どのように貢献できるかに関するポリシーを明確にし、そのポリシーを従業員に見えるようにして、従業員がプロジェクトに参加することを奨励する。

(2)FOSSプロジェクトのセキュリティ改善への貢献を、従業員個人による直接の関与もしくはOpen Source Security Foundation (OpenSSF) のような協同的取り組みのいずれかを通じて推進する。

 なお、Open Source Security Foundation (OpenSSF) はLinux Foundationが中心となって2020年8月に設立を発表した団体で、オープンソース・ソフトウェアのセキュリティ向上を目的とした業界の取り組みを統合するものです。

男性が圧倒的大多数、国・地域別では米国の多さが際立つ

 今回の調査ではセキュリティに限らず、回答者の属性についても調べています。この連載の趣旨からは少し外れますが、興味深い点をいくつか紹介します。

 まず、年齢と性別をまとめたのが以下の図です。圧倒的大多数が男性であることが分かります。驚くような結果ではないですが、2020年になってもいまだにここまでの極端な偏りがあるというのは残念です。

 居住している国や地域をまとめたのが以下の図です。米国の多さが際立っています。

 さらに、雇用元の業種をまとめたのが以下の図です。当然ながら、いわゆる「IT系」が多い一方、金融や教育、ヘルスケアなどさまざまな業種が含まれています。

 雇用の形態をまとめたのが以下の図です。フルタイムが74.87%であるのに対し、自営業やフリーランスは9.11%となっています。

 一方、FOSSへの貢献に対して、給与など、何らかの報酬を得ている割合は以下の通り。トータルでは半数以上の51.65%が何らかの報酬を得ていることが分かります。

現在の雇用主から得ている48.7%
他の関係者から得ている2.95%
雇用契約上もらえない4.33%
その他の理由でもらっていない44.02%

 FOSSで報酬を得ている割合を国別で示したのが以下の表です。

FOSSで報酬を得ている回答者の割合全回答者数
米国63.8%174
ドイツ58.7%75
フランス37.1%35
英国42.9%28
カナダ57.1%21
オランダ75.0%20
インド15.8%19
中国29.4%17
オーストリア63.4%11
ブラジル45.5%11
日本45.5%11
オーストラリア30.0%10
その他43.5%145

 サンプル数が少ないので統計的な意味はあまりないですが、それでもオランダの割合の高さは目を引きます。なお、業務の一部としてFOSSに貢献することを雇用主が推奨している割合は全体の57.51%となっていますが、回答者はフルタイムで雇用されている人に限定されていないことに注意が必要です。

 ほかにも、FOSSプロジェクトで使われている言語について調べた結果も掲載しています。これは回答者が貢献しているプロジェクトを最大5つまで挙げてもらい、それらのプロジェクトで使われている言語をまとめたものです。

 まず「最も広く使われているFOSSのプロジェクト」に貢献している人たちに限定した結果は以下の通り。

言語プロジェクト数
Java351
JavaScript275
C#146
Scala94
C++83
TypeScript81
Python64
Go62
C50
Shell35
Ruby26
HTML21
PHP14
Kotlin14
Haskell13
Rust9

FOSSに貢献している人たち全般に対するオープンな調査の結果は以下の通り。

言語プロジェクト数
C335
Python221
C++134
Go126
JavaScript109
Java106
Shell70
PHP40
HTML31
Rust25
Typescript22
Ruby21
C#16
Perl14

 今回の調査では、「最も広く使われているFOSSのプロジェクト」に貢献している人たちに限定した場合と限定しない場合とで分けて分析をしており、基本的に両グループの回答に大きな違いはなかったそうなのですが、使用している言語については明確な違いが出ており、特にJavaとJavaScriptで顕著であることが分かります。

 一方、Microsoftの調査によれば、2006年から2018年までに公開された全ての「セキュリティバグ」のうち70%はメモリの扱いに関する問題であることが分かっています。そこで、いくつかのプロジェクトではメモリセーフな言語で書き直すことで、バッファオーバーフローや二重解放の類の脆弱性を生まないようにする動きも見られており、例えば、MozillaのFirefoxの一部がRustで書き直されていることを紹介しています。

 今回の調査の本来の目的はFOSSのセキュリティと持続可能性の改善の鍵を見つけ出そうというものでしたが、実際の調査内容はセキュリティや持続可能性に限定しない幅広いもので、なかなか興味深く、しかもAppendixに元々の調査項目と回答結果のデータやグラフなど、報告書本文にはない詳細な情報も掲載されています。さまざまな形で使える貴重なデータとしてうまく活用してください。

山賀 正人

CSIRT研究家、フリーライター、翻訳家、コンサルタント。最近は主に組織内CSIRTの構築・運用に関する調査研究や文書の執筆、講演などを行なっている。JPCERT/CC専門委員。日本シーサート協議会専門委員。