Skip to main content
QUICK REVIEW

[論文レビュー] You Really Shouldn't Roll Your Own Crypto: An Empirical Study of Vulnerabilities in Cryptographic Libraries

Jenny Blessing, Michael A. Specter|arXiv (Cornell University)|Jul 11, 2021
Advanced Malware Detection Techniques参考文献 19被引用数 6
ひとこと要約

この実証的研究では、8つの主要な暗号ライブラリにおける300件以上の脆弱性を分析し、そのうち37.2%が暗号的欠陥ではなくメモリ安全問題であることが判明した。また、C/C++におけるコードの複雑さが脆弱性の主な要因であることも明らかになった。本研究では、暗号ソフトウェアの脆弱性発生率が非暗号システムよりも著しく高いことが示され、OpenSSLでは1,000行あたり最低1件の脆弱性が発生するなど、『自前で暗号を実装する』ことは極めて危険であることを裏付けた。

ABSTRACT

The security of the Internet rests on a small number of open-source cryptographic libraries: a vulnerability in any one of them threatens to compromise a significant percentage of web traffic. Despite this potential for security impact, the characteristics and causes of vulnerabilities in cryptographic software are not well understood. In this work, we conduct the first comprehensive analysis of cryptographic libraries and the vulnerabilities affecting them. We collect data from the National Vulnerability Database, individual project repositories and mailing lists, and other relevant sources for eight widely used cryptographic libraries. Among our most interesting findings is that only 27.2% of vulnerabilities in cryptographic libraries are cryptographic issues while 37.2% of vulnerabilities are memory safety issues, indicating that systems-level bugs are a greater security concern than the actual cryptographic procedures. In our investigation of the causes of these vulnerabilities, we find evidence of a strong correlation between the complexity of these libraries and their (in)security, empirically demonstrating the potential risks of bloated cryptographic codebases. We further compare our findings with non-cryptographic systems, observing that these systems are, indeed, more complex than similar counterparts, and that this excess complexity appears to produce significantly more vulnerabilities in cryptographic libraries than in non-cryptographic software.

研究の動機と目的

  • 広く使われている暗号ライブラリにおける脆弱性の根本的原因を実証的に評価すること。
  • 暗号ソフトウェアにおけるコードの複雑さと脆弱性頻度の関係を調査すること。
  • 暗号システムと非暗号システムの間での脆弱性発生率および特徴を比較すること。
  • 法執行警察機関向けの「例外的アクセス」メカニズムが暗号化に与えるセキュリティ的影響を評価すること。
  • 長年にわたり提唱されてきたセキュリティ原則「自前で暗号を実装すべきではない」を、データドリブンな根拠で裏付けること。

提案手法

  • National Vulnerability Database (NVD)、GitHubリポジトリ、メーリングリスト、バグトラッカーから8つの主要な暗号ライブラリの脆弱性データを収集した。
  • NVDの定義と手動ラベル付けを用いて、脆弱性の種別(例:暗号的、メモリ安全、リソース管理)を分類した。
  • コードベースのサイズとサイクロマティック複雑度を測定し、ソフトウェアの複雑さを評価し、脆弱性頻度と相関を分析した。
  • 脆弱性の発表からパッチリリースまでの期間を分析することで、脆弱性の有効利用期間を追跡した。
  • OpenSSL、GnuTLSなど暗号ライブラリの脆弱性発生率を、ウェブブラウザやOSコンponentsなどの非暗号システムと比較し、相対的なリスクを評価した。
  • LibreSSLとBoringSSLのフォークを事例研究として、ソースコードの削減が脆弱性削減に与える影響を分析した。

実験結果

リサーチクエスチョン

  • RQ1暗号ライブラリの脆弱性のうち、暗号的欠陥とシステムレベルの実装上の問題の割合はそれぞれどれくらいか?
  • RQ2サイズとサイクロマティック複雑度で測定されるコードの複雑さは、暗号ソフトウェアにおける脆弱性頻度とどのように相関するか?
  • RQ3暗号ライブラリにおける脆弱性発生率と有効利用期間は、非暗号システムと比べてどう異なるか?
  • RQ4OpenSSLのような主要な暗号ライブラリでは、1行あたりの脆弱性導入率はどの程度か?
  • RQ5LibreSSL や BoringSSL のように、フォークによるコードベースの縮小を図ることで、脆弱性の削減がどの程度実現可能か?

主な発見

  • 暗号ライブラリの脆弱性のうち、27.2%が暗号的問題に起因する一方、37.2%はメモリ安全またはリソース管理のバグに起因する。
  • 暗号ライブラリにおける脆弱性の中央値有効利用期間は4.18年であり、攻撃者が長期間にわたり攻撃可能な期間が存在することを示している。
  • OpenSSLでは、1,000行あたり最低1件の脆弱性が導入されており、非暗号ソフトウェアと比較して脆弱性発生率が最大3倍高い。
  • 暗号ソフトウェアは非暗号システムと比較して著しく高いコード複雑度を示しており、この複雑さと脆弱性頻度の間には強い相関が確認された。
  • LibreSSL や BoringSSL のようなフォークでは、ソースコードの削減と脆弱性の削減の間に線形関係が確認され、よりシンプルなコードベースはより安全であるという仮説を裏付けた。
  • 本研究は、複雑さが暗号的設計欠陥よりも暗号ソフトウェアにおけるセキュリティ脅威として大きな要因であることを実証的に示し、『自前で暗号を実装すべきではない』という原則を強化した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。