Windows 11 に内蔵されたままの、Windows 95 のメモリマネージャについて:なぜまだ搭載されているのか

2026/10/20 9:14

Windows 11 に内蔵されたままの、Windows 95 のメモリマネージャについて:なぜまだ搭載されているのか

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

要約▶

Japanese Translation:

Windows 11 バージョン 26H2 では、レトロなソフトウェアでのクラッシュを解決するため、Windows 95 のメモリエンジンを復元する重要な互換性修正「EmulateHeap」が導入されます。この機能は当初、「SimCity」の use-after-free ボグで修正されたことで注目されましたが、実際には現代的なオペレーティングシステム上でクラッシュを引き起こす欠陥をより広く持つ旧来のヘッップ管理システムに由来するクイックを利用した古いアプリケーション向けの広範な問題に対処しています。技術的には、EmulateHeap は元の Windows 95 ヘッップマネージャーのソースコードをコピーし、現代的な API コール(例:HeapCreate)をその動作を模倣するように再方向付けすることで機能します。このコードは互換性フレームワーク内に存在しますが、特定のアプリに対して有効化されるまでディスクから読み込まれません。同様の機能はバージョン 22H2 では「GTA Vice City」での音声喪失などの問題を引き起こしましたが、今回の実装ではレトロサポートとシステム安定性のバランスを追求しており、Microsoft が推進する包括的なモダニゼーション活動(例:プロパティダイアログの置き換えによる WinUI 3)とも連携しています。ユーザーは 2026 年 9 月に、バージョン 26H2 向けに調整された Compatibility Administrator の公式サポート更新を期待できます。ただし、この修正は特定の古いソフトウェアのサブセットにのみ適用され、「3D Pinball」アプリのような基本的な 64 ビットアーキテクチャとの衝突により削除された機能の復元は行いません。このターゲット指向のアプローチにより、旧プログラムへの安定性を確保しつつ、コアパフォーマンスを損なうことなく、陳腐化したアーキテクチャ基準に戻ることも回避されます。これは Windows XP に見られた隠れた互換性修正の伝統を引き継いでいます。

本文

Windows 11 に潜む「Windows 95 コード」の実態

Windows 11 の内部には、現在でも動作している Windows 95 コアの一部 が残っています。これは、「EmulateHeap」という互換性情報(シム)機能を通じて実現されており、特定の古いアプリケーションが Windows 95 特有のメモリマネージャーを必要とする場合、この機能により寛容な環境を提供します。

現在、Windows 11 バージョン 26H2 を搭載する PC でも、この機能を確認することが可能です。


起源:SimCity と Microsoft の決断

なぜ追加されたのか

この事例の起源はゲーム SimCity にあります。当初、このゲームは Windows 95 上でしか動作せず、マイクロソフトが専用のコードを開発したことで可能になりました。

問題の背景:Use-After-Free バグ

  • アプリケーションはメモリの確保・解放を繰り返しますが、解放後のメモリ領域を読み取ると 「use-after-free」 というバグが発生します。
  • Windows 3.x 向けの最初の SimCity では、このバグが存在していました。
  • Windows 3.x で問題が起きなかった理由は、**「解放されたメモリのデータがどこにも移動しないため」**です。

ジョエル・スポルスキー氏(Stack Overflow 共同創業者、元マイクロソフトエンジニア)の分析

  • SimCity の開発者ジョン・ロスは、「意図せず解放直前のメモリ領域を読み取ってしまうバグ」を認めています。
  • Microsoft はこのバグが目立たなかった理由として、当時のメモリ特性を挙げました。

Windows 95 向け特別版 SimCity 2000

Windows 95 ベータ版において SimCity が動作不良を起こした際、Microsoft は以下の対策をとりました。

  • 修正ゲームの待機ではなく、OS の改変を選択
    • ゲームが実行中を検知したらのみ、「解放直後のメモリの値を読み取る」ような振る舞いをさせる特別なモードでヒープアロケーターを実行させるコードを Windows 95 に組み込みました。
  • スポルスキー氏の記述

    「もし SimCity が動いていると検知したら、即座にメモリを解放しないように設定された特別モードのメモリアロケーターを実行します」

つまり、Microsoft は OS を改変することで、単一のゲームのバグを隠す措置をとったのです。


解決策:EmulateHeap の仕組みと現状

問題の再発と解決

