今週のニュースレターでは、LNDの脆弱性の開示と、 組み込みセキュアエレメント内で仮想マシンを実行するプロジェクトについて掲載しています。 また、サービスとクライアントソフトウェアの更新や、Bitcoin Stack Exchangeで人気の質問とその回答、 人気のBitcoin基盤ソフトウェアの更新など、恒例のセクションも含まれています。

ニュース

  • LND 0.19.0で修正された重大な脆弱性: Matt Morehouseは、 LND 0.19.0で修正された重大な脆弱性についてDelving Bitcoinに投稿しました。 この開示情報では、1件のサービス拒否(DoS)と2件の資金摂取の脆弱性について言及されています。

    • メッセージ処理におけるメモリ不足によるDoS脆弱性: このDoS脆弱性は、 LNDが利用可能なファイルディスクリプタの数だけピア接続を許可していたことを悪用したものです。 攻撃者は被害者に対して複数の接続を開き、接続を維持したまま64KBの query_short_channel_idsメッセージをスパム送信し、LNDがメモリ不足になるまで続けることができました。 この脆弱性の緩和策は、2025年3月12日にLND 0.19.0で実装されました。

    • 新たな過剰フェイルバック脆弱性による資金喪失: この攻撃は、過剰フェイルバックバグの変種で、 フェイルバックバグの元の修正はLND 0.18.0で行われましたが、 攻撃者のではなくLNDのコミットメントを使用してチャネルが強制閉鎖された場合のマイナーな変種が残っていました。 この脆弱性の緩和策は、2025年3月20日にLND 0.19.0で実装されました。

    • HTLCスイープにおける資金喪失の脆弱性: この資金摂取の脆弱性は、 LNDのスイーパーシステムの弱点を悪用したもので、 攻撃者はLNDがオンチェーンで期限切れのHTLCを請求する試みを遅らせることができました。 80ブロック遅らせた後、攻撃者は実質的にチャネル残高すべてを盗むことができました。

    Morehouseは、サービス拒否や資金の喪失を避けるため、 ユーザーに対しLND 0.19.0以上にアップグレードするよう呼びかけています。

  • ハードウェア署名デバイス向けの仮想化セキュアエンクレーブ: Salvatoshiは、ハードウェア署名デバイス向けの仮想化セキュアエンクレーブVanadiumについて Delving Bitcoinに投稿しました。VanadiumはRISC-V仮想マシンで、 「V-Apps」と呼ばれる任意のアプリケーションを組み込みセキュアエレメント内で実行するように設計されており、 メモリとストレージの必要性を信頼されていないホストに委託します。 Salvatoshiによると、Vanadiumの目的は、限られたRAMとストレージ、ベンダー固有のSDK、 遅い開発サイクル、デバッグといった組み込み開発の複雑さを抽象化し、 セルフカストディにおけるイノベーションをより早く、よりオープンに、そして標準化することです。

    Salvatoshiは、パフォーマンスの観点から、仮想マシンはアプリケーションのビジネスロジックのみを実行し、 重い処理(暗号処理など)はECALLを介してネイティブに実行されると述べています。

    脅威モデルは既存のハードウェアウォレットと同じですが、Salvatoshiは、 このアプローチではメモリアクセスパターンの漏洩が可能になり、 ホストがどのコードページとデータページにアクセスされたか、いつアクセスされたかを観察できる可能性があると指摘しています。 これは暗号開発者にとって特に重要です。

    このプロジェクトはまだ本番環境で使用できる状態ではなく、パフォーマンスやUXなど、 いくつかの既知の制限があります。しかし、Salvatoshiは、プロジェクトのロードマップを策定するために、 開発者に試用とフィードバックの提供を求めています。

サービスとクライアントソフトウェアの変更

