セキュリティ
Xray-coreは証明書検証バイパスの脆弱性を隠蔽した
Xray-core concealed a certificate verification bypass vulnerability (github.com)
要約
プロキシソフトウェアXray-coreが、証明書検証バイパスの脆弱性を約半年間隠蔽していた問題について報告しています。当初、Xray-coreは「allowInsecure」オプションを危険視していましたが、自身の実装(pinnedPeerCertSha256)に脆弱性が存在したにも関わらず、それを公表せず、ユーザーを危険に晒していました。脆弱性は発見後すぐに修正されましたが、その事実は隠蔽され、ユーザーは脆弱な状態に置かれていました。
全文翻訳
net4people / bbs 公開通知通知設定を変更するにはサインインする必要があります Fork 126 Star 5.3k 人気のプロキシソフトウェア Xray-core が証明書検証バイパスの脆弱性を半年間隠蔽していた #672新規イシューリンクをコピー新規イシューリンクをコピー開く開く人気のプロキシソフトウェア Xray-core が証明書検証バイパスの脆弱性を半年間隠蔽していた #672リンクをコピー説明dyhkwong が 2026年10月2日にオープンしたイシュー本文免責事項:私は脆弱性の報告者です。Xray-core のメンテナーは、「証明書の検証をスキップする」機能(つまり、Xray-core の allowInsecure オプション)またはプロキシソフトウェアの同様のオプションを軽視しており、これはセキュリティ対策がないのと同じであり、ユーザーを「裸で」晒し、中間者攻撃のリスクにさらすと主張しています。しかし、Xray-core 自体の脆弱性が原因でユーザーが「裸で」中間者攻撃の被害に遭う場合、Xray-core はそれを隠蔽し、何もなかったかのように振る舞います。2021年10月21日、既知の問題がない pinnedPeerCertificateChainSha256 オプションが Xray-core に追加されました。これは二重のセキュリティを提供します。このオプションが有効になっている場合、カスタム証明書チェーンのピン留めロジックが通常の証明書検証に加えて実行されます。これは自己署名証明書の使用も容易にします。安全に自己署名証明書を使用するために、ユーザーは allowInsecure と pinnedPeerCertificateChainSha256 の両方を有効にして、通常の証明書検証をスキップし、カスタム証明書チェーンのピン留めロジックのみを実行できます。しかし、Xray-core は後に allowInsecure は安全ではなく、allowInsecure を有効にすることは「裸でいる」ことと同じであり、ユーザーを中間者攻撃に対して脆弱にすると主張しました。2026年1月9日、Xray-core は pinnedPeerCertificateChainSha256 を削除し、代わりに新しいオプション pinnedPeerCertSha256 に置き換え、ユーザーが証明書の検証をスキップする(いわゆる「裸でいる」)のを防ぎました。自己署名証明書の場合、allowInsecure と pinnedPeerCertSha256 の両方を有効にする必要があり、これにより通常の証明書検証がスキップされ、カスタム証明書のピン留めロジックのみが実行されます。これにより、ユーザーは自己署名証明書を安全に使用できるようになるはずです。しかし、pinnedPeerCertSha256 には証明書検証バイパスの脆弱性が含まれていました。2026年1月13日、Xray-core はこの証明書検証バイパスの脆弱性を含む最初のバージョンをリリースしました。古いオプションは削除されていたため、ユーザーは新しい脆弱なオプションに移行するしかありませんでした。この時点で、証明書検証の防御はすでに崩壊寸前でした。幸いなことに、ユーザーが自己署名証明書を使用せず、allowInsecure を有効にしない限り、通常の証明書検証は依然としてある程度の保護を提供できました。2026年1月16日、Xray-core は pinnedPeerCertSha256 のロジックを変更し、通常の証明書検証を常にスキップし、カスタム証明書のピン留めロジックのみを実行するようにしました。これは、保護レイヤーが失われたことを意味します。通常の証明書検証は常にスキップされます。pinnedPeerCertSha256 に検証バイパスの脆弱性が存在する場合(そして残念ながら存在します)、カスタム証明書のピン留めロジックは機能せず、実質的に証明書の検証が何も行われなくなり、中間者攻撃が成功する可能性があります。この時点で、証明書検証の防御は完全に崩壊しました。2026年2月6日、私は Xray-core の pinnedPeerCertSha256 で上記の証明書検証バイパスの脆弱性を発見し、Xray-core のメンテナーに非公式に報告しました。中間者攻撃者は、証明書チェーンの任意の場所にリーフ証明書を挿入でき、カスタム証明書のピン留めロジックはリーフ証明書を正常に検証するため、中間者攻撃が成功する可能性があります。これは非常に単純な脆弱性であり、高度なセキュリティ知識がなくても、一目で発見できました。同日、Xray-core はこの証明書検証バイパスの脆弱性を静かに修正しましたが、コミットメッセージは「コードの簡素化」を理由に遠回しな表現でした。同日、Xray-core はセキュリティ脆弱性について一切言及せずに新しいバージョンをリリースしました。ユーザーは知らされないままでした。さらに悪いことに、同日、Xray-core は Telegram チャンネルで次の声明を発表しました:「ソフトウェアはセキュリティを核として設計され、人的要因の影響を排除して、エンドユーザーでさえも裸(完全に保護されていない状態)にならないようにする必要があります。」しかし、現実はこうです。Xray-core の貧弱なセキュリティ設計と、それが作り出した人的要因により、ユーザーは安全な古いオプションから安全でない新しいオプションへの移行を余儀なくされ、「エンドユーザー」は何ヶ月もの間、知らず知らずのうちに晒されていました。Xray-core 自体が、ユーザーを危険にさらし、「裸」にさせた人的要因なのです。Xray-core は、セキュリティ脆弱性をユーザーに開示することで是正措置を取ることができたはずです。これにより、脆弱性を修正した新しいバージョンへのアップグレードを促し、影響を可能な限り最小限に抑えることができました。残念ながら、彼らはそれを隠蔽することを選択しました。2026年7月3日現在、Xray-core はまだ脆弱性をユーザーに開示していませんでした。2026年7月3日、Xray-core の脆弱性修正が不完全であり、特定の状況下では証明書検証がバイパスされる可能性があることを発見しました。脆弱性が悪意を持って再び隠蔽されるのを防ぐため、GitHub Security Advisory を通じて報告するしかありませんでした。その時点で、Xray-core の人的要因により、ユーザーは何ヶ月もの間、知らず知らずのうちに「裸」の状態でした。これは、Xray-core のセキュリティ記録がいかに貧弱であるかをより多くの人に知ってもらうためのものです。リアクションは現在利用できませんアクティビティGitHub でこの会話に参加するには無料でサインアップしてください。すでにアカウントをお持ちですか?サインインしてコメントするメタデータメタデータ担当者割り当てなしラベルなしラベルなしタイプなしプロジェクトなしプロジェクトなしマイルストーンなしマイルストーンなし関係なしなし開発ブランチまたはプルリクエストなしイシューアクションGitHub Copilot アプリで開く