ISRGが推進するメモリーセーフなソフトウェアを増やすための地道なプログラムProssimoを紹介
非営利団体のISRG(Internet Security Research Group)が推進するメモリーセーフなソフトウェアを社会に拡大するための支援プログラム、ProssimoについてISRGのコミュニケーション担当のVP、Sarah Gran氏にインタビューを行った。ISRGはLet's Encryptの開発元としても知られている。
Prossimoプロジェクトの背景を教えてください。
これはISRGもLet's EncryptもファウンダーのJosh AasがMozillaで体験したことがベースになっています。それはフラストレーション(不満)なんですね。つまりHTTPSを始めとするセキュアなソフトウェア、サービスが世の中に拡がっていないという思いから始まっています。Let's Encryptも始めた当初は、そんなサービスは必要ないとか続かないと言われました。しかしセキュアな通信のためのサービスである認証局は当たり前のものになりました。でもまだ足らないと思います。私はLet's Encryptが発表されたすぐ後にISRGに参加しましたが、その頃からセキュアなソフトウェアを世の中に拡げたいという気持ちは変わっていないですね。
今回のプロジェクトについて教えてください。
Prossimoというプロジェクトになります。このProssimoという名前はイタリア語で「次に」という意味ですが、これは、世界中に存在するインフラストラクチャーを担う重要なオープンソースソフトウェアをメモリーセキュアなコードに変えていくための具体的な行動を支援するものです。どう具体的かと言うとCやC++で書かれたオープンソースソフトウェアの中のコードをRustに置き換えるための作業を行います。そのためにRustのコードを書けるプログラマーとISRGが契約を交わして、対象となるオープンソースソフトウェアのメンテナーと協議の上でプログラマーを派遣し書き換えの作業を進めるということなります。つまり従来のCでコードを書いていたプログラマーはRustを学ぶ必要はなく、経験のあるRustプログラマーが実際の作業を行うというやり方です。また全部を一気に書き換えるというのではなくモジュラー式に必要な部分を少しずつ書き換えるというやり方ですね。
このプロジェクトの対象となるソフトウェアのクライテリアは?
このプロジェクトの目的はミッションクリティカルなソフトウェア、特にインターネットで使われているソフトウェアをメモリーセーフにすることですが、その効果を最大化するためには以下の4つの特性を持っていることが重要だと考えています。
- 広く使われていること(多くのサーバーやクライアントで利用されていること)
- ネットワークの境界周辺で稼働していること
- パフォーマンスが重要であること
- メモリーセーフではない言語(CやC++)で記述されていること
この4つの特性を持つオープンソースソフトウェアであれば、Prossimoのスコープに入ると思います。すでに具体的なイニシアティブが進んでいて、OpenSSLをRustで書き換えるRustlsのほか、DNS、NTP、curlなどが実際に進行中です。Open Source SummitのキーノートでLinus Torvaldsが言っていたLinuxのカーネルのRustサポートについてもメンテナーであるMiguel Ojedaが活動を行っています。
参考:LinuxカーネルにおけるRustサポート:Memory Safety for the World’s Largest Software Project
各イニシアティブを見ると具体的なワークプランが提示されています。またスポンサーとしてGoogleやAWSの名前が確認できますね。この辺りをもう少し説明してください。
インターネットの重要な部分を担っているソフトウェアであっても、実際には数人のプログラマーが自分の仕事とは別に余っている時間などを使ってメンテナンスしているということがとても多いことは知っていると思います。このプロジェクトは単にコードを書き換えるという直接的な効果だけではなく、「誰がそのソフトウェアをメンテナンスしているのか?」「それを誰がRustで書き直すのか?」というこれまで匿名な形で一般の人の眼には触れない形になっていたものを明らかにするという効果もあります。
対象となるソフトウェアのメンテナーが誰で、どういう日程で誰が書き直すのか?というワークプランを示すようにしています。これによってドネーションを行う企業は自分たちが捻出したお金がどうやって使われているのか、誰がコードを書き直すのか、を知ることができます。
既存のOpen Source Security Foundation(OpenSSF)などとは別に、複数のオープンソースソフトウェアについて個別にRustへの書き換えを促すというのがProssimoというわけですね。
そうです。単に寄付するだけではなく、寄付を出す側にとってみれば出したお金がどうやって使われているのかをハッキリと把握できるのです。
メンテナーが新たにRustを学んで自分でやるというのではなくISRGが認めた経験のあるプログラマーが担当するという意味で非常に具体的だし、わかりやすいですね。
メモリーセーフなソフトウェアに関心を寄せている企業にとってみれば、個別のイニシアティブに寄付をすることもできますし、寄付先を限定せずに寄付を行ってもらい、使い方をISRGに任せてもらうこともできます。
具体的に誰が書き直すのかがわかるというのは良いことですね。
そうです。オープンソースソフトウェアはどうしても匿名性という特徴を持ってしまいがちです。でも直す側のプログラマーが誰なのか? が明らかになることで、そのプログラマーにとっても評判を上げることもできますし、オープンソースプロジェクト側でも実際に誰がどれだけ貢献しているのかを棚卸しできると思います。単にメモリーセーフになるだけではなく、さまざまな側面で効果が出ると思います。
Prossimoの公式ページ:https://www.memorysafety.org/
インターネットの土台となる部分に使われているオープンソースソフトウェアは多数存在する。どれもがそれぞれの生い立ちとコミュニティ、開発の歴史を持ち、バグへの取り組み方もさまざまだ。しかしMicrosoftが2019年に明らかにしたように、70%にも及ぶ脆弱性がメモリーセーフ関連のバグであることを考えると、Prossimoのように具体的にターゲットを定めて確実にメモリーセーフなコードに変えていくという努力はもっと知られるべきだろう。
参考:Microsoftのブログ:We need a safer systems programming language
「単にカンファレンスのスライドやホワイトボードに『メモリーセーフなソフトウェアが重要』と書くだけでなく、実際に書き換えるのが私たちのやりかた」と語ったGran氏だが、寄付を行った企業からのコメントが欲しいというリクエストにも向き合ってくれることを約束してくれた。今後、GoogleやAWSからのコメントが取れ次第、あらためて報告したいと思う。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- LFとOpenSSF、OSSのセキュリティを向上させる具体的な計画を日本で発表
- RustNL 2024からデータ圧縮ライブラリーzlibをRustで書き直したプロジェクトのセッションを紹介
- Open Source Summit NA 2022開催。Googleが解説する持続可能な信頼できるOSSのためのキュレーターとは?
- GoogleがAndroidの開発にRustを使った事例を解説するRust Dayを開催
- DropboxがコアサービスをRustで書き換えた背景とは
- Open Source Leadership Summit開催 「ホールウェイトラック」が一番人気?
- 高速でメモリーセーフなプログラミング言語、Rustの特徴を紹介
- Rustで書かれたKubernetesのためのWASM実行環境Krustletとは?
- 日立のOSSコントリビュータに訊いた組織のあり方と失敗談
- Microsoftの年次イベントBuild 2020でメモリーセーフなプログラミング言語Rustを紹介