SimCity の事例は一過性のものでした。しかし、他のプログラムも Windows 95 のヒープの癖(クイック)を利用しており、解放されたメモリ領域に古い値が残ったまま読み取ろうとするケースがありました。これらは新しい Windows 世代では動作が不安定になりクラッシュしてしまいました。

これを解決するために導入されたのが EmulateHeap です。

仕組みと特徴

  • アプリケーションからのヒープ関連の呼び出し(
    HeapCreate
    ,
    LocalLock
    ,
    GlobalReAlloc
    など)を、Windows 95 の動作を模倣する代替処理へリダイレクトします。
  • レイモンド・チェン氏(Microsoft エンジニア)の評価:
    • 「極めてシンプルでありながら、完全に狂っている」。
    • 構築方法は:**「単に Windows 95 のヒープマネージャーのソースコードをコピーし、再コンパイルして互換性情報システムに追加した」**こと。

重要な注意点

  • Windows 11 の PC が静かに Windows 95 の背景プロセスとして稼働しているわけではありません。
  • 特定のアプリケーションに対してのみ、ハードドライブから古いコード(EmulateHeap)が読み込まれます。
  • EmulateHeap は SimCity 用のコードとは異なり、Windows XP 以降に導入された「互換性情報への執着」から派生した独立した修正です。

Windows 11 で EmulateHeap を確認・探す方法

Microsoft の公式ツールである 「互換性情報管理者(Compatibility Administrator)」 を使用して確認可能です。これは IT 管理職向けに無料で提供されており、Windows 標準搭載の互換性情報修正の一覧を表示します。

インストールと手順 (Windows 11 26H2)

「互換性情報管理者」は Windows アセスメントおよびデプロイメントキット (ADK) に付帯しています。以下の手順で確認できます:

  1. Microsoft から Windows ADK をダウンロードし、インストーラーを実行します。
  2. 機能一覧の中から、「Application Compatibility Tools(アプリケーション互換性情報ツール)」のみを選択してインストールを完了させます。
  3. スタート画面で「Compatibility Administrator」を検索します。
  4. Windows 95 時代のアプリの多くが 32 ビットであることを踏まえ、32 ビット版を開きます。
  5. 「Custom Databases(カスタムデータベース)」セクションで右クリックし、以下の操作を行います。
    • 「New Database(新しいデータベース)」を選択
    • 「Create New > Compatibility Mode(新規作成 > 互換性情報モード)」を選びます。
  6. 利用可能な互性情報修正の一覧をスクロールして、EmulateHeap を探します。

留意点と現在の状況

動作保証の限界

リストされている修正が即座に機能するとは限りません。以下のような報告事例があります:

  • Windows 11 22H2 アップデート以降の挙動変化
    • 「GTA Vice City」などで音声出力が失われる。
    • 「Need for Speed: Most Wanted」でシムを有効にした際にクラッシュする。

悲劇的な現状:3D Pinball の場合

Microsoft は Windows 95 時代の名残であるプロパティダイアログを現代的な WinUI 3 に置き換えつつも、少数の古いアプリケーションのために Windows 95 のヒープマネージャーを維持し続けています。

  • しかし、チームが数日かけて解決できない 64 ビットバグ のせいで、この取り組みを「3D Pinball(3D ピンボール)」に適用できませんでした。
  • その結果、同ゲームに対するサポートは 終了 してしまいました。

同じ日のほかのニュース

一覧に戻る →

2026/10/22 6:58

鉄道セキュリティ開示

## Japanese Translation: レイルウェイは、本日早些に暗号化された顧客の環境変数への未許可のサードパーティアクセスを検知した直後、すべてのデプロイを一時停止しました。証拠によれば、攻撃者は一部の変数の復号化された内容を取得しており、これには API キー、データベース認証情報、プライベートレジストリ認証情報といったシークレットが含まれている可能性があります。影響範囲は現在ユーザーの一部に限られていますが、深刻度のためレイルウェイは上流プロバイダーに対し鍵の取り消しを能動的に行っています。本件のインシデントは、AI 推論サービスへの侵害を狙うプラットフォーム企業を標的とする攻撃の広範な傾向と一致します。影響を受けたアカウントは、調査の詳細が確認されると、直接的にメールで連絡されます。範囲およびステータスに関するさらなる更新は、公式アナウンスメントおよび status.railway.com を通じて共有されます。ユーザーは強く推奨されるのは、直ちにレイルウェイ(API キーおよびレジストリ認証情報を含む)に格納されているすべての環境変数をローテートし、サービスのログで不審な活動を審査することです。ビルドが完全に復元されるまで、新しいバージョンのロールアウトは行えません。

