セキュリティアドバイザリ
{% include toc.html %}
このページでは、Bitcoin Coreの脆弱性の開示に関するポリシーと、 過去のセキュリティアドバイザリの概要を掲載しています。
ポリシー {#policy}
すべての脆弱性は、security@bitcoincore.org までご報告ください(詳細は、 SECURITY.mdをご覧ください)。 脆弱性が報告されると、重大度のカテゴリが割り当てられます。私たちは脆弱性を4つのクラスで区別します。
クリティカル {#critical}
Bitcoinネットワーク全体の根本的なセキュリティと整合性を脅かすバグ。 プロトコルレベルでのコインの盗難や、指定された発行スケジュールから外れたコインの発行、 あるいはネットワーク全体にわたる永続的なチェーン分割を可能にするバグです。
例:
- ブロック内で同じトランザクションアウトプットを2回使用することで 通貨供給量を増やすことができるバグ(CVE-2018-17144)。
- 旧ソフトウェアを実行しているノードが、基礎となるデータベースの制限により、 新しいソフトウェアが受け入れたブロックを拒否し、ネットワーク全体のチェーン分割を引き起こすコンセンサス障害 (BIP 50)。
高 {#high}
影響を受けるノードやネットワークに重大な影響を与えるバグ。デフォルトの設定で リモートから悪用可能で、広範囲にわたる混乱を引き起こす可能性ががあります。
例:
- リモートからのトリガーで、多数のノードをオフラインにする可能性のあるクラッシュ( CVE-2024-35202)。
- ノードを長時間停止させ、新しいトランザクションやブロックを処理できないようにする サービス拒否攻撃(CVE-2024-52914)。
- 過剰な量のブロックヘッダーを保存させることで、リモートからトリガーされる、 ノードをクラッシュさせる可能性のあるメモリ枯渇の脆弱性(CVE-2019-25220)。
中 {#medium}
ネットワークやノードのパフォーマンスや機能を著しく低下させる可能性があるものの、 その範囲や悪用可能性は限定的であるバグ。これらのバグは、非デフォルト設定など、 特別な条件がトリガーとなる場合や、ノードの完全な障害ではなくサービス低下を引き起こす場合があります。
例:
- UPnPなどの非デフォルト機能が有効になっている場合にのみ悪用される、 ローカルネットワーク上の潜在的なリモートコード実行(RCE)の脆弱性(CVE-2015-20111)。
- ピアが変異ブロックを送信することでブロックの伝播を妨害し、 ノードが新しいブロックを受信するのを遅延させる可能性があります(CVE-2024-52921)。
- 攻撃者がノードにブロックをアナウンスした後、それを提供せず、 被害ノードが他のピアからそのブロックを取得できるようになるまで最大10分待機させます( CVE-2024-52922)。
低 {#low}
悪用するのが難しいバグ、またはノードの動作に与える影響が軽微なバグ。 これらは、非デフォルト設定またはローカルネットワークからのみトリガーされる可能性があるもので、 即時に脅威があるものではなく、また広範囲にわたって脅威があるものでもありません。
例:
- 細工された
getdata
メッセージにより、ピア接続が無限ループに陥り、CPUが消費される可能性がありますが、 ノードがブロックを処理したり、他のピア接続を処理したりする能力には影響しません( CVE-2024-52920)。 - 依存関係のバグによりノードがクラッシュする可能性がありますが、 これはUPnPなどの非デフォルト機能が有効になっている場合のみです( CVE-2024-52917)。
- ノードをクラッシュさせる可能性があるものの、悪用するのが非常に難しいバグ( CVE-2024-52919)。
重要度が低のバグは、現在のメジャーリリースブランチに修正版が登場してから2週間後に公開されます。リリースと同時に事前の発表も行われます。
重要度が中と高のバグは、影響を受ける最後のリリースがEOLになってから2週間後に公開されます。 これは修正バージョンが最初にリリースされてから1年後です。事前の発表は公開の2週間前に行われます。
重要度がクリティカルのバグは、アドホックな手順が必要になる可能性があるため、標準ポリシーでは考慮されません。 また、バグは脆弱性とはみなされない場合もあります。報告された問題が深刻であるとみなされても、 それが必ずしも情報公開の禁止措置が必要であるとは限りません。
過去のセキュリティアドバイザリ {#past-security-advisories}
{% assign advisories=site.posts | where:“lang”, ‘ja’ | where:“type”, ‘advisory’ | sort: “date” | reverse %} {% for advisory in advisories %} {% assign post=advisory %}
{{ post.title }}
{{ post.excerpt | markdownify | strip_html | truncate: 200 }}