Windows 向け WireGuard がバージョン 1.0 に到達しました。

2026/04/22 6:26

Windows 向け WireGuard がバージョン 1.0 に到達しました。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

サマリー:

Jason A. Donenfeld は、Windows および WireGuardNT の安定版 v1.0 を正式にリリースし、一般的な利用に向けた全ての重要な安定性問題が完全に解決されたという大きなマイルストーンを達成しました。この更新は、ネットワークの変化を監視するために非効率な 3 秒のポーリングループに依存していた以前の高水準の不具合を含むワークアラウンドを排除します。代わりに、開発者は MTU のアップデートを即座に処理するために直接 NSI メッセージインターセプトを利用するより安全な技術的なアプローチを実装し、遅延や不安定性のないはるかに滑らかなネットワークパフォーマンスを確保しました。

このリリースでは 42 以上の特定のバグ修正が組み込まれ、コードベースは C23 規格にアップグレードされると同時に、古い Windows システムとの互換性を維持しています。ユーザーは内置の更新機能、または公式ウェブサイトからの直接ダウンロードを通じて、これらの改善を直ちにインストールできます。標準的な最新環境だけでなく、バージョン 1809 よりも前のレガシーオペレーティングシステムにおいても、本質的な DNS ファイルオーバーメカニズムを実現します。この重要なセキュリティツールが今後も適切に維持され、完全にサポートされることを確実にするために、プロジェクトチームはユーザーから金銭的寄付の提供を奨励しています。この更新により、WireGuard は実験的なユーティリティから、信頼性の高いプロダクション環境向けネットワークソリューションへと実質的に変容しました。

本文

ジャソン A・ドネルフェルド(Jason A. Donenfeld)

2026 年 4 月 18 日(土)16:23:52 UTC

前回のメッセージ(スレッド順):WireGuard Windows 0.6.1 - 問題のタイムライン(トンネル切断とインポート機能仍未解決)

メッセージのソート方法:[日付] [スレッド] [件名] [著者]


こんばんは、またお送りいたします。

WireGuardNT および Windows 版 WireGuard の v1.0 リリースを心から嬉々としてご報告申し上げます。長きにわたり課題となっていた最後の「1.0 ブロッカー」がようやく解消され、このマイルストーンに到達したことを大変光栄に感じております。今後は標準内蔵のアップデーターからも入手可能となっております。また、以下より最新版をダウンロードいただけますようお願いいたします:

さらに、Windows 向けのそれぞれの WireGuard プロジェクトについて詳しく知りたい方は:

詳細を述べる前に、WireGuard プロジェクトは大手企業様のご支援ならびに個人の皆様のご寄付により運営されていることをご案内申し上げます。ご関心のある方は以下よりご支援いただけますようお願いいたします:https://www.wireguard.com/donations/。貴社で WireGuard をお使いの場合は、ご雇用主様に対して大規模寄付者となり、同ページに記載されるよう交渉することをご検討いただければ幸いです。また、VPN プロバイダーから VPN サービスをご利用の際は、彼らへのご支援要請の提案を考慮いただくことも一案です。そのようなご支援はプロジェクト存続に大きく寄与しており、まさにこのプロジェクトが継続できる理由であるかと確信しております。

WireGuardNT の 1.0 リリースは、ソースコードの大規模なレビューおよび無数の新たなテスト時間を費やした結果、多数のバグ修正を含んでおります。しかし同時に、長年にわたってリリースブロッカーとして位置づけられていた二つの重大な改善点も達成いたしました。

第一に、バージョン 1.0 では

