イベント・セミナー2022 13

ISRGが推進するメモリーセーフなソフトウェアを増やすための地道なプログラムProssimoを紹介

重要なOSSをメモリーセーフに書き変えるプロジェクトのProssimoを紹介する。

松下 康之 - Yasuyuki Matsushita

2022年8月26日 6:00

非営利団体のISRG(Internet Security Research Group)が推進するメモリーセーフなソフトウェアを社会に拡大するための支援プログラム、ProssimoについてISRGのコミュニケーション担当のVP、Sarah Gran氏にインタビューを行った。ISRGはLet's Encryptの開発元としても知られている。

ISRG、VP of CommunicationのSarah Gran氏

ISRG、VP of CommunicationのSarah Gran氏

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つの特性を持っていることが重要だと考えています。

  1. 広く使われていること(多くのサーバーやクライアントで利用されていること)
  2. ネットワークの境界周辺で稼働していること
  3. パフォーマンスが重要であること
  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というわけですね。

ProssimoのHPより抜粋。OpenSSLをRustで書き直すRustlsのほか、Linux Kernelも進行中

ProssimoのHPより抜粋。OpenSSLをRustで書き直すRustlsのほか、Linux Kernelも進行中

そうです。単に寄付するだけではなく、寄付を出す側にとってみれば出したお金がどうやって使われているのかをハッキリと把握できるのです。

メンテナーが新たにRustを学んで自分でやるというのではなくISRGが認めた経験のあるプログラマーが担当するという意味で非常に具体的だし、わかりやすいですね。

メモリーセーフなソフトウェアに関心を寄せている企業にとってみれば、個別のイニシアティブに寄付をすることもできますし、寄付先を限定せずに寄付を行ってもらい、使い方をISRGに任せてもらうこともできます。

具体的に誰が書き直すのかがわかるというのは良いことですね。

そうです。オープンソースソフトウェアはどうしても匿名性という特徴を持ってしまいがちです。でも直す側のプログラマーが誰なのか? が明らかになることで、そのプログラマーにとっても評判を上げることもできますし、オープンソースプロジェクト側でも実際に誰がどれだけ貢献しているのかを棚卸しできると思います。単にメモリーセーフになるだけではなく、さまざまな側面で効果が出ると思います。

Prossimoの公式ページ:https://www.memorysafety.org/

インターネットの土台となる部分に使われているオープンソースソフトウェアは多数存在する。どれもがそれぞれの生い立ちとコミュニティ、開発の歴史を持ち、バグへの取り組み方もさまざまだ。しかしMicrosoftが2019年に明らかにしたように、70%にも及ぶ脆弱性がメモリーセーフ関連のバグであることを考えると、Prossimoのように具体的にターゲットを定めて確実にメモリーセーフなコードに変えていくという努力はもっと知られるべきだろう。

参考:Microsoftのブログ:We need a safer systems programming language

「単にカンファレンスのスライドやホワイトボードに『メモリーセーフなソフトウェアが重要』と書くだけでなく、実際に書き換えるのが私たちのやりかた」と語ったGran氏だが、寄付を行った企業からのコメントが欲しいというリクエストにも向き合ってくれることを約束してくれた。今後、GoogleやAWSからのコメントが取れ次第、あらためて報告したいと思う。

この記事のキーワード

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る