ハートブリードバグは、数百万のウェブサイトで利用される人気のOpenSSL暗号ライブラリに存在する重大な脆弱性です。しかし、このバグとは何であり、どのようにしてハッカーから守ることができるのでしょうか?
本記事では、ハートブリード脆弱性について知っておくべき情報を網羅的に解説します。脆弱性の内容、その危険性、ウェブサイトが影響を受けているかの確認方法、そして今後の攻撃から守る方法について説明します。
ハートブリードバグにより、誰でもサーバのメモリを読み取り、そのデータを抽出できるようになります。攻撃者はこの脆弱性を利用して、ウェブサイトからパスワード、クレジットカード情報、その他の機密情報を盗む可能性があります。これは、ハッカーがコンピュータの重要なデータに不正にアクセスする手口と考えることができます。
ハートブリードバグは、最新のウェブアプリに影響を与える重大な脆弱性です。2014年末から存在していましたが、2016年4月にハッカーによって広く知られるようになりました。オープンSSLのバグとして知られており、ほぼ全てのウェブサイトに影響を及ぼしています。
この用語に不慣れな場合、次の点を押さえておくと良いでしょう。インターネットは数十億のサーバやウェブサイトで構成され、それぞれのネットワークインターフェースを通じて互いに接続されています。例えば、Facebookを訪れると、ブラウザはそのサイトのIPアドレスを識別子として接続します。しかし、Facebookを経由して別のサイトにアクセスすると、ハッカーは最初のサイトと次のサイトの両方に気付かれずアクセスすることが可能になります。つまり、CDNやプロキシサーバといった直接または間接的な接続によってリソースを共有する、接続が十分でないウェブサイトやアプリはリスクに晒されるのです。
たった1行のコードによって、犠牲者の情報がハッカーに漏れる脆弱性が生じています。
memcpy(bp, pl, payload);
以下、このコードの各部分について解説します:
上記のコードは、ドイツの開発者Robin Seggelmanがオープンソースツールに追加したもので、‘payload’フィールドの入力により指定されたデータ量の制限を設けていません。関数がplとpayloadのサイズを比較しないため、悪意ある者が犠牲者が意図していない以上のデータにアクセス・複製することが可能となります。
このOpenSSLの問題は、GoogleのNeel Mehta氏とフィンランドの企業Codenomiconによって明らかにされました。
ウェブサイトやアプリがハートブリードに脆弱な場合、ネットワークインターフェースへの不正アクセスによってハックされる恐れがあります。結果として、パスワードやクレジットカード情報などの個人情報が盗まれる可能性があります。多くのサイトやアプリでは既にこの脆弱性が修正されていますが、それでも一部のオープンサーバには依然としてリスクが残っています。
ハートブリードの影響は広範囲に及び、ほぼ全てのウェブサイトが影響を受けています。多くのサイトが被害に遭い、各ベンダーから脆弱性が指摘されているため、セキュリティ面で信頼できる相手を見極めるのは困難です。
OpenSSLは世界中で広く利用されており、ハートブリード問題が発覚した際、グローバルに多くのユーザーが動揺しました。調査の結果、この著名なライブラリはわずか2名の維持者によって管理され、ソフトウェアの保守予算も極めて限られていたことが判明しました。
この事態は、OpenSSLおよびオープンソースコミュニティに対して、次の2つの前向きな影響をもたらしました。
僅か2名が自らの収入と貯蓄を投じ、OpenSSLの維持に努めていました。この出来事は、世界中の技術愛好家に対して、オープンソースプロジェクトへの経済的支援の重要性を認識させる契機となりました。一方、営利目的の開発組織は、開発やセキュリティのリソースを通じてこれらのプロジェクトを支援するようになりました。
ハートブリードの影響を受け、LinuxはCore Infrastructure Initiative(CII)という取り組みを開始しました。プロジェクトの重要性に応じて、CIIは助成金やその他の支援を提供し、このプログラムは業界有数の企業から寄付を受けています。
前向きな面がある一方で、否定的な側面も存在しました。次の見出しで詳しく解説します。
ハートブリードは、2014年にCodenomiconによって発見されただけでなく、Googleのチームもこの問題を認識し、OpenSSLチームに対して私的に懸念を伝えていました。しかし、Codenomiconは問題を公表する道を選び、さらにこれをビジネスのプロモーションの機会として活用しました。
その手法の成功を受け、さまざまな企業や個人が同様に脆弱性情報を公開する流れに乗りました。しかし、この方法が開発者にとって大きな負担を与え、悪意ある者に漏洞を突かれるリスクを高めるものであることに、多くの人は気づいていませんでした。
時には、企業や個人が検出した脆弱性を重大な発見として公表し、一般に不安を呼び起こすことで、製品の所有者や開発者に問題を引き起こすこともあります。
サイバー犯罪者が巧妙であり、開発者や専門家の負担が大きい現状において、このような広報活動はセキュリティ専門家や開発者にとって深刻な問題を生むため、より責任ある対応が求められます。
OpenSSLにハートブリード脆弱性をもたらしていた上記のコードは、2014年4月にアプリの更新版1.0.1gがリリースされたことで修正されました。その後、以降の全バージョンに修正済みのコードが含まれており、古いOpenSSLを利用している場合は、1.0.1g以降のバージョンへアップグレードすることで問題が解決されます。
好奇心からハートブリード修正内容を確認したい場合、容易に確認できます。何しろOpenSSLはオープンソースで誰でも利用可能です。以下をご覧ください:
/* It begins with reading data’s type & the length of payload*/
if (1 + 2 + 16 > s->s3->relent)
return 0;
/* Discards, if values do not match */
hbtype = *p++;
n2s(p, payload);
if (1 + 2 + payload + 16 > s->s3->rrec.length)
return 0;
/* silently discard per RFC 6520 sec. 4 */
pl = p;
このコードはまず、リクエストの長さが0 KBであるか確認し、該当する場合はリクエストを破棄してハートブリードの発生を防いでいます。次に、payloadの長さが実際のソースと一致しているか、必要以上のデータにアクセスしようとしていないか確認します。
ハートブリードバグは長年存在しており、その背景には十分な理由があります。では、この脆弱性からどのように守ればよいのでしょうか?
まずはソフトウェアを最新の状態に更新することが基本です。Internet Explorer、Firefox、Chromeを利用している場合は、できるだけ早く更新してください。Safariをご利用の場合も、最新版へのアップデートをおすすめします。
また、パスワードは定期的に変更し、各サイトで異なるものを使用することも有効です。こうすることで、1つのサイトでハートブリードによってアカウントが侵害された場合のリスクを軽減できます。
もしウェブサイトがハッカーに侵入された疑いがある場合は、直ちにセキュリティ担当へ連絡し、不審なメールやメッセージ内のリンクはクリックしないよう注意してください。
最新の動向として、Facebookはウェブサイト上から脆弱性を除去し、Firefoxと協力してブラウザ設定の変更に取り組んでいます。また、Yahooは5月9日にバグ修正のアップデートをリリースすると報告しました。ただし、他のサイトにおいては完全な解決策が未だ実現されていません。
ハートブリード脆弱性は、SSL証明書の更新、パスワード変更、またはウェブサイトのURL変更により対処できます。
最新情報を購読