2026/10/22 0:48

本日の PHP セキュリティリリースとセキュリティ強化の取り組み

## Japanese Translation: PHP は、無認証リモートコード実行 (RCE) を可能にする 2 つの深刻な脆弱性情報である CVE-2026-109618 および CVE-2026-109619 を解消するため、緊急に重要なセキュリティアップデート (バージョン 8.2.35 から 8.5.12) をリリースしました。これらの不備はメモリ管理およびエラー処理の核心的な問題に起因し、ほぼ全てのサーバーリクエストに影響を与えています。脆弱性は当初、2024 年の Quarkslab による監査の際に特定されましたが、互換性維持上のリスクとサードパーティ製拡張機能全体での合意形成が必要だったため、修正は遅延されていました。OpenAI や Wiz などの企業から 2026 年後半に追加の攻撃ベクトルの報告があり、PHP ファウンデーションは AI セキュリティエンジニアの Volker Dusch を補強した専用の「エコシステムセキュリティチーム」を設立し、高度な AI モデルを用いた主要テクノロジー企業と連携して複雑なエクスプロイトレポートを検証するパートナーシップを結んでいます。パッチの詳細が意図せずリークされたことに伴い(具体的には 10 月 20 日に誤った CVE ID が示された)、リリース日は 10 月 22 日から 10 月 21 日に前倒しされ、迅速な対応と安定性の維持の両立を図っています。以降、プロジェクトは 15 の CVE を公表し、100 以上のレポートを処理しており、AI を用いて検証を行いながら人間がパッチを最終調整しています。この強化されたセキュリティ態勢を持続させるため、PHP ファウンデーションは政府、ホスティングプロバイダー、ドイツ主権技術庁(German Sovereign Tech Agency)などの企業から資金支援を募り、サードパーティからの継続的な脅威への対応のために深層コードベースの専門家を採用しています。

2026/10/22 4:01

GitLab 重大パッチリリース

## Japanese Translation: 2026年10月21日、GitLab はコミュニティ版およびエンタープライズ版(バージョン 19.5.1、19.4.3、19.3.6 などを含む)の重大なセキュリティパッチをリリースし、自己管理ユーザーに対し即座にアップグレードを行うよう要請しました。これは、CVSS 10.0 の整数オーバーフローにより任意の実行コードが可能になる脆弱性 (CVE-2026-110264)、アカウント乗っ取りを可能にする認証上の欠陥 (CVE-2026-15723) および機密メタデータを晒す各種キャッシュ poisoning や権限回避などを是正するためです。GitLab.com と特定の専用テナントは既に安全ですが、アップグレードを遅らせるとシステムが攻撃に対して脆弱になります。管理者は未認証の実行コード実行やデータ漏洩を防ぐためにアップグレードの優先度を高める必要があります。特に、シングルノードのホスト型インスタンス(バージョン 19.4.3 および 19.3.6)は複雑なデータベースマイグレーションにより必須のダウンタイムを要しますが、マルチノード設定ではゼロダウンタイムで更新を進めることができます。これらのリスクはパッチ展開前にハッカーワン (HackerOne) の研究者によって特定されていました。 ## Text to translate: The summary is of high quality but could be slightly improved by explicitly mentioning the existence of multiple specific CVEs rather than just grouping them, and perhaps acknowledging the release of several version numbers beyond just the ones requiring downtime to be fully faithful to the list. However, given the constraints of a single paragraph, the current version is acceptable. **Improved Summary:** On October 21, 2026, GitLab released critical security patches for its Community and Enterprise editions (including versions 19.5.1, 19.4.3, 19.3.6, etc.), urging immediate upgrades for self-managed users to address severe vulnerabilities like CVSS 10.0 integer overflow enabling arbitrary code execution (CVE-2026-110264), authentication flaws allowing account takeover (CVE-2026-15723), and various cache poisoning and authorization bypasses that expose confidential metadata. While GitLab.com and specific dedicated tenants are already secure, delaying updates leaves systems open to exploitation. Administrators must prioritize upgrading to prevent unauthenticated code execution and data leaks. Notably, single-node self-hosted instances (specifically versions 19.4.3 and 19.3.6) will face mandatory downtime due to complex database migrations, whereas multi-node setups can proceed with zero downtime. These risks were previously identified by researchers on HackerOne before the patch deployment.