OpenSSL の脆弱性であるCVE-2022-0778の各UTM/IPS/WAFの対応状況とCVE-2022-0778を未然に発生させずに防げたのかの考察を投稿します。
Overview Mitigations list(UTM/IPS/WAF)
※本記事の内容は、2022年6月8日現在の公開情報をもとに記載しております。
お使いの製品でIPS機能等が利用できるライセンスであるか、シグネチャ等のアップデート方法や具体的な検知・防御の設定方法については 購入元の代理店様や運用・保守ベンダー様へお問い合わせください。
CVE-2022-0778の概要
2022年3月15日、OpenSSLプロジェクトの発表 [1]によると、 CVE-2022-0778はOpenSSLで使用されている関数であるBN_mod_sqrtに特定の値を渡すと無限ループを引き起こす脆弱性です。
CVE-2022-0778の影響度は、
OpenSSLプロジェクトではHigh [1]、
NVDが算出したCVSS Version 3.xでは7.5Highとなっています [2]。
インターネットのように信頼できない通信路で情報の伝送を行う場合は、暗号プロトコルが用いられています。
標準的に利用されている暗号プロトコルであるSSL/TLSの機能を実装したOpenSSLがあります。 OpenSSLは、サーバ証明書のSSL証明書を用いています。
サーバ証明書とは、「通信の暗号化」「Webサイトの運営者・運営組織の実在証明」の2つの役割をもつ電子証明書です。 SSL証明書は、解析と署名の検証を行います。 楕円曲線などのSSL証明書の解析にBN_mod_sqrt関数が用いられています。
証明書の解析は証明書の署名の検証前に行われます。
そのため、外部から提供された証明書を解析するプロセスはBN_mod_sqrt関数が用いられるため、
特定の値を渡すと無限ループを引き起こす可能性があります。
OpenSSLの無限ループによる被害として、 CVE-2022-0778を用いたDoS攻撃(サービス拒否攻撃)の対象となる可能性があります。
OpenSSLの無限ループによる被害は次の状況で起こる可能性があります。 [3]
- TLS クライアントがサーバ証明書を処理する
- TLS サーバがクライアント証明書を処理する
- ホスティングサービス事業者が顧客から受け取った証明書や秘密鍵を処理する
- 認証局が契約者から受け取った CSR (証明書署名要求) データを処理する
- その他、ASN.1 形式の楕円曲線パラメータを処理する場合
補足として、この脆弱性は2022年2月24日にGoogle社のTavis OrmandyによってOpenSSLに報告されました。 Awesome!
OpenSSLのバージョンアップについて
CVE-2022-0778の影響範囲は、 OpenSSLプロジェクト [1]によるとOpenSSLのバージョン1.0.2, 1.1.1, 3.0、
NVDによると [2] OpenSSLのバージョン1.0.2-1.0.2zc, 1.1.1-1.1.1m, 3.0.0,3.0.1です。
CVE-2022-0778は、OpenSSLのバージョンを2022年3月15日にリリースされた1.1.1nと3.0.2で対処されました。
補足として、修正プログラムはGoogleのDavid Benjamin氏とOpenSSLのTomáš Mráz氏によって開発されました。 Awesome!!
OpenSSL 1.0.2 のユーザーは 1.0.2zd へのアップデートが推奨されています。 OpenSSL 1.0.2 はサポートが終了していますが、プレミアムサポートであれば延長サポートを受けることができるそうです [4]。 OpenSSL 1.0.2 では、証明書の最初の解析時に公開鍵が解析されないため無限ループが若干発生しにくい状態です。 しかしながら、 証明書から公開鍵を必要とする操作は、無限ループを引き起こすことになります。 特に、攻撃者は自己署名された証明書を使用して、証明書の署名の検証中にループを引き起こすことが可能となっています [1]。
OpenSSL 1.1.0 のユーザーはサポートが終了し、いかなる種類のアップデートも受けられないそうです。 OpenSSL 1.1.0 のユーザーは、まずOpenSSL 3.0またはOpenSSL 1.1.1にアップグレードしてからOpenSSL 1.1.1n またはOpenSSL 3.0.2へのアップデートが推奨されています。
OpenSSL 1.1.1 のユーザーは 1.1.1n へのアップデートが推奨されています。
OpenSSL 3.0 のユーザーは3.0.2 へのアップデートが推奨されています。
各UTM/IPS/WAF/ファイアウォールの対応状況について
Palo Alto Networks, Fortinet, F5 Networks, Sonicwall, A10 NetworksのCVE-2022-0778の影響範囲の製品と影響範囲内の製品に対する対策について紹介します。
Palo Alto Networks
影響範囲内の製品が多いため、Palo Alto Networks Security Advisoriesにてご確認ください 5。
Palo Alto Networks製品のCVE-2022-0778対策として影響範囲内の製品のバージョンアップが推奨されています。
現在(2022/06/08)対応するシグネチャは以下のシグネチャです。
- OpenSSL Elliptic Curve Public Key Handling Denial-of-Service Vulnerability(Unique Threat ID:92522, 92409, 92411)
筆者は、影響範囲内の製品のバージョンアップ以外の対策として以下の対策を考えました(未検証)
- Dos Protectionを用いた社内・社外のDoS攻撃の検知を行い、DoS攻撃元の証明書をブロックリストに登録
- EV(Extended Validation) SSL証明書のみ許可をする
もしPaloAltoが CVE-2022-0778を用いた攻撃を受けた時のログ(Unique Threat ID:92522)は、 SeverityはHigh、Threat Vulnerability SignaturesのCategoryはdosとして検出されます [6]。
PAN-OS
PAN-OS 8.1.23, PAN-OS 9.0.16-h2, PAN-OS 9.1.13-h3, PAN-OS 10.0.10, PAN-OS 10.1.5-h1, PAN-OS 10.2.1, それ以降のすべての PAN-OS バージョンで修正されています。
GlobalProtect アプリ
2022年5月5日に提供を発表された、GlobalProtectアプリ5.1.11、GlobalProtectアプリ5.2.12、GlobalProtectアプリ5.3.4、およびGlobalProtectアプリ6.0.1 で修正されています。
Cortex XDR agent
2022年4月30日に提供された、 Cortex XDR agent 7.5.3, Cortex XDR agent 7.6.2-hotfix1, Cortex XDR agent 7.7.0-hotfix で修正されています。 Cortex XDR agent 7.4は2022年5月24日に製造終了となり、CVE-2022-0778の修正プログラムは提供されない予定だそうです。
Cortex XDR agent
2022年4月30日に提供された、Cortex XDR agent 7.5.3, Cortex XDR agent 7.6.2-hotfix1, Cortex XDR agent 7.7.0-hotfixで修正されています。Cortex XDR agent 7.4は2022年5月24日に製造終了となり、CVE-2022-0778の修正プログラムは提供されない予定だそうです。
Fortinet
影響範囲内の製品が多いため、FortiGuardLabsにてご確認ください [7] (fortiguard.com/psirt/FG-IR-22-059)。また、FortiSandboxは影響範囲外です。
対策として、影響範囲内の製品のバージョンアップが推奨されています。 影響範囲内の製品のバージョンアップについてもFortiGuardLabsにてご確認ください [7] (fortiguard.com/psirt/FG-IR-22-059)。
現在(2022/06/08)対応するシグネチャは以下のシグネチャです。
- OpenSSL.Elliptic.Curve.Public.Key.Handling.DoS, ID:51345
筆者は、影響範囲内の製品のバージョンアップ以外の対策として以下の対策を考えました(未検証)
Dos ポリシーを用いた社内・社外のDoS攻撃の検知を行い、DoS攻撃元の証明書をブロックリストに登録
EV(Extended Validation) SSL証明書のみ許可をする
FortiOSでのDoS攻撃からの対処として、FortiOS 6.4.3のAdministration Guide の中の項目DoS protectionが参考になります [8]。
F5 Networks
F5 Product Development は、 CVE-2022-0778に ID 1087201 (BIG-IP), ID 1089357, 1089353 (BIG-IP Edge Client), ID 1089437 (F5OS), および SDC-1779 (Traffix) を割り当てています。
この問題は、CWE-835(到達不能な終了条件を持つループ(「Infinite Loop」)) に分類されています。
影響範囲については、 お使いの製品およびバージョンが本脆弱性の評価を受けているかどうかを確認するには、「Applies to (see versions)」ボックスを参照してください。
詳しい内容は、AskF5のレポート [9] (support.f5.com/csp/article/K31323265)のSecurity Advisory Statusでご確認ください。
現在(2022-06-08)確認されている脆弱性は以下の通りです。
- BIG-IP (16.1.0 - 16.1.2, 15.1.0 - 15.1.5, 14.1.0 - 14.1.4, 13.1.0 - 13.1.4, 12.1.0 - 12.1.6, 11.6.1 - 11.6.5)
- BIG-IP Edge Client(7.2.2, 7.2.1.4, 7.2.1, 7.1.9, 7.1.5)
- F5OS-A(1.0.0 - 1.0.1)
- F5OS-C(1.1.0 - 1.3.1)
- Traffix SDC(5.2.0, 5.1.0)
対策として、影響範囲内の製品のバージョンアップが推奨されています。
- BIG-IP (17.0.0, 16.1.2.2, 15.1.5.1, 14.1.4.6, 13.1.5, 12.xと11.xはWill not fixです)
- BIG-IP Edge Client(7.2.2.1, 7.2.1.5)
- F5OS-A(None)
- F5OS-C(None)
- Traffix SDC(None)
また、BIG-IPのコントロールプレーンはhttpd を構成しないことや4353ポートへのアクセス制限などの行動が推奨されています。
詳しい内容は、 AskF5のレポート [9] (support.f5.com/csp/article/K31323265)のRecommended Actionsでご確認ください。
- サーバでクライアント側の証明書認証用に httpd を構成しない
- BIG-IPシステムのTCPポート4353へのアクセス制限 現在(2022/06/08)当グループ調査の範囲では、該当するシグネチャの情報は確認出来ませんでした。
※すでに実機上には配信されている可能性もあります。
SonicWall
影響範囲と対策については、 影響範囲内の製品が多いため、SonicWall CVE-2022-0778のサポートページ 10と
SonicWall脆弱性レポート 11 にてご確認ください 対策として、影響範囲内の製品のバージョンアップが推奨されています。
現在(2022/06/08)対応するシグネチャは以下のシグネチャです [12]。
- IPS: 15407 OpenSSL BN_mod_sqrt Function DoS 1
- IPS: 15491 OpenSSL BN_mod_sqrt Function DoS 2
- IPS: 15351 OpenSSL BN_mod_sqrt Function DoS 3
- IPS: 15755 OpenSSL BN_mod_sqrt Function DoS 4
筆者は、影響範囲内の製品のバージョンアップ以外の対策として以下の対策を考えました(未検証)
- Dos ポリシーを用いた社内・社外のDoS攻撃の検知を行い、DoS攻撃元の証明書をブロックリストに登録
- EV(Extended Validation) SSL証明書のみ許可をする
SonicWall supportのIPアドレスの制限の記事How can I restrict admin access to the device? [13]が参考になります。
A10 Networks
A10 NetworksのACOSのバージョンについての影響範囲内の製品は以下の通りです。
- 5.0.0 - 5.2.1-P4
- 4.1.0 - 4.1.4-GR1-P9
- 3.1.0-P1 - 3.2.5-P6
- 2.8.2 - 2.8.2-P10
- 2.7.2 - 2.7.2-P17 4.1.100 - 4.1.100-P7は影響範囲外です。
対策として、各ACOS製品のバージョンアップが推奨されています。
- 5.0.0 - 5.2.1-P4 → 5.2.1-P5
- 4.1.0 - 4.1.4-GR1-P9 → 4.1.4-GR1-P10
- 3.1.0-P1 - 3.2.5-P6 → 5.0.2-P2 TPS
- 2.8.2 - 2.8.2-P10 → 4.1.4-GR1-P10, 5.2.1-P5
- 2.7.2 - 2.7.2-P17 → 4.1.4-GR1-P10, 5.2.1-P5
現在(2022/06/08)当グループ調査の範囲では、該当するシグネチャの情報は確認出来ませんでした。 ※すでに実機上には配信されている可能性もあります。
また、ACOS ADCデータプレーンとACOS 管理プレーンの推奨の回避策と緩和策があります。 詳しい内容は、A10 Networksのレポート [14] (support.a10networks.com/support/security_ad..)のWorkarounds and Mitigationsでご確認ください。
A10は、すべての構成された「slb template client-ssl」インスタンスに対して「client-certificate Ignore」を使用することを推奨しています。 構成された「slb template server-ssl」インスタンスについては、緩和策はありません。
ACOS 管理プレーンでのCVE-2022-0778の緩和策は、HTTPS 転送方法を使用してファイルのインポート/エクスポートを行わないようにすることです。 代わりに、SCP または SFTP の安全な転送方法を使用してください。
CVE-2022-0778に対する各UTM/IPS/WAFの対応状況のまとめ
OpenSSLの脆弱性であるCVE-2022-0778の影響を受けた製品の範囲は多いです。
また、CVE-2022-0778の影響度は7.5Highと高く、楕円曲線暗号ベースの証明書でのDoSの影響を受ける可能性があります。
影響を受ける前に、公式ベンダー情報を参考に機器のアップデートをよろしくお願いします!
CVE-2022-0778, "Nip in the Bug"
"""CVE-2022-0778はどのようにすれば未然に防げたのか"""
TL;DR
- BN_mod_sqrt関数に\(a=696\), \(p=697\)で無限ループ。
- 対策で素数判定のAKS素数判定法とかどうですか?
- 暗号プロトコルの要件通りのプログラミングコードになるような仕組みが必要です!!
記事の前半では、CVE-2022-0778の概要と各UTM/IPS/WAF/ファイアウォールの対応について書きました。
記事の後半では、CVE-2022-0778となった原因と脆弱性をどうすれば未然に防げたのかを考察します。
まず、OpenSSLのBN_mod_sqrt関数とTonelli–Shanks algorithmの内容を簡単に説明をします。
次に、脆弱性のCVE-2022-0778となった原因を説明します。
さらに、奇素数の判定法としてAKS素数判定法について説明します。
最後に、暗号プロトコルと実装されたコードとの乖離について考察します。
BN_mod_sqrt関数
※この記事のBN_mod_sqrt関数については、kurenaif氏が書いたCVE-2022-0778 についての記事 [15]を参考にしています。
BN_mod_sqrt関数とは、OpenSSL内で使用されている関数で、\(\bmod\)の下で有限体(ガロア体)における\(\sqrt{}\)(平方根)を求める関数です。
有限体(ガロア体)とは、平易な文章で表すと有限個の位数からなる四則演算ができる体です。
OpenSSLプロジェクトのBN_mod_sqrt関数についてはこちら [16]、CVE-2022-0778以前の実装されたコードはこちら [17]です。CVE-2022-0778関連の修正されたコードはこちら [18]です。
具体的には、以下のような挙動をします。
\( a \), \( p \)があるとします。この時に、 \( \rm{in^2} \equiv a \mod p\) を満たす\( \rm{in}\)を出力する関数です。
法\(p\)は素数でなければならず、そうでない場合はエラーまたは不正確な “結果” が返されます。 結果は\( \rm{in}\)に格納され、それはNULLであることもあります。その場合の結果は新たに確保されます。
BN_mod_sqrt関数は、Tonelli-Shanks algorithmを参考に実装されています。
Tonelli-Shanks algorithm
Tonelli–Shanks algorithmとは、 法\(p\)の平方剰余\(\pmod p\)である整数\(n\), 奇素数\(p\)があるとします。奇素数(Odd Prime)とは、\(2\)以外の素数のことです [19]。
このときに、 $$ x^2 \equiv n \mod p \quad \quad n \rm{in} {\bf F}_p \quad where \quad {\bf F}_p = {0, 1, ..., p-1} $$
を満たす\(x\)を求めるアルゴリズムです [20]。 Tonelli–Shanks algorithmには、\(n\)が\(p\)の平方剰余か否かを簡潔に表すためにルジャンドル記号 [21]
$$ \left(\begin{array}{c}a\ p\end{array}\right) := n^{\frac{p-1}{2}} $$ が用いられます。 証明を省略するとつまり、\(1 \bmod p\)であれば、\(n\)は平方剰余であり、\(-1 \bmod p\)であれば、\(n\)は平方剰余でないということです。 Tonelli–Shanks algorithmの各プログラミング言語での実装例として [20]があります。
CVE-2022-0778の原因
drago-96さんのPoC [22]によると、 \(a=696\), \(p=697\)の値を渡すことで、無限ループを引き起こすそうです。無限ループの条件を満たせば、\(a\), \(p\)が他の値でも無限ループになります。 CVE-2022-0778関連の修正されたコードはこちら [18]です。
条件はkurenaif氏の引用をすると、以下の4つの条件となります。
- 条件1: \(a=p-1\)
- 条件3: \(p\)は素数ではない(ただしこの条件を満たしても確率的に失敗することもある)
- 条件5: \(p=8n+1\)で求められている。(\(n\)は奇数でなければならない。)
- 条件6: \(y\)を\(2\)から\(22\)までインクリメントさせていったときに、 Kronecker symbolが一度も\((y|p)=0\)にならずに\((y|p)=-1\)となる\(y\)が存在している。(一度\(-1\)になればその後\(0\)があってもOK)
kurenaif氏の無限ループするっぽい\(a\),\(p\)を生成するコード [15]を写経して確認しました。
無限ループを引き起こす \(a\), \(p\)をOpenSSLの証明書に適用すれば、実際に無限ループが引き起こされます。
PoCを書いたdrago-96さんが実際にSSL証明書のPrime, A, B, Generatorを編集して、無限ループを引き起こす検証を行っています [23]。 OpenSSLの編集には、asn1templateという編集ツールと手作業で行っています。
自動化を行うスクリプトを書けば、楕円曲線暗号ベースの証明書でのDoS攻撃ができると思われます。 筆者がCVE-2022-0778を用いた自動化のスクリプトを作成しても状況を鑑みて、公開はCVE-2022-0778が落ち着いた時期に致します。
私が、気になった点として、PoC [22]では、\(p =697\)が入力値として設定されている点です。 なぜなら\(697\)は\( 17*41 \) の合成数なのは明らかだからです。 BN_mod_sqrt関数の\(p\)の入力には、簡単な素数判定が使われています。 Tonelli–Shanks algorithmの奇素数\(p\)に遵守して、奇素数と判定された\(p\)を入力すればいいと考察します。
奇素数の判定
一般的な数に対する素数判定法として大きく分類すると2つあり、 確率的素数判定法による確率的素数と決定的素数判定法による素数があります。
確率的素数判定法でも素数判定は可能です。しかしながら、カーマイケル数(絶対擬素数)の可能性を考慮する必要があります。 この記事では、決定的素数判定法のAKS素数判定法を扱います。
AKS素数判定法
AKS素数判定法は、与えられた自然数が素数であるかどうかを決定的多項式時間で判定できる、世界初のアルゴリズムです [24]。 決定的多項式時間とは、与えられた自然数\(np\)が素数かどうかを判定する時間が、\(\log(n)\)の多項式を上界とすることです。
AKS素数判定法の原著論文 PRIMES is in P はこちら [25]、改訂版バージョン6はこちら [26]です。 AKS素数判定アルゴリズムについては、 [27]を参考にしています。 入力: \(1<n\) を満たす整数 \(n\).
- もし\(n=a^{b}\), \(b>1\)を満たす整数 \(a\), \(b\)が存在すれば, “\(r_{n}\)は合成数”を出力して終了する.
- \(\gcd(r, n)=1\)および \(o_{r}(n)>\log^{2}n \)を満たす 最小の正整数\(r\)を見付ける.
- もし\( 1<\gcd(a, n)<n \)を満たす正整数\( a \)が\( a\leqq r \)の範囲に存在すれば, “\( r_{n} \)は合成数”を出力して終了する.
- もし\( n\leqq r \)ならば,“\( r_{n} \)は素数”を出力して終了する.
\( 1\leqq a\leqq\lfloor\sqrt{\phi(r)}\log n\rfloor \) の範囲の各整数\( a \)について $$ (X+a)^{n}\neq X^{n}+a \quad (\bmod X^{r}-1, n) $$ を満たすか否かを検査し,もし満たすものが見付かれば”\( r_{n} \)は合成数”を出力して終了する.
“素数”を出力して終了する.
5.の条件の数式については、フェルマーの小定理を多項式についての合同式に拡張することにより以下の定理を得られることを背景に成り立っています。
Theorem. 任意の素数\( n \)および任意の正整数\( a \), \( r \)について,\( \mathbb{Z}{n} \) の要素を係数にもつ変数\( X \)の1変数多項式間の, \( \mathbb{Z}{n}[X]) \) (に属する多項式間の) 合同式として次が成り立つ. $$ (X+a)^{n}\equiv X^{n}+a \quad (\bmod X^{r}-1) $$
AKS素数判定法の実装例は、Rosetta CodeのAKS test for primes [28]が参考になります。
暗号プロトコルと実装されたコードとの乖離
策定された暗号プロトコルが正確にプログラミングコードとして実装されず乖離が生まれることが原因で脆弱性となる事例があると筆者は考察します。
暗号学者が考案した暗号プロトコルは、プログラミングコード等を用いて実社会へ実装されます。
実装までの過程の中で、暗号プロトコルと実装されたプログラミングコードが違う内容によって引き起こされる脆弱性があると思われます。
このような脆弱性を生む要因の一つとして、暗号プロトコルが実装する人にとって難しいこと、また、暗号プロトコルを平易な文章やわかりやすく伝えることが難しいことがあると考えます。
代表的な脆弱性にOpenSSLのCVE-2014-0160(通称: Heartbleed) [29]があります。
TLS Heartbeat Extensionの処理において、設定されたペイロードの長さをチェックせずに使用するため、 実際のペイロード長と比較して大きな値に設定されたペイロード長のリクエストを処理することで、 意図した領域を超えてプロセスのメモリの内容を余分に読み取られる可能性のあることが原因です [30]。
また、脆弱性があった状態の期間が2年間あったことも問題とされています。
Heartbleedは、暗号プロトコルにそって忠実に実装すると脆弱性とはならなかったのではないかと考えられています。
暗号プロトコルの今後の課題として、暗号学者は暗号プロトコルへの理解の貢献や実装し易い仕様の表記方法、 また、暗号プロトコルを実装する人には、暗号プロトコルを理解できるようなシステム化が必要だと考えます。
CVE-2022-0778はどのようにすれば未然に防げたのかのまとめ
まず、BN_mod_sqrt関数とTonelli–Shanks algorithmの内容を簡単に説明をしました。
次に、脆弱性のCVE-2022-0778となった原因を説明しました。
さらに、奇素数の判定法としてAKS素数判定法について説明しました。
最後に、暗号プロトコルと実装されたコードとの乖離について考察しました。
まとめ
CVE-2022-0778はOpenSSLで使用されている関数であるBN_mod_sqrtに特定の値を渡すと無限ループを引き起こす脆弱性です。
OpenSSLの脆弱性であるCVE-2022-0778の影響を受けた製品の範囲は多いです。
また、CVE-2022-0778の影響度は7.5Highと高く、 楕円曲線暗号ベースの証明書でのDoSの影響を受ける可能性があります。
影響を受ける前に、公式ベンダー情報を参考に機器のアップデートをよろしくお願いします!
CVE-2022-0778はどのようにすれば未然に防げたのかでは、
まず、BN_mod_sqrt関数とTonelli–Shanks algorithmの内容を簡単に説明をしました。
次に、脆弱性のCVE-2022-0778となった原因を説明しました。
さらに、奇素数の判定法としてAKS素数判定法について説明しました。
最後に、暗号プロトコルと実装されたコードとの乖離について考察しました。
\( 最後まで読んで頂き誠にありがたい限りです。 \)
参考文献
[1] OpenSSL, “Infinite loop in BN_mod_sqrt() reachable when parsing certificates (CVE-2022-0778),” 15 3 2022. [オンライン]. Available: openssl.org/news/secadv/20220315.txt.
[2] “NATIONAL VULNERABILITY DATABASE CVE-2022-0778 Detail,” [オンライン]. Available: nvd.nist.gov/vuln/detail/CVE-2022-0778.
[3] “JVN, JVNDB-2022-001476 OpenSSL の BN_mod_sqrt() における法が非素数のときに無限ループを引き起こす問題,” [オンライン]. Available: jvndb.jvn.jp/ja/contents/2022/JVNDB-2022-00...
[4] “OpenSSL Support Contracts,” [オンライン]. Available: https:/openssl.org/support/contracts.html.
[5] “Palo Alto Networks Security Advisories / CVE-2022-0778 CVE-2022-0778 Impact of the OpenSSL Infinite Loop Vulnerability CVE-2022-0778,” [オンライン]. Available: security.paloaltonetworks.com/CVE-2022-0778.
[6] “THREAT VAULT, Vulnerability Protection Signatures, OpenSSL Elliptic Curve Public Key Handling Denial-of-Service Vulnerability,” [オンライン]. Available: threatvault.paloaltonetworks.com/?query=35288.
[7] “FortiGuard Labs PSIRT Advisories Vulnerability in OpenSSL library,” [オンライン]. Available: fortiguard.com/psirt/FG-IR-22-059.
[8] “FortiOS 6.4.3 Administration Guide DoS protection,” [オンライン]. Available: docs.fortinet.com/document/fortigate/6.4.3/...
[9] “AskF5 K31323265: OpenSSL vulnerability CVE-2022-0778,” [オンライン]. Available: support.f5.com/csp/article/K31323265.
[10] “SonicWall Suppot OpenSSL Infinite Loop Vulnerability CVE-2022-0778 – Impact on SonicWall Edge Appliances (NGFW, SMA) & VPN Clients,” [オンライン]. Available: sonicwall.com/support/product-notification/...
[11] “Security Advisory Report Vulnerability SNWLID-2022-0002,” [オンライン]. Available: psirt.global.sonicwall.com/vuln-detail/SNWL...
[12] “OPENSSL ELLIPTIC CURVE PUBLIC KEY DENIAL OF SERVICE,” [オンライン]. Available: securitynews.sonicwall.com/xmlpost/openssl-...
[13] “How can I restrict admin access to the device?,” [オンライン]. Available: sonicwall.com/support/knowledge-base/how-ca...
[14] “A10 Networks Security Advisory SSL - CVE-2022-0778,” [オンライン]. Available: support.a10networks.com/support/security_ad...
[15] kurenaif, “【CVE-2022-0778】OpenSSLの無限ループの脆弱性の原因解説!,” 18 3 2020. [オンライン]. Available: zenn.dev/kurenaif/articles/ec2eec4ec7ec52.
[16] “OpenSSL Project BN_mod_sqrt,” [オンライン]. Available: openssl.org/docs/manmaster/man3/BN_mod_sqrt...
[17] “openssl/crypto/bn/bn_sqrt.c,” [オンライン]. Available: github.com/openssl/openssl/blob/openssl-3.0...
[18] “openssl Fix possible infinite loop in BN_mod_sqrt(),” [オンライン]. Available: github.com/openssl/openssl/commit/9eafb5361...
[19] “数学の星,” [オンライン]. Available: math-jp.net/2017/02/16/odd-prime-number.
[20] “Rosetta Code Tonelli-Shanks algorithm,” [オンライン]. Available: rosettacode.org/wiki/Tonelli-Shanks_algorithm.
[21] “美的数学のすすめ 平方剰余とルジャンドル記号,” [オンライン]. Available: biteki-math.hatenablog.com/entry/2015/06/01...
[22] drago-96, “drago-96/CVE-2022-0778/my_bad_sqrt.c,” 15 3 2022. [オンライン]. Available: github.com/drago-96/CVE-2022-0778/blob/mast...
[23] “drago-96/CVE-2022-0778/my_bad_sqrt.c,” [オンライン]. Available: github.com/drago-96/CVE-2022-0778/blob/mast...
[24] “AKS素数判定法,” [オンライン]. Available: ja.wikipedia.org/wiki/AKS%E7%B4%A0%E6%95%B0...
[25] A. N. K. N. S. Manindra, “PRIMES is in P,” 6 8 2002. [オンライン]. Available: cse.iitk.ac.in/users/manindra/algebra/prima...
[26] A. N. K. N. S. Manindra, “PRIMES is in P,” [オンライン]. Available: cse.iitk.ac.in/users/manindra/algebra/prima...
[27] “AKS 素数判定アルゴリズムについての計算機を用いた実験的考察,” [オンライン]. Available: kurims.kyoto-u.ac.jp/~kyodo/kokyuroku/conte...
[28] “Rosetta Code AKS test for primes,” [オンライン]. Available: rosettacode.org/wiki/AKS_test_for_primes.
[29] “The Heartbleed Bug,” [オンライン]. Available: heartbleed.com.
[30] “OpenSSL Heartbleed セキュリティホール (CVE-2014-0160) について,” [オンライン]. Available: softek.co.jp/SID/techinfo/heartbleed.html.