NdisWdfGetAdapterContextFromAdapterHandle()
関数が活用されるようになりました。WireGuard の IOCTL は、NDIS デバイスノードを介して動作し、それを通じて NDIS のセットアップおよび権限を引き継ぐ仕組みとなっております。各 IOCTL はデバイスの「ファンクショナルデバイスオブジェクト(FDO)」を経由しますが、この FDO のポインタから WireGuard 固有の割り当てられた状態にアクセスするための文書化された関数は存在いたしませんでした。FDO の DeviceExtension フィールドは NDIS_MINIPORT_BLOCK シー構造体に指しており、そのシー構造体自体が WireGuard 固有の状態へのポインターを有しております。しかしながら、後者のポインターは NDIS_MINIPORT_BLOCK の文書化された範囲外に位置するため、潜在的に不安定なオフセットを持つ可能性があります。従来は、FDO の「Reserved」メンバにポインターを格納していましたが、いつどこで使われるのか分からないこの手法はまさに時の爆弾といったものでございました。幸いなことに、初版以降のすべての Windows 10 バージョンにおいて、NetAdapterCx のために当初追加された
NdisWdfGetAdapterContextFromAdapterHandle()
関数が用意されており、これが直近で変更される見込みもなく、動作も改変されないとの保証があります。この関数は、ドライバ固有の状態が格納されている NDIS_MINIPORT_BLOCK の適切なオフセットへアクセスする機能を有しております。これらを組み合わせることで、以下のような便利な関数を構築することができました:

static WG_DEVICE *
WgDeviceFromFdo(_In_ DEVICE_OBJECT *DeviceObject)
{
    if (DeviceObject->DeviceType != FILE_DEVICE_PHYSICAL_NETCARD ||
        !DeviceObject->DeviceExtension)
        return NULL;
    return NdisWdfGetAdapterContextFromAdapterHandle(DeviceObject->DeviceExtension);
}

このアプローチは良好に機能しており、将来の信頼性確保につながることを願っております。

第二に解決された 1.0 の重大なブロッカーは、正しく MTU(Maximum Transmission Unit)の変更通知を処理できるようになった点です。ご存じない方もいらっしゃるかもしれませんが、WireGuard ではパケットをインターフェースの MTU まで最大 16 バイト単位でパディングしますが、これはトラフィック分析攻撃に対する防御措置としております。このため、WireGuard ドライバーは自身の MTU を認識する必要があるのです。Linux の場合、ネットワークインターフェース自体の属性としてこの情報が完全に利用可能であり、

skb->dev->mtu
により容易に抽出可能ですし、各種計算も実行できます。しかし Windows 上では、MTU はネットワークアダプターの最小・最大値、TCP/IP インターフェースで選択された MTU(v4 および v6 の両ケースに分岐)、ならびに TCP/IP インターフェースのサブインターフェースに対する同様の分岐ケースによって決定される複合的な属性となっております。やや複雑ではございますが、ある時期には合理的だったデバイスモデルに適合していたものと存じます。ドライバはアダプターの最小・最大 MTU を制御する責任があります。PowerShell の
Set-NetIpInterface
はインターフェースレベルの MTU を変更し(
SetIpInterfaceEntry()
を介して)、一方
netsh.exe
はサブインターフェースレベルの MTU を変更しますが、いずれも細かくは相互に影響を与え合い、最終結果としては同じ影響を及ぼします。

通常、これらの変更に関する通知を取得する方法(ユーザー空間またはカーネル空間から)として行われるのは、

NotifyIpInterfaceChange()
であり、何か変化があった際に
MibParameterNotification
を引数にしたコールバック関数を呼び出すものです。しかし、MTU の変更についてはこのコールバックが発火することはありません!これが唯一欠落している項目です。コールバックが受信する構造体には MTU フィールドは用意されていますが、いまだに発火されていません。関連する Microsoft チームのメンバーの方から 2021 年に「これは単なる見落としであり修正が必要だ」とお教えいただいたほか、別のメンバーの方から 2019 リリースへの後方移植(backport)を検討するとのお話もございましたが、何らかの原因により実現されず、今や 2026 年となっております。その間、非常に恐ろしいながらも安定した回避策を実装しておりました:スレッドを起動し、3 秒おきに稼働中の各 WireGuard アダプターの LUID に対して
GetIpInterfaceEntry()
を呼び出すという手法(ご承知の通り、sleep によるポーリング)です。ネットワーキングの観点から見れば極めて不快な方法でございましたが、それが唯一文書化されていた手段でありました!同時に、Windows の各新リリースにおいてバグが修正されるポイントを把握するための小さなプログラムも作成し、その情報に基づいてバージョンチェックを調整して、旧バージョンではポーリングループを実行させないようにしておりました。

