オープンソースの暗号ライブラリである「OpenSSL」のパッチが公開された場合、そのパッチは早急に適用する必要がある。しかし、米国時間9月22日に公開されたパッチにはOpenSSLをクラッシュさせ、サーバへの侵入を許してしまいかねない、初歩的なバグが混入していた。
OpenSSLは、確実に機能すればインターネットのセキュリティを強化するうえで欠かせない役割を果たしてくれる。しかし想定通りに機能しなければ、金庫の扉を開け放ち、データの流出を招くことになる。
提供:CNET
OpenSSLは、SSL/TLSプロトコルを実装するために、TwitterやGitHub、Yahoo、Tumblr、Steam、Dropboxなどの多くの有名ウェブサイトで使用されている。
またOpenSSLは、ウェブサイト以外でも使用されている。このライブラリは、オープンソースの仮想プライベートネットワーク(VPN)実装「OpenVPN」や、セキュアなログイン機能とターミナル機能を提供する「OpenSSH」でも使用されている(ただ、OpenSSHの最近のバージョンでは「LibreSSL」かOpenSSLのいずれかを選択できる)。
要するに、セキュアなサーバを稼働させているのであれば、OpenSSLを使っている確率は高い。
9月22日のパッチにバグが混入した原因は、プログラミング上の単純なミスだった。「OpenSSL 1.1.0a」に作り込まれた問題は、深刻度が最高レベルの「Critical」に分類されている。その詳細として「約16kバイトを超えるメッセージを受け取った場合、受け取ったメッセージを格納する大元のバッファが再割り当てされ、別な場所に移動される。しかし残念なことに、古い格納位置を参照したままの、いわゆるダングリングポインタが残っている結果、解放領域に対する書き込みが発生する。これにより、たいていの場合はクラッシュが引き起こされるものの、任意のコードの実行につながる可能性もある」という説明がOpenSSLのページに記されている。
OpenSSL 1.1.0を使用しているユーザーは、今すぐ「OpenSSL 1.1.0b」にアップデートするべきだ。
22日に公開された「OpenSSL 1.0.2i」にも、さほど重大でないとはいえ問題が作り込まれていた。OpenSSL 1.1.0系列では証明書失効リスト(CRL)のサニティチェックを含むバグ修正が追加されていたものの、OpenSSL 1.0.2iではそれが省略されている。その結果、OpenSSL 1.0.2iでCRLを使用しようとした場合、nullポインタ例外でクラッシュが引き起こされるようになっていた。
このため、OpenSSL 1.0.2iを使っているユーザーは、今すぐ「OpenSSL 1.0.2j」にアップデートするべきだ。
ことOpenSSLに関する限り、パッチはすぐに適用するべきだ。サーバ内でセキュリティを必要とするほとんどすべてのものがOpenSSLに依存している以上、ドアを開けっ放しにしておくわけにはいかない。
とはいえ、OpenSSLのプログラマーであれば品質を第1に考えるようにしてもらいたいものだ。人間誰でも過ちはしでかすが、22日のパッチで作り込まれたダングリングポインタやnullポインタといった単純なミスを見せられると、OpenSSLの代替製品を検討する必要があるのではないかと考えさせられる。
OpenSSLの代替としては、Amazon Web Services(AWS)の「s2n」や、LibreSSL、「wolfSSL」が検討に値するだろう。OpenSSLに関する最近の脆弱性報道を見る限り、セキュアなインターネットというのは、OpenSSLだけに任せておくにはあまりにも大きなテーマだと言える。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。