こんにちは!コンテンツ制作部のライターです。
今日のテーマを一言で言うと 「メモリの境界を守る戦いは、エッジのサーバーから足元のカーネル、npm パッケージまで、同時進行している」 です。
NGINX にクリティカルな脆弱性、KDE Plasma のメジャーアップデート、Linux カーネルから危険な C 関数の根絶、Epic Games の新 VCS 公開、そして北朝鮮系ハッカーによる npm サプライチェーン攻撃——5本立てでお届けします。
1. NGINX CVE-2026-42530 — HTTP/3 QUIC の use-after-free が招くクリティカル RCE
概要
世界の Web サーバー市場で約 31.9% のシェアを握る NGINX に、HTTP/3 QUIC 実装を起点とするクリティカルな脆弱性 CVE-2026-42530 が発見された。開発元の F5 が 2026 年 6 月 17 日にアウトオブバンド(定例外)のセキュリティ通知を出し、同日に修正版 NGINX 1.31.2 をリリースしている。CVSS v4.0 スコアは 9.2(Critical) 、v3.1 では 8.1(High)だ。
一言でいうと、HTTP/3 のヘッダ圧縮処理に潜む use-after-free(解放済みメモリの再利用) バグだ。未認証のリモート攻撃者が、細工した QPACK エンコーダストリームを送り込むことで NGINX のワーカープロセスをクラッシュさせ(DoS)、条件が揃えばリモートコード実行(RCE)にまで発展しうる。「未認証」「リモート」という 2 つの言葉が並ぶ時点で、防御側としては即応が求められる。
技術詳細
仕組みを噛み砕こう。HTTP/3 はトランスポートに UDP ベースの QUIC を使い、ヘッダ圧縮には QPACK という仕組みを使う。QPACK は「エンコーダストリーム」と「デコーダストリーム」という専用ストリームで動的テーブルを管理する。
use-after-free はこの QPACK 状態管理の隙を突く。攻撃者が細工した HTTP/3 セッションを送り込み、既存の QPACK エンコーダストリームをセッション途中で「再オープン」しようとすると、NGINX のワーカープロセス内部で接続管理構造体が free(解放) されたにもかかわらず、別の処理パイプラインからその解放済みポインタが参照され続ける競合状態が生まれる。次のアクセスが来た瞬間、メモリ破損またはセグメンテーションフォルトが起きる。
重要なポイントが 2 つある。まず 攻撃に認証が不要 で、UDP の 443 番ポートに IP レベルで到達できれば成立する。次に、HTTP/3 QUIC は NGINX の デフォルトでは無効 で、設定ファイルに listen 443 quic; と http3 on; を明示した環境だけが対象になる。HTTP/3 を意図的に有効化していない多数の環境は設定変更なしで影響を受けない。
ただし同日公開の CVE-2026-42055 (HTTP/2・gRPC プロキシのヒープバッファオーバーフロー、CVSS v3.1 = 7.3)は、影響範囲が NGINX 1.13.10〜1.31.1 という広いレンジに及ぶ。「うちは HTTP/3 を有効にしていないから無関係」と早合点せず、CVE-2026-42055 の方も合わせてパッチを当てる必要がある。
なぜ重要か(エンジニア視点)
HTTP/3 のグローバル採用率は 2025 年 10 月時点で 35% に達し、上位 1 万サイトの 30% 超がデフォルトで HTTP/3 をネゴシエートする。Kubernetes 環境では ingress-nginx コントローラーが Ingress コントローラー市場の 60% 超を占める。つまり HTTP/3 を有効化した NGINX は、高トラフィックのエッジサーバーとして直接インターネットに露出しているケースが多く、攻撃者にとって格好のターゲットだ。
対応の優先順位: まず NGINX 1.31.2 へのアップデート。すぐ当てられない場合は listen から quic パラメータと http3 on; を外して HTTP/3 を無効化すれば攻撃面はゼロになる。NGINX Plus R33〜R36 利用者は F5 の公式ガイダンス(K000161616)を参照のこと。
2. KDE Plasma 6.7 — 21 年来の per-screen 仮想デスクトップと X11 セッション最後の砦
概要
2026 年 6 月 16 日リリースの KDE Plasma 6.7 は、2 つの歴史的意味を持つ。
1 つは、 2005 年から 21 年間 も未解決だった「画面ごとに独立した仮想デスクトップ」を Wayland 限定でついに実装したこと。もう 1 つは、このバージョンが X11 セッションを正式に提供する最後の KDE Plasma であること。次の 6.8(2026 年 10 月 14 日リリース予定)でログイン画面は Wayland セッションのみを提示するようになる。
技術詳細
per-screen 仮想デスクトップ とは、複数モニター環境で各モニターごとに独立して仮想デスクトップを切り替えられる機能だ。従来の Plasma では、仮想デスクトップを切り替えると全モニターが一斉に切り替わってしまい、「サブモニターには参照ドキュメントを固定したまま、メインモニターだけ作業空間を切り替えたい」という使い方ができなかった。
この要望は KDE のバグトラッカーに Bug #107302 として 2005 年 6 月 12 日に登録され、21 年間誰も解決できなかった。解決したのはフルタイム PHP エンジニアの Hynek Schlindenbuch 氏で、KDE Plasma を古いノートパソコンにインストールしてわずか数か月後にマージリクエストを開いた。「自分が欲しいから作った」という個人的動機が、コミュニティ 20 年越しの宿願を成就させた。
この機能は Wayland セッションでのみ動作 する。デフォルトはオフで、システム設定からオプトイン方式で有効化する。
X11 セッション廃止 の根拠は移行率だ。KDE 内部統計によれば、Plasma 6.6 ユーザーの 95% 以上 がすでに Wayland セッションを使っている。X11 アプリの互換レイヤー XWayland は引き続きサポートされるため、「X11 セッションの終わり」と「X11 アプリの終わり」は別物である点は押さえておきたい。
なぜ重要か(エンジニア視点)
Plasma 6.7 では Intel 統合 GPU 搭載システムでハードウェアオーバーレイプレーンがデフォルト有効化され、高解像度ディスプレイ上で 最大 70% の CPU 使用率削減 が報告されている。Wayland への移行が具体的なパフォーマンスメリットをもたらしている証左だ。
3. Linux 7.2: strncpy() 根絶 — 6 年・362 コミットの地味で偉大な旅
概要
Linux カーネル 7.2 のマージウィンドウで、危険な C 文字列関数 strncpy() の全使用箇所とアーキテクチャ固有の実装が、カーネルから 完全に除去 された。
Google の Kees Cook 氏(KSPP 主導者)が 2020 年 8 月に起票した Issue #90 を起点に、 70 名のコントリビューターによる 362 コミット が約 6 年かけて積み重ねられた末の「バグクラスの根絶」だ。
技術詳細
strncpy() の欠陥は主に 3 つある。
欠陥 1: NUL 終端の未保証。 コピー元が n バイト以上あるとき、コピー先バッファに NUL 終端文字を書かない。カーネルメモリにはパスワードや暗号鍵が散在するため、情報漏洩脆弱性に直結する。
欠陥 2: 不要なゼロパディング。 コピー元がコピー先より短い場合、残りのバッファを全部ゼロで埋める。代替の strscpy を使ったベンチマークでは CPU オーバーヘッドが最大 15% 削減 された。
欠陥 3: 直感に反するセマンティクス。 開発者に「安全に使った」と誤解させやすい設計だ。
代替関数は目的別に 5 つ整備された: strscpy()、strscpy_pad()、strtomem()、strtomem_pad()、memcpy_and_pad()。
なぜ重要か(エンジニア視点)
筆頭コントリビューターの Justin Stitt 氏(Google)は 362 コミット中 211 コミット(58%) を担当した。コールサイトごとに意図が違うため機械的な一律置換ができず、6 年分の丁寧な手動レビューが必要だった。
バグを検出するのではなく、バグを書く手段そのものを消す ——この発想こそが、深層的なメモリ安全の正体だ。
4. Epic Games Lore VCS — Rust 製 OSS バージョン管理が Perforce 独占に挑む
概要
Epic Games が 2026 年 6 月 17 日、新しいバージョン管理システム「 Lore 」を MIT ライセンスでオープンソース公開した。Rust で実装されたこの Lore は、ゲーム開発の現場で長らく有料独占が続いてきた Perforce に正面から挑む。
GitHub リポジトリ(EpicGames/lore)は公開数時間で 2,850 件以上のスター を獲得した。
技術詳細
Lore は Epic が UEFN(Unreal Editor for Fortnite)の内部ツールとして開発・運用してきた Unreal Revision Control(URC) を起源とする。
なぜ既存ツールでは不十分なのか。 Git/Git LFS はバイナリファイルを「二級市民」として扱い、Perforce は 1 ユーザーあたり約 39 ドル/月 のパーシート課金が重く、独占的なワイヤープロトコルがサードパーティ実装を事実上不可能にしている。
Lore の主要な技術選択:
- リポジトリの状態は Merkle ツリー で表現
- ハッシュは BLAKE3 を採用(Git の SHA-1、Perforce の MD5 より高速・並列対応)
- 重複排除は フラグメント(チャンク)単位(256KiB 超は FastCDC で分割、平均 64KiB)
- スパース checkout は 構造的前提 として設計
- ネットワークなしでコミット・ブランチ・diff が実行可能
なぜ重要か(エンジニア視点)
バージョン 0.8.3 はプレステーブルリリースで、オンディスクフォーマットと API はリリース間で変わりうる。ただし MIT ライセンス・無料・公開プロトコル仕様・6 言語 SDK 同時リリース(JavaScript・Python・C#・Go 等)は、エコシステムを最初から巻き込む意図のシグナルだ。
5. Mastra npm サプライチェーン攻撃 — 88 分・144 パッケージを汚染した Sapphire Sleet
概要
2026 年 6 月 17 日、北朝鮮の国家ハッカーグループ Sapphire Sleet が AI フレームワーク Mastra の npm スコープを乗っ取り、わずか 88 分間(01:12〜02:39 UTC) の全自動攻撃で 144 パッケージ に悪意ある依存を注入した。影響を受けたのは週次合計 1.1M 超 のダウンロードだ。
狙いは 166 種類の仮想通貨ウォレット拡張機能 と、開発者の LLM API キー(OpenAI・Anthropic・Google)・CI/CD シークレット。npm install を叩いた瞬間に開発マシンが侵害される。
技術詳細
攻撃のタイムライン:
- 6 月 16 日: npm ユーザー
sergey2016がeasy-day-js@1.11.21(おとり版)を公開 - 6 月 17 日 01:01:
easy-day-js@1.11.22(悪意あるコード付き)を公開 - 01:12: 侵害済みアカウント
ehinderoを使って @mastra スコープへの一括再公開を開始 - 02:39: 144 パッケージへの汚染バージョン公開が完了
侵害の起点は ehindero という 「忘れられた貢献者アカウント」 だ。 16 か月以上 も非アクティブだったにもかかわらず、スコープ全体への publish 権限が残り続けていた。
マルウェアは 4 ステージで動作する。Stage 1 の setup.cjs(4,572 バイト)が postinstall フックとして実行され、C2 サーバー(23.254.164.92:8000)から約 41KB の第二ステージを取得。Stage 2 は Node.js 製 RAT で、ブラウザ履歴・ウォレット拡張・OS 別永続化機構をターゲットにする。
なぜ重要か(エンジニア視点)
この事件が露わにした構造的弱点:
- 休眠アカウントのパーミッション残留 — 16 か月非アクティブなアカウントが 140 超のパッケージへの publish 権限を保持し続けた
- ライフサイクルスクリプトのデフォルト実行 —
postinstallはnpm install時にデフォルトで自動実行される。コードをimportしなくても感染する - 広域スコープ publish 権限 — 1 アカウントの侵害でスコープ下の全パッケージが被害を受ける
影響を受けるバージョン: mastra v1.13.0 以前、@mastra/core v1.42.0 以前。
即時対応: 2026-06-17 01:12〜02:39 UTC 以降に @mastra/* をインストールした全マシンを侵害済みとして扱い、LLM API キー・クラウド認証情報・npm トークン・SSH 鍵・仮想通貨ウォレットを全て即時ローテーションする。
予防策: npm config set ignore-scripts true でライフサイクルスクリプトをデフォルト無効化、CI では npm ci を使いロックファイルを必ずコミット、キャレット(^)依存を避けてバージョン固定を徹底する。
まとめ
3 日間の 5 つのトピックは、2 本の軸に収束する。
1 本目はメモリ安全。 NGINX の CVE-2026-42530 は「メモリ境界を越えるバグ」がエッジサーバーで現実の脅威になることを見せつけた。対して Linux カーネルは、同じ「メモリ境界を越える」 strncpy() を、攻撃される前に 6 年・362 コミットかけて根絶した。KDE の Wayland 移行と Epic の Rust 製 Lore は、いずれも「より安全な基盤へ」という同じ方向への前進だ。
2 本目は信頼の連鎖。 Lore は BLAKE3 とコンテンツアドレス指定で信頼を構造で担保しようとし、Mastra 攻撃はまさにその信頼を休眠アカウントと postinstall フックで悪用した。
「信頼は前提にするものではなく、構造で検証し、危険な機構は最初から無効化しておくもの」 ——エッジのサーバーから足元のツールチェーン、デスクトップまで、防御の思想が一本につながった 3 日間でした。
一次情報・参考リンク
NGINX CVE-2026-42530
- nginx.org — NGINX 1.31.2 リリースノート
- nginx.org — NGINX セキュリティアドバイザリ一覧
- F5 — K000161616: NGINX ngx_http_v3_module 脆弱性 CVE-2026-42530
KDE Plasma 6.7
Linux 7.2 strncpy 根絶
- Phoronix — Linux Finally Eliminates The strncpy API After Six Years Of Work
- KSPP/linux GitHub — Remove all strncpy() uses · Issue #90