残念ながら、このバグは修正されることはありませんでした。しかし、このような不快な回避策を採用したまま 1.0 をリリースするに足るかと思案を巡らせました。そこで新たなアプローチを開始いたしました……ユーザー空間からの MTU 更新はすべて

\Device\Nsi
というファイルを経由します。NSI ドライバーはこのリクエストを各種インターフェースへdispatchし、さらに各インターフェースにおける変化を追跡する責任を有しております。標準的な NT フィルタスタイルのパターン(
IoAttachDeviceToDeviceStack()
を用いた)で
\Device\Nsi
へアタッチした後、リバースエンジニアリングにより特定した
IOCTL_NSI_SET_ALL_PARAMETERS
メッセージをインターセプトし、
NSI_SET_ALL_PARAMETERS
構造体とのマッチングを行い、オブジェクトタイプ
NlInterfaceObject
および
NlSubInterfaceObject
を対象とし、
NSI_IP_INTERFACE_RW
および
NSI_IP_SUBINTERFACE_RW
内の
NlMTU
パラメータを読み取る手法を取りました。これらの構造体の関連部分はおそらく極めて安定していると考えております。実際には良好に動作しており、WireGuard ドライバーは今や 3 秒以内に変わるのではなく、MTU の変更に対して瞬時に対応できるようになりました。しかも、不美しきポーリングループは不要となりました。ご興味のある方は
driver/nsi.c
および
driver/undocumented.h
のコードを閲覧いただけますようお願い申し上げます。

このように、単に一つの値へのアクセスを得るために多大な労力と別々の

.c
ファイルの追加が必要となりますが、これが世の中のものであり、WireGuard を適切に実装するためには必ず手に入れる必要がある情報なのです。

最後に、その他様々な小さな変更や修正も含まれており、今では C23 モードでコンパイルすることにより

typeof()
キーワードの利用が可能となりました。また、理論的には
__declspec(align(n))
ではなく標準の C 言語仕様である
alignas(n)
を採用することも可能ですが、C の
alignas()
は構造体のメンバや変数に対してのみ機能し、タイプに対しては動作しませんため、やや不美しくなります。もし構造体が常に特定のアライメントで配置される必要がある場合、最初のメンバに
alignas(n)
を付けておきます。これは少々違和感を覚えるため、gcc の
__attribute__((aligned(n)))
(Linux が自身の
__aligned(n)
マクロを定義する方法でもあります)とほぼ同等で扱いやすい
__declspec(align(n))
を引き続き採用することといたしました。

Windows 版 WireGuard について……WireGuardNT は前述の通り同プロジェクトにバンドルされたドライバ構成要素です——この部分では、様々な種類の 42 のバグおよび正し性の誤りを修正いたしました。さらに、古い Windows 10 バージョン向けの一つの便利な改善点もあります。Windows 10 1809 で

SetInterfaceDnsSettings()
(システム DNS サーバーのプログラムによる設定用)が導入される前は、文書化された唯一の方法は
netsh.exe
に呼び出しを行うものであり、我々もその手法を採用しておりました。これは非常に不美しく、その処理には複雑で棘のあるパース処理が必要でした。幸いにも新しい Windows ではこの操作は不要となっております。しかし、古い Windows バージョンは本質的に完全に動作している状態にあるため、
netsh.exe
が内部で行っていることをリバースエンジニアリングし、それを我々が直接実装すれば、それが将来変更されるリスクについても心配する必要はないと考えた次第です。実際には非常に簡単であることがわかりました——通常のレジストリ部分の二つの変数を設定し、Dnscache サービスへ
ControlService(SERVICE_CONTROL_PARAMCHANGE)
を送信するだけで完了します。極めて簡単です。

さて、以上の状況につきまして、お役に立たない点や問題がございましたら、どうかお知らせください。

Jason

同じ日のほかのニュース

一覧に戻る →

2026/04/24 3:01