この毎月の特集では、Bitcoinのウォレットやサービスの興味深いアップデートを取り上げています。

  • 対話型のトランザクションビジュアライズツール: RawBitは、Webベースオープンソースのトランザクションビジュアライズツールです。 さまざまなトランザクションタイプに関する対話型のレッスンを特徴としており、 TaprootやPSBTHTLCcoinjoins およびコベナンツ提案に関する追加レッスンも計画されています。

  • BlueWallet v7.2.2リリース: BlueWallet v7.2.2リリースでは、 送信、受信、監視専用、コインコントロールおよびハードウェア署名デバイス機能を含む Taprootウォレットのサポートが追加されました。

  • Stratum v2のアップデート: Stratum v2 v1.6.0では、Stratum v2リポジトリが再設計され、 sv2-appsリポジトリが追加されました。またv0.1リリースでは、 IPC(ニュースレター #369参照)を使用した未改変のBitcoin Core 30.0との直接通信をサポートしています。 このリリースには、マイナー開発者向けのテスト用のWebツールなど、 さまざまな機能も含まれています。

  • AuradineがStratum v2のサポートを発表: Auradineは、同社のマイナーでStratum v2機能のサポートを発表しました

  • LDK Node 0.7.0リリース: LDK Node 0.7.0では、スプライシングの実験的なサポートと、 非同期支払い用の静的インボイスの提供および支払いのサポートが追加された他、 その他の機能追加とバグ修正が行われています。

  • BIP-329 Python Library 1.0.0リリース: BIP-329 Python Libraryバージョン1.0.0は、 型検証とテストカバレッジを含むBIP329の追加フィールドをサポートしています。

  • Bitcoin Safe 1.6.0リリース: 1.6.0リリースでは、コンパクトブロックフィルター再現可能なビルドがサポートされました。

Bitcoin Stack Exchangeから選ばれたQ&A

Bitcoin Stack ExchangeはOptech Contributor達が疑問に対して答えを探しに(もしくは他のユーザーの質問に答える時間がある場合に)アクセスする、 数少ない情報ソースです。この月刊セクションでは、前回アップデート以降にされた、最も票を集めた質問・回答を紹介しています。

注目すべきコードとドキュメントの変更

最近のBitcoin CoreCore LightningEclairLDKLNDlibsecp256k1Hardware Wallet Interface (HWI)Rust BitcoinBTCPay ServerBDKBitcoin Improvement Proposals(BIP)Lightning BOLTsBitcoin InquisitionおよびBINANAsの注目すべき変更点。

  • Bitcoin Core #33528は、TRUCポリシー制限を遵守するために、 未承認の祖先を持つ未承認のTRUCトランザクションのアウトプットをウォレットが使用できないようにしました。 これまでは、ウォレットはこのようなトランザクションを作成できましたが、 ブロードキャスト時に拒否されていました。

  • Bitcoin Core #33723は、DNSシードのリストから dnsseed.bitcoin.dashjr-list-of-p2p-nodes.usを削除しました。 メンテナーは、このシードがBitcoin Coreの新しいバージョン(29および30)を除外している唯一のシードであり、 「シードの結果は、公開ネットワークから公平に選択され、機能しているBitcoinノードのみで構成する必要がある」 というポリシーに違反していることを発見しました。

  • Bitcoin Core #33993は、stopatheightオプションのヘルプ文言を更新し、 同期を停止するために指定されたターゲットの高さはあくまで推定値であり、 シャットダウン中にその高さ以降のブロックが処理される可能性があることを明確にしました。

  • Bitcoin Core #33553は、以前無効とマークしたブロックのヘッダーを受信した際、   データベースの破損の可能性を示す警告メッセージを追加しました。これにより、 ユーザーはヘッダーの同期ループに陥っている可能性があることに気づくようになります。 また、このPRにより、IBDでは以前は無効だったフォーク検出の警告メッセージも有効になります。

  • Eclair #3220は、既存のspendFromChannelAddressヘルパーを Taprootチャネルに拡張し、 spendfromtaprootchanneladdressエンドポイントを追加しました。 これによりユーザーは、MuSig2署名を使用する Taprootチャネルのファンディングアドレスに誤って送信されたUTXOを協調的に使用できるようになります。

  • LDK #4231は、ブロックの再編成によってチャネルのファンディングトランザクションが未承認になった場合に、 ゼロ承認チャネルの強制閉鎖をしないようになりました。 LDKには、二重使用のリスクがあるため未承認になったロック済みのチャネルを強制閉鎖するメカニズムがあります。 しかし、ゼロ承認チャネルでは信頼モデルが異なります。このエッジケースでは、 SCIDの変更も適切に処理されるようになりました。

  • LND #10396では、LSP支援ノードを検出するためのルーターのヒューリスティックを厳格にしました。 公開宛先ノードを持つインボイス、またはルートヒントの宛先ホップがすべてプライベートであるインボイスは、 通常のノードとして扱われるようになり、プライベートな宛先と少なくとも1つの公開宛先ホップを持つものは、 LSP支援ノードとして分類されます。これまでは、緩いヒューリスティックによりノードがLSP支援ノードとして誤って分類され、 プロービングの失敗が増える可能性がありました。現在は、LSP支援ノードが検出されると、 LNDは最大3つの候補LSPをプロービングし、ワーストケースの経路(手数料とCLTVが最も高い)を使用して、 保守的な手数料の推定を提供します。

  • BTCPay Server #7022は、 Subscriptions機能(ニュースレター #379参照)用のAPIを導入し、 マーチャントがオファー、プラン、サブスクライバー、チェックアウトを作成、管理できるようになりました。 各操作ごとに約12個のエンドポイントが追加されました。

  • Rust Bitcoin #5379は、既存のP2Aアドレス検証メソッドを補完するために、 P2A(Pay-to-Anchor)アドレス構築用のメソッドを追加しました。

  • BIPs #2050は、MuSig2ディスクリプターを規定するBIP390を更新し、 既に許可されているtr()に加えて、rawtr()内でもmusig()キー式を使用できるようにしました。 これにより、ディスクリプターが既存のテストベクタおよびBitcoin Coreのディスクリプター実装と整合するようになりました。

ハッピーホリデー!

これは、Bitcoin Optechの今年最後の定期ニュースレターとなります。 12月19日(金)には、8回目の年間の振り返り特別号を発行します。 通常の発行は、1月2日(金)から再開します。