BTCPay Server のホットウォレット窃盗、2.4.2 で修正済み
攻撃者は BTCPay Server 2.4.1 以前のホットウォレットから 2.4.2 で修正された脆弱性を悪用し Bitcoin と Litecoin を盗みました。新しいサーバーで再構築してください。
TL;DR
- 攻撃者は、BTCPay Server 2.4.1 以前を稼働させるサーバーのホットウォレットから、2026 年 8 月 7 日に 2.4.2 で修正された脆弱性を悪用して Bitcoin と Litecoin を盗みました。ベンダーは 2026 年 11 月 2 日にこの窃盗を公表しました。
- 2.4.2 より前のすべてのリリース(2.4.2 のリリース候補を含む)が影響を受けます。8 月の攻撃は LND の Lightning ノードを乗っ取り、11 月の窃盗はサーバーのオンチェーンのホットウォレットを空にしました。
- ベンダーはこの脆弱性をクリティカルと評価し、8 月と 2026 年 11 月 1 日の資金窃盗を報告しています。CVE は割り当てられておらず、2026 年 11 月 3 日時点で CISA の KEV カタログにも掲載されていません。
- 2.4.1 以前を稼働している場合は、資金をスイープしたうえで新しいウォレットを持つ新しいサーバーへ移行してください。その場でのアップデートでは、攻撃者がすでに得たアクセスを除去できません。詳細は「修正するには?」を参照してください。
影響を受けるのは?
以下の条件がすべて成り立つ場合に露出します。
- 自社のデプロイが、2026 年 7 月 23 日にリリースされた BTCPay Server 2.4.1 またはそれ以前のバージョンを使っている。ベンダーのアドバイザリは、2.4.2 のリリース候補を含め 2.4.2 より前のすべてのバージョンにこの脆弱性があると述べています。
- 影響を受けるバージョンを稼働していた期間、そのインスタンスがインターネットから到達可能だった。ベンダーは、攻撃者がいつこの脆弱性の悪用を始めたかは特定できていないと述べています。
- その後サーバーを再構築していない。ベンダーの復旧ガイダンスは、11 月 1 日の警告後に影響を受けるバージョンからアップデートして窃盗に気づいていない場合にも適用されます。
ホスティングされたインスタンスも対象です。ベンダーは 11 月 1 日、LunaNode を含むホスティング事業者に、予防措置として BTCPay Server インスタンスをオフラインにするよう依頼しました。新しい仮想マシンへの移行はプロバイダーに相談してください。
支出鍵をサーバーの外に保持するウォレット(ハードウェアウォレットを含む)の資金は、今回の窃盗の影響を受けませんでした。そのようなウォレットへの入金の受け付けは、ベンダーが推奨する運用方法であり続けています。
| バージョン | 影響 | 対処 |
|---|---|---|
| 2.4.1 とそれ以前の全リリース(2.4.2 のリリース候補を含む) | はい、脆弱性が存在 | 新しいウォレットで新しいサーバーへ移行し、最新リリースを稼働 |
| 2.4.2(2026-08-07 リリース) | いいえ、脆弱性を修正 | 最新リリースへ更新 |
| 2.4.3 から 2.4.7(2026-10-29 の最新) | いいえ | 更新を継続 |
影響を受けるバージョンは、その後に続いたすべてのセキュリティ修正を受け取っていません。2.4.3 から 2.4.7 は 2026 年 10 月 29 日までセキュリティとハードニングの変更を提供しました。2.4.7 単体で、Anthropic の OSS Scanner によって報告された 85 件のセキュリティ所見を修正しています。
GitHub のスター 7,888 件、公式 Docker イメージのプル 4,131,130 回という規模にもかかわらず、この脆弱性には CVE も GitHub セキュリティアドバイザリも存在しないため、バージョンスキャナーは影響範囲を検出できません。
稼働中のものを確認してください。
# Vendor's check: log in and read the version shown at the bottom of the page.
# Docker deployments: list the running container and its image tag
docker ps --format 'table {{.Names}}\t{{.Image}}' | grep -i btcpay
# If the tag reads "latest" or gives no version, the page footer is authoritative.
修正するには?
- 2.4.1 以前を稼働している場合は、その場でのアップデートではなく、ベンダーの復旧手順に従ってください。
- 新しいウォレットを作成し、ホットウォレットの残りの資金をそこへスイープします。信頼できるデバイスと新しいシードを使ってください。古いシードを新しいサーバーで再利用すると、その資金は危険にさらされたままです。
- 古いサーバーをオフラインにし、交換前に調査に必要なログと取引記録を保全します。
- 新しい仮想マシンを用意し、信頼できるソースから最新のサポートリリースをインストールして、新しいウォレットを接続します。古いサーバー全体を新しいマシンに復元しないでください。
- 信頼できるデバイスから、古いサーバーが到達できたすべての認証情報を失効・置換します。新しい認証情報を古いマシンに入力しないでください。ベンダーが挙げる対象は以下です。
- ホスティングと SSH の認証情報
- アプリケーションと API の認証情報
- Lightning の認証情報
- 11 月 1 日の時点で 2.4.2 以降をすでに稼働していたサーバーには、これらの攻撃による影響は確認されていません。それでも最新リリースへ更新してください。2.4.7 はさらに 85 件のセキュリティ所見を修正しています。
- 標準インストールでは、ベンダーの更新経路(Server Settings、次に Maintenance、次に Update)を使い、ページ下部のフッターに新しいバージョンが表示されることを確認します。
- 統合運用者は、2.4.2 のリリースノートが推奨するとおり NBXplorer も 2.6.10 に更新してください。
この脆弱性自体に対する設定による回避策は存在しません。8 月の時点で、更新できない LND ユーザーへのベンダーの暫定的な助言は、サーバーをオフラインにすることでした。影響を受ける LND のデプロイをインターネットに到達可能なままにしてはいけません。
根本原因は何か?
BTCPay Server は同じ日に 2 つの露出を閉じました。コントローラーの public なヘルパーメソッドが HTTP エンドポイントとしてルーティング可能だったことと、リファレンスの Docker デプロイが LND の API を公開ドメイン経由で中継していたことです。ベンダーは、運用者に更新の時間を与えるため、技術的詳細はまだ公表していないと述べています。
サーバー側の修正はコミット 6689cad419「Disabled unwanted routes」で、メンテナーの Nicolas Dorier が 2026 年 8 月 7 日に、プルリクエストも変更ログの記載もなしでプッシュしました。コントローラーの public なヘルパーメソッド 5 つに [NonAction] 属性を追加します。そのうちの 1 つが以下です。
// BTCPayServer/Controllers/UILNURLController.cs, before 2.4.2
public async Task<IActionResult> GetLNURLRequest(
string cryptoCode,
Data.StoreData store,
...)
// after 2.4.2
[NonAction]
public async Task<IActionResult> GetLNURLRequest(
string cryptoCode,
Data.StoreData store,
...)
ASP.NET Core は、コントローラークラスの public メソッドをすべてルーティング可能な HTTP エンドポイントに対応づけます。[NonAction] が付いていない限りです。5 つのヘルパーは LNURL、LNURL-authentication、stores、email-rule、subscription の各コントローラーにあります。いずれもリクエストを受け取ることを意図していない内部の構成部品です。
同じ日、docker リポジトリのコミット「Do not expose LND anymore」が、公開ドメインから Lightning ノードへ直接中継していた 2 つの nginx ロケーションを削除しました。
# Production/nginx.tmpl in btcpayserver-docker, removed on 2026-08-07
location ~* ^/(lnrpc|routerrpc|verrpc|walletrpc)\. {
grpc_read_timeout 6000s;
grpc_send_timeout 6000s;
grpc_pass grpcs://lnd_bitcoin:10009;
}
location /lnd-rest/btc/ {
rewrite ^/lnd-rest/btc/(.*) /$1 break;
proxy_pass http://lnd_bitcoin:8080/;
}
同じ日の 3 つ目のコミットが、この脆弱性の分類を明示しています。関連する削除を取り消す際、メンテナーの Andrew Camilleri は、もう 1 つの Lightning 実装である CLN は「is not affected by the LNURL issue」と書きました。BTCPay は CLN に Unix ソケットと runes で接続するため、彼の言葉では「there is no macaroon for that code path to read」です。そのメッセージは、LNURL のコードパスが LND の macaroon を読み取ると述べています。
8 月のアドバイザリは結果を説明しています。認証されていないリモート攻撃者が、LND の .macaroon 認証情報ファイルを取得できました。
どのように悪用されるか?
ベンダーの 2 つの投稿が攻撃の経路を説明しています。公開された概念実証は存在せず、ベンダーは攻撃者が送ったリクエストを公表していません。
- 攻撃者はインターネット経由で影響を受けるサーバーに到達します。8 月のアドバイザリは、.macaroon 認証情報ファイルの取得に認証が不要だったと述べています。
- 8 月の攻撃では、攻撃者は LND ノードへの認証済みアクセスを持つ .macaroon ファイルを取得しました。ベンダーが確認した攻撃は .macaroon 拡張子のファイルのみを狙い、それらの認証情報でノードを乗っ取り資金を移動できたと述べています。
- 11 月の攻撃では、攻撃者はベンダーの言葉で「a different method to exploit the vulnerability fixed in 2.4.2」を使いました。窃盗はサーバーのオンチェーンのホットウォレットから Bitcoin と Litecoin を奪い、ベンダーはその手法を説明していません。
- 資金の支出に追加のアクセスは不要でした。ホットウォレットは支出に必要な鍵をサーバー自身に保持するためです。支出鍵をサーバーの外に保持するウォレットは影響を受けませんでした。
攻撃はどのように流れるか?
認証されていないリクエストがベンダーが露出する意図のなかったルートに到達し、攻撃者は LND の macaroon 認証情報、または 11 月にはオンチェーンのホットウォレットの資金そのものを奪います。
未認証リクエスト"] --> B["NonAction 属性なしで
ルーティング可能なヘルパー"] B --> C["LNURL のコードパスが
LND の macaroon を読み取る"] C --> D["8 月: .macaroon ファイル窃取、
LND ノード乗っ取り、
資金移動"] B --> E["11 月: 同一脆弱性への
別の手法"] E --> F["オンチェーンのホットウォレット流出:
Bitcoin と Litecoin"]
攻撃者に何ができるか?
8 月の攻撃は LND ノードを乗っ取り、ノード自体が持つオンチェーンウォレットを含む資金を移動させました。11 月の攻撃は、サーバーのオンチェーンのホットウォレットから Bitcoin と Litecoin を盗みました。8 月の攻撃の確認時には影響なしと評価されていた部分です。
侵入後の攻撃者は、マシンの所有者として扱われます。ベンダーは、資金を盗まれた人や不正アクセスの兆候がある人に対し、サーバー全体とそこに保存されたすべての秘密が侵害されたとみなすよう述べています。同じ復旧手順が適用されます。
影響は 2 つの条件で区切られます。サーバーが 2.4.1 以前を稼働していること。そして、危険にさらされたのはサーバー自身が支出できる資金だけであり、ハードウェアウォレットなど別の場所に保管された鍵には手が届かなかったことです。
なぜ修正は機能するか?
2.4.2 は両方の露出を閉じます。[NonAction] 属性は 5 つのヘルパーメソッドをルーティングから外し、リクエストを受け取れなくします。nginx の変更は、LND の gRPC と REST のインターフェースを公開ドメインから取り除きます。
文書化された代償は、Zeus のような外部ウォレットが BTCPay のドメイン経由で LND にアクセスできなくなることです。ベンダーは安全になり次第この経路を復元する予定です。
同じ日の 2 つの変更が、すでに盗まれたものを無効化します。docker リポジトリは LND を 0.21.1 に引き上げ、8 月 7 日に追加された LND_MACAROON_ROTATION_ID 設定が macaroon を再生成します。更新前に取得された macaroon ファイルは機能しなくなります。
この修正はコミットが閉じた 2 つの露出に対しては完全ですが、攻撃者がすでに得たアクセスを除去できません。だからこそベンダーは、影響を受けるバージョンの運用者に対し、その場での更新ではなく新しいサーバーへの移行を求めています。
2.4.2 はさらに、Greenfield の Basic 認証を経由する TOTP 二要素認証のバイパスも修正しました。アカウント作成の 5 分後に Basic 認証をデフォルトで無効化します。
侵害されたか確認するには?
まずバージョンを確認してください。ログインしてフッターを読みます。次にブロックチェーンと Lightning ノードを確認します。
- ベンダーは、インシデント報告で特定された 2 つの送金先アドレスを公表しました。Bitcoin アドレス bc1p0f7wmcnesrapznymf9ljdn04pudgmh96sqtrm9vmgqxdh666fh8qvn63r7 または Litecoin アドレス ltc1qp49tmfdueyaqrmgrx0uyx4uegyygt8yt02whee への出金トランザクションを探してください。
- 一致は多くの手がかりのうちの 1 つとして扱ってください。ベンダーは、これらのアドレスの活動の一部は報告された窃盗より前から存在するようだと警告し、残高と履歴は確認された被害総額ではないと述べています。
- LND を使っている場合や使っていた場合は、ベンダーの 8 月のアドバイザリにある 4 つの確認を行ってください。
- 自分が行っていない支払い
- 心当たりのないチャネル閉鎖や知らないピア
- オンチェーンとチャネルの残高を自分の記録と照合
- 心当たりのないすべての活動
- ウォレット残高が変わっていないことは、以前の攻撃を否定しません。サーバーが 2.4.1 以前を稼働し到達可能だった場合は、マシンとそのすべての秘密が侵害されたとみなしてください。ログを保全し、「修正するには?」の手順に従ってください。
年表
- 2026-07-23: BTCPay Server 2.4.1 がリリース。この脆弱性を含む最後のリリースです。
- 2026-08-06 から 2026-08-07: メンテナーがサーバーと docker のリポジトリに複合的な修正をコミット。「Disabled unwanted routes」「Do not expose LND anymore」と macaroon のローテーションです。
- 2026-08-07: BTCPay Server 2.4.2 がリリース。アドバイザリは、攻撃者がすでにこの脆弱性を悪用し資金が盗まれていたと述べています。
- 2026-08-24: 2.4.3 が、多数のユーザーで共有されるサーバー向けのセキュリティリリースとして公開。
- 2026-09-07: 2.4.4 がチェックアウトとストアのハードニング変更を提供。
- 2026-10-06: 2.4.5 が送信リクエストのプライベートネットワーク宛先をデフォルトでブロック。
- 2026-10-26: 2.4.6 が API 権限、信頼できない入力、生成されるリンク、ブラウザ操作を強化。
- 2026-10-29: 2.4.7 が Anthropic の OSS Scanner で報告された 85 件のセキュリティ所見を修正。
- 2026-11-01: インシデント報告に記述されたウォレット流出が 13:46 UTC に発生。最初の窃盗報告が 20:56 UTC にメールで届き、ベンダーは 22:25 UTC にコミュニティへ警告。
- 2026-11-02: ベンダーが影響を受けるバージョンを 2.4.1 以前と特定し、復旧ガイダンスを公表。
FAQ
LND を使っていません。それでも危険ですか?
ベンダーが確認した 8 月の攻撃は LND の macaroon ファイルのみを狙い、他の Lightning 実装のユーザーはその認証情報リスクに露出していませんでした。11 月の窃盗は 2.4.1 以前を稼働するサーバーのオンチェーンのホットウォレットから Bitcoin と Litecoin を奪いました。復旧ガイダンスは現在、LND ユーザーだけでなく影響を受けるすべてのデプロイに適用されます。
11 月 1 日の警告後に 2.4.2 以降へ更新しました。安全ですか?
警告が出された時点で 2.4.2 以降を稼働していたサーバーには影響が確認されていません。警告後に 2.4.1 以前から更新した場合は、ベンダーは新しいウォレットを持つ新しいサーバーへの移行をやはり求めています。更新では、攻撃者がすでに得たアクセスを除去できないためです。
スキャンできる CVE はありますか?
いいえ。2026 年 11 月 3 日時点で CVE は割り当てられておらず、GitHub リポジトリにセキュリティアドバイザリもないため、依存関係スキャナーは影響範囲を検出できません。ページ下部に表示されるバージョンが唯一のバージョン確認方法であり、対応策は「修正するには?」の手順です。
ハードウェアウォレットの資金は安全ですか?
はい。支出鍵をサーバーの外に保持するウォレット(ハードウェアウォレットを含む)の資金は、今回の窃盗の影響を受けませんでした。それでもベンダーは、ウォレットの鍵を別に保持していても古いサーバーの再構築を推奨しています。攻撃者がマシンへの他のアクセスを保持している可能性があるためです。
2.4.2 より後のリリースで何が変わりましたか?
いずれもセキュリティとハードニングのリリースです。2.4.5 は、Lightning 接続、LNURL リクエスト、請求書通知 URL、Webhook のプライベートネットワーク宛先をデフォルトでブロックします。2.4.7 は Anthropic の OSS Scanner で報告された 85 件のセキュリティ所見(クリティカル 1 件、高 13 件、中 52 件、低 19 件)を修正しています。
Ostorlab で公開された決済サーバーを見つける
Ostorlab のアタックサーフェスディスカバリーは、インターネットに公開されたホストとそのサービスをインベントリします。セルフホスト型の決済プロセッサーを稼働させているサーバーを洗い出し、それらのバージョンを最初に確認できます。
参考文献
- BTCPay Server ブログ, 「Security Incident Affecting BTCPay Server 2.4.1 and Earlier」, 2026 年 11 月 2 日, 窃盗報告、復旧手順、時系列、送金先アドレス: https://blog.btcpayserver.org/btcpay-server-security-incident-2-4-1-and-earlier/ (2026 年 11 月 3 日確認)
- BTCPay Server ブログ, 「Security Advisory: Update BTCPay Server to 2.4.2 Immediately」, 2026 年 8 月 7 日, 未認証の .macaroon 窃取、LND の範囲、クレジット、暫定助言: https://blog.btcpayserver.org/security-advisory-btcpay-server-2-4-2/ (2026 年 11 月 3 日確認)
- btcpayserver コミット 6689cad41979c73f769fd42e38268fed1fa800fa, 「Disabled unwanted routes」, Nicolas Dorier, 2026 年 8 月 7 日, 5 つの [NonAction] 追加: https://github.com/btcpayserver/btcpayserver/commit/6689cad41979c73f769fd42e38268fed1fa800fa (2026 年 11 月 3 日確認)
- btcpayserver-docker コミット 21ea2e122ae5bc453ad1c0a4d6d6b6dd094dcca2, 「Do not expose LND anymore」, Nicolas Dorier, 2026 年 8 月 7 日, 削除された nginx ロケーション: https://github.com/btcpayserver/btcpayserver-docker/commit/21ea2e122ae5bc453ad1c0a4d6d6b6dd094dcca2 (2026 年 11 月 3 日確認)
- btcpayserver-docker コミット c48919f9ae51c714078076e7912dd153ba0bb01f, 「Revert 'Do not expose CLN REST anymore'」, Andrew Camilleri, 2026 年 8 月 7 日, 「LNURL issue」の分類説明と macaroon のコードパス: https://github.com/btcpayserver/btcpayserver-docker/commit/c48919f9ae51c714078076e7912dd153ba0bb01f (2026 年 11 月 3 日確認)
- btcpayserver-docker コミット 4caadeb0c3a31f88ca1a4ee46fd63d8b9db093c0, 「Triggering macaroon regeneration」, rockstardev, 2026 年 8 月 7 日, LND_MACAROON_ROTATION_ID 設定: https://github.com/btcpayserver/btcpayserver-docker/commit/4caadeb0c3a31f88ca1a4ee46fd63d8b9db093c0 (2026 年 11 月 3 日確認)
- BTCPay Server v2.4.2 リリースノート, 2026 年 8 月 7 日, 悪用の声明、クレジット、TOTP バイパス修正、NBXplorer 2.6.10 推奨: https://github.com/btcpayserver/btcpayserver/releases/tag/v2.4.2 (2026 年 11 月 3 日確認)
- BTCPay Server v2.4.7 リリースノート, 2026 年 10 月 29 日, Anthropic の OSS Scanner による深刻度別 85 件のセキュリティ所見: https://github.com/btcpayserver/btcpayserver/releases/tag/v2.4.7 (2026 年 11 月 3 日確認)
- BTCPay Server v2.4.1 リリース, 2026 年 7 月 23 日: https://github.com/btcpayserver/btcpayserver/releases/tag/v2.4.1 (2026 年 11 月 3 日確認)
- BTCPay Server v2.4.5 リリースノート, 2026 年 10 月 6 日, プライベートネットワーク宛先のデフォルトブロック: https://github.com/btcpayserver/btcpayserver/releases/tag/v2.4.5 (2026 年 11 月 3 日確認)
- btcpayserver/btcpayserver リポジトリ(スター 7,888)と Docker Hub イメージ(プル 4,131,130), 規模の数値: https://github.com/btcpayserver/btcpayserver および https://hub.docker.com/r/btcpayserver/btcpayserver (2026 年 11 月 3 日確認)
- The Hacker News, 「Hackers Exploit BTCPay Server Flaw to Steal Bitcoin and Litecoin From Hot Wallets」, 2026 年 11 月 3 日, Zeus のアクセスに関する注記とホスティング事業者の停止: https://thehackernews.com/2026/11/hackers-exploit-btcpay-server-flaw-to.html (2026 年 11 月 3 日確認)
- CISA KEV カタログの JSON フィード, 2026 年 11 月 3 日時点で BTCPay Server のエントリを確認(なし): https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json (2026 年 11 月 3 日確認)