文書の見直しのお手伝いをいたしますが、ご提示いただいた「GPT-5.5」という入力は、翻訳や編集の対象となる文章を含んでおりません。 ルールに従って文書の体裁を整える対象となりますよう、該当する原文をご提供ください。 また、「GPT-5.5」という名称は、現時点で公開されている正式版のモデル名とは一致しておりません(現在最新シリーズは GPT-4o や GPT-4 Turbo などです)。 特定のテキストを処理させていただく場合は、その内容をお貼り付けください。

## Japanese Translation: OpenAI は、エージェント型コーディング、高度なコンピューター操作、知識作業、科学研究を特に目的に設計された、至今に至るまで最も知的で直感的なモデルである GPT‑5.5 を発表します。このモデルは GPT‑5.4 と同等のトークンあたり遅延を実現し、Codex タスクにおいて著しくトークン使用量を削減することで、NVIDIA GB200 および GB300 NVL72 システム上で Codex が負荷分散のヒューリスティクスを最適化するのを支援しながら、生成速度を 20% 以上向上させています。複雑なコマンドラインワークフローに関する Terminal-Bench 2.0 で 82.7% の精度、実世界の GitHub アイシュー解決における SWE-Bench Pro で 58.6% の精度を実現し、最先端のパフォーマンスを提供します。Codex においては、実装からリファクタリング、デバッグに至るまでのエンドツーエンドのエンジニアリングタスクに優れ、大規模システム全体を文脈として保持しつつ、曖昧なエラーに対しても推論を行います。安全性は引き続き最優先事項であり、モデルは新たなサイバーおよび生物学リスクに対して厳格に評価され、レッドチームによってテストされ、ほぼ 200 の信頼できるパートナーからのフィードバックに基づいて改良され、「生物学・化学およびサイバーセキュリティ能力において OpenAI の準備度フレームワークの「High」カテゴリー分類」を受領しました。GPT‑5.5 は、ChatGPT および Codex で Plus、Pro、Business、Enterprise ユーザーへ段階的に導入されており(gpt-5.5 Pro は Pro、Business、Enterprise 向けに利用可能)、API アクセスも近日中に gpt-5.5 について入力トークン当たり 5 ドル、出力トークン当たり 30 ドル(gpt-5.5-pro は 30 ドル/180 ドル)、および Very soon at $5/1M input tokens and $30/1M output tokens for gpt-5.5 ($30/$180 for gpt-5.5-pro) のレートで利用可能になります。OpenAI はまた、Trusted Access for Cyber を通じて「cyber-permissive」モデルの提供範囲を拡大し、検証済みユーザーに制限が少なくなった高度なセキュリティツールへのアクセスを提供します。知識作業ベンチマークでは、プロンプトチューニングなしで GDPval で 84.9%、OSWorld-Verified で 78.7%、Tau2-bench Telecom で 98.0% の強力な結果を示しました。 ## Text to translate: ## Summary: OpenAI is launching GPT‑5.5, its smartest and most intuitive model yet, specifically engineered for agentic coding, complex computer use, knowledge work, and scientific research. The model matches GPT‑5.4 per-token latency while significantly reducing token usage for Codex tasks, achieving faster generation speeds by over 20% when serving on NVIDIA GB200 and GB300 NVL72 systems (with help from Codex in optimizing load balancing heuristics). It delivers state-of-the-art performance with 82.7% accuracy on Terminal-Bench 2.0 for complex command-line workflows and 58.6% on SWE-Bench Pro for real-world GitHub issue resolution. In Codex, it excels at end-to-end engineering tasks—from implementation and refactoring to debugging—while holding context across large systems and reasoning through ambiguous failures. Safety remains a top priority: the model was rigorously evaluated against emerging cyber and biology risks, tested by redteamers, and refined with feedback from nearly 200 trusted partners, earning a "High" classification under OpenAI's Preparedness Framework for biological/chemical and cybersecurity capabilities. GPT‑5.5 is rolling out to Plus, Pro, Business, and Enterprise users in ChatGPT and Codex (with GPT‑5.5 Pro available to Pro, Business, and Enterprise), and API access will be available very soon at $5/1M input tokens and $30/1M output tokens for gpt-5.5 ($30/$180 for gpt-5.5-pro). OpenAI also expands "cyber-permissive" models via Trusted Access for Cyber, allowing verified users to access advanced security tools with fewer restrictions. Knowledge work benchmarks show strong results: 84.9% on GDPval, 78.7% on OSWorld-Verified, and 98.0% on Tau2-bench Telecom without prompt tuning.

2026/04/23 23:17

Bitwarden CLI、継続中の Checkmarz サプライチェーン攻撃で乗っ取られたと判明

## 日本語訳: セキュリティ研究者の InstallSocket が、継続中の「Checkmarx」キャンペーンの一環として、Bitwarden CLI ツール(@bitwarden/cli バージョン 2026.4.0)を対象とした重大なサプライチェーン攻撃を発見した。当該侵害は npm パッケージ内の `bw1.js` ファイルにあり、Bitwarden のビルドパイプラインにおける改ざんされた GitHub Action を利用して悪意のあるコードを注入したものである。これは CLI を使用する組織に対して直ちに脅威をもたらすものの、Chrome 拡張機能や MCP サーバーなどの他の配信形態は影響を受けていない。 悪意のあるペイロードは、主要なクラウドプロバイダー(AWS、Azure、GCP)、npm、SSH および Claude/MCP の設定ファイルにアクセスするためにメモリーをスクレイピングし、機密認証情報を収集することを目的としている。データを流出させる手法としては、「Dune 風」の命名規則を用いた GitHub API アップロードや、npm トークンを盗むためのパッケージのリパブリッシュが含まれる。このリスクに直面している組織は、InstallSocket からのさらなる技術分析的な確認を待たずに、直ちにビルドログを検証して侵害の指標(改ざんされたシェルプロフィール(`~/.bashrc`、`~/.zshrc`)、特定のエビディングファイル(`/tmp/tmp.987654321.lock`)、「Shai-Hulud」や"Butlerian Jihad"といったキーワードなど)を特定し、すべての公開された機密情報(SSH キー、トークン、CI/CD クレデンシャル等)を再発行するよう求める。

2026/04/24 5:14

「『インターネットを 1999 年あたりのまま使いこなすような』感覚を持つ」あるいは「ネットの使い方を、まるで 1999 年のあの頃のように(古き良き時代のように)捉えている」という意味で解釈できます。

## Japanese Translation: 著者は、現代のインターネット利用習慣が私達をアルゴリズムによる操作と「ドゥームスクロリング(絶え間ないスクロール)」という循環に陥れ、ウェブの可能性の僅かな部分にのみ留まらせていることを主張している。注意の代理権を取り戻すためには、社会メディアプラットフォームから、RSS フィードや IRC/XMPP プロトコル、HTTP/SMTP サービスといった、企業インセンティブではなく制約によって設計された直接データソースへ移行する必要がある。このアプローチは、深い高品質なコンテンツへのアクセスを保証すると同時に、反復的な LLM ポストのような低努力な AI 生成コンテンツ(スロープ)を能動的に拒否することを可能にする;著者は、「これはこれではなく、あれだ」といった類の明らかなフレーズが付けられたコンテンツを特に避けている。 歴史的には、1999 年の時点で人口のおよそ 4% がインターネットを利用していただけであり、その時点ではソーシャルメディアとアルゴリズムが現在の約 75% の浸透率を支配する以前のことだった。提案される道筋は、Miniflux などのツールを設定して意図的な購読を通じて独自の現実を編集することを受け入れ、信頼性の高いテキスト通信のために単純なプロトコルを採用すること(1980 年代後半以降の IRC;OMEMO 暗号化を実装したセルフホスト XMPP)、そしてMATRIX/Element といったより有益でないプラットフォームをあえて避ける代わりに確立された標準を採用することを含む。最後に、ユーザーは専門的な検索習慣を採用すべきであり、受動的な閲覧ではなく正確なクエリの作成を通じて意味のある情報を抽出し、技術大手をユーザー主導の注意経済に適応させる可能性がある方向へと推すものである。