** 本記事は、Content updates and product architecture: Sophos Endpoint の翻訳です。最新の情報は英語記事をご覧ください。**
先日、Sophos Intercept X のカーネルドライバーがどのようにテストされ、どのような動作をするのかを解説しましたが、本記事では Intercept X の内部構造をさらに詳しくご紹介します。今回は、コード実行パスの変更をもたらす設定変更や、コードそのものであるコンテンツの更新を取り上げます。
Intercept X は、リアルタイムでのクラウドルックアップとデバイス上でのコンテンツアップデートを組み合わせて使用します。脅威環境は常に進化・変化しているため、デバイス上のコンテンツに対するアップデートが頻繁に配信されることは極めて重要です (デバイス上のデータの中には、頻繁に変更されないものもありますが、それらにも急なアップデートが必要になる場合があります)。しかし、頻繁なアップデートにはそれなりのリスクが伴います。更新されるコンテンツが破損していたり無効であったりすると、問題が生じる可能性があります。
ソフォスはデバイス上のコンテンツのアップデートに一般的な方式を用いており、コンテンツアップデートはソフォスのコンテンツディストリビューションネットワーク (CDN) から、(ソフォスのカーネルドライバーに読み込まれたり、解釈されたりするのではなく) ソフォスの低権限ユーザースペースプロセスに直接読み込まれます。コンテンツアップデートは、CDN から配信されるソフトウェア、Sophos Central から配信されるポリシーおよび構成とともに、Intercept X の 3 つの主要コンポーネントの 1 つを構成しています。
本記事では、ソフォスが使用するさまざまなタイプのコンテンツ更新、それらをどのように検討・検証しているか、そして破損したコンテンツや欠陥のあるコンテンツに起因する問題を回避するためにエコシステムがどのように設計されているかについて説明します。(前回の記事で述べたように、Intercept X とそのすべてのコンポーネントは、2017 年 12 月 14 日から外部のバグ報奨金プログラムの一部にもなっています。)
なお、本記事の内容は本記事執筆時点 (2024 年 8 月) のものであり、今後の更新やソリューションの開発により変更される可能性があります。
段階的なコンテンツアップデートの展開
ソフォスは、新しいコンテンツのアップデートを「リリースグループ」単位でお客様に配信します。Sophos Central の各テナントは、リリースグループに割り当てられています。
最初のリリースグループは社内のエンジニアリングテスト用で、ソフォス製品のお客様は割り当てられていません。このため、エンジニアリングチームは、特別な手続きを経ずに実環境のインフラ上で新しいコンテンツの更新をテストできます。テストに失敗した場合は、それ以降のリリースグループには進まず、リリースを中止します。
社内のエンジニアリング認証が成功すると、手動でリリースを「Sophos internal」リリースグループに昇格させます (この手順は「dogfooding」と呼ばれています)。このグループには、ソフォス従業員が実環境で使用するデバイスや従業員の個人アカウントが含まれます。このグループでも、問題が検出または報告された場合はリリースを中止し、それ以上は進展させません。
問題がなければ、リリースをパブリックリリースグループに手動で昇格します。この時点から、ソフォスのリリースシステムは、デフォルトで数時間または数日かけて、すべてのリリースグループに新しいコンテンツアップデートを自動的に公開します (以下の図 1 参照)。
図 1: リリースの段階と各段階での検証
データのダウンロード: Sophos AutoUpdate
Intercept X の一部である Sophos AutoUpdate は、1 時間ごとに新しいコンテンツの更新をチェックしますが、実際の更新頻度は低くなります (以下の表を参照)。
Sophos AutoUpdate は、各コンテンツアップデートを CDN からダウンロードし、該当するリリースグループで新しいコンテンツアップデートパッケージが利用可能かどうかを確認します。
コンテンツのアップデートにはタイムスタンプが付与され、SHA-384 とソフォスのプライベート証明書チェーンを使用して署名されます。Sophos AutoUpdate はダウンロードしたアップデートを検証します。破損したアップデートや信頼できないアップデートが検出された場合、そのアップデートは破棄され、ソフォスと Sophos Central 管理者の両方に警告が送信されます。さらに、古い CDN キャッシュや悪意のある反射攻撃からマシンを保護するために、Sophos AutoUpdate はシグネチャのタイムスタンプが既にダウンロードされたアップデートよりも古いアップデートを、その他の点では有効であっても拒否します。
新しいコンテンツアップデートパッケージが利用可能になると、Sophos AutoUpdate は関連するパッケージインストーラを使用してダウンロードとインストールを行います。異なるアップデートは、Intercept X の異なるコンポーネントで処理されます。
コンテンツアップデートの概要
以下のコンテンツは、Intercept X の最新リリース (2024.2) の一部です。
図 2: どの Sophos プロセス (紺色) がどのコンテンツアップデート (紫色) をロードするかを示す図
DatasetA
DatasetA は、SophosFileScanner.exe によって読み込まれます。SophosFileScanner.exe は権限の低いプロセスで、ファイルシステム (ログフォルダと大きなオブジェクトのスキャンに使用される一時ディレクトリを除く) にはアクセスできません。読み込まれると、Sophos Anti-Virus Interface (SAVI) がロードされます。
SophosFileScanner.exe は、他のソフォスプロセスからのスキャン要求に従ってコンテンツをスキャンします。「SophosFileScanner.exe」という名前ですが、従来の名称を引き継いでいるだけであり、実際にはファイル、プロセスメモリ、ネットワークトラフィックなどをスキャンする Intercept X の主要なコンテンツスキャナです。
LocalRepData
LocalRepData は次の 2 つの評価リストを含んでいます。
- SHA-256 による評価
- singer による評価
Windows の実行ファイルが実行を開始すると、Intercept X は LocalRepData にある SHA-256 ハッシュと署名 (署名が有効であると仮定) を検索します。評価の提供元が LocalRepData の場合、Intercept X はその評価をプロセスに「タグ付け」します (ソフォスのルールでは、評価の高いファイルやプロセスはクリーンアップの対象外とするなど、扱いが異なります)。
SSPService.exe は LocalRepData を使用して、プロセスの起動時に評価を割り当てます。
SophosFileScanner.exe は LocalRepData も読み込み、実行ファイル以外のコンテンツで検出した埋め込み実行可能ストリームに評価を割り当てます。
Behavior
Behavior ルール (動作検知ルール) は SSPService.exe によってロードされます。このルールファイルには、署名され暗号化された Lua コードが含まれています。SSPService.exe は、ソフォスの内部 API にのみアクセスできるサンドボックス化された LuaJIT インタプリタにルールを検証、復号、ロードします。
Lua は高速な組み込みスクリプト言語です。ソフォスが動作検知ルールに Lua 使用しているのは、新しいソフトウェアをリリースすることなく、安全性を維持しながら新しい動作を検出する柔軟な方法であるためです。ルールはユーザースペースにロードされるため、誤動作が発生しても致命的なシステム障害を引き起こすことはありません。また、ソフォスのルールエンジンは Lua ベースライブラリを使用せずに構築されており、システムへのアクセスはソフォスの内部 API を介してのみ行われます。ソフォスの内部 API は、動作検知ルールによって偶発的な誤動作から守られています。ソフォスは、ルールのランタイムに関する広範なテレメトリを収集し、ランタイムのオーバーヘッドを継続的に調整して削減します。
これらのルールはいわば「リアクター」です。Intercept X はさまざまなイベントを提供し、ルールはそれらのイベントに対するハンドラーを登録します。これらのルールはさらに、大量のイベントに対してさまざまな一連のパラメーターを設定できるため、それに応じてセンサーが特定のイベントを合体させたり、破棄したりできます。
Flag
Flag (フラグ) は、ソフォスが Intercept X の新機能を段階的に有効にするための手段です。フラグを立てる方法は次の 2 つです。
- Flags Supplement には、ソフトウェアで利用可能な機能に対応するフラグの基本セットが含まれています
- Flags Survice は Sophos Central のマイクロサービスで、ソフォスのリリースエンジニアが複数のテナントにまたがるフラグを設定できます
ソフトウェアリリースの Flags Supplement には、機能フラグの組み合わせと、その場合に機能が有効化されるかどうかが記載されています。
Flag Supplement の値 | Flag Service の値 | 機能は |
無効 | 無視 | 無効 |
利用可能 | 無効 | 無効 |
利用可能 | 有効 | 有効 |
この仕組みにより、ソフォスは機能の有効化と無効化を何度も切り替えられます。
- ソフォスは新たな「利用可能」フラグ機能の導入を進めています (ただし、Flags Services では有効になっていません)
- ソフォスは、Flags Service を利用してテナント全体でフラグを有効化することで、新しい機能を徐々に有効にできます。
- ソフォスは、Flags Service のフラグを無効にすることで、問題のある機能を無効にできます
- ソフォスは、リリースの Flags Supplement を変更することで、特定のソフトウェアリリースで問題のある機能を無効にできます
CRT
Competitor Removal Tool (CRT) には、インストール中に既知の互換性のないソフトウェアを削除するために用いられる一連のルールが含まれています。このツールはインストーラーによって自動的にダウンロードされ、インストール後に削除されます。
通常、CRT は Intercept X では使用されませんが、Sophos Device Encryption のような非保護コンポーネントをインストールし、後で Intercept X を導入する場合、既存のエージェントが CRT をダウンロードしてインストールし、インストール前に実行します。Intercept X がインストールされると、CRT は自動的に削除されます。
Endpoint Self Help Ruleset
Endpoint Self Help (ESH) ルールは、特定のログファイルに対応する一連の正規表現です。ソフォスのエンジニアは共通の根本原因や設定ミスを特定した場合、新しいルールを公開し、問題と推奨される解決策が記載されている Knowledge Base Article (KBA) にリンクできます。
ScheduledQueryPack
ScheduledQueryPack (スケジュールされたクエリパック) のコンテンツアップデートには、スケジュールされたクエリのリストとその実行頻度が含まれます。これらのルールは SophosOsquery.exe によって読み込まれ、出力は McsClient.exe によって Sophos Central Data Lake に取り込まれます。
SophosOsquery.exe には、クエリが CPU やメモリを過剰に消費し、「暴走」するのを防止する監視システムが組み込まれています。ソフォスは、スケジュールされたクエリのパフォーマンスに関するテレメトリを収集し、監視システムが作動しないようにスケジュールされたクエリを定期的に最適化して調整します。
RemapperRules
RemapperRules (リマッパールール) は McsAgent.exe によって読み込まれ、Sophos Central のポリシー設定を HKLM\SOFTWARE\Sophos\Management\Policy 以下の Windows レジストリに保存されたエンドポイント設定に「リマップ」するのに使用されます。
このポリシーは Sophos Central から一連の XML ドキュメントとして提供されます。これらのルールもレジストリに格納されるデータの構造を記述する一連の XML 文書であり、ポリシー XML からコンテンツを抽出し、レジストリデータを生成するための Xpath クエリといくつかの変換関数を提供します。
ルールファイルが破損している場合、またはその他の理由で処理が失敗した場合、そのファイルで定義されたレジストリ値は更新されず、以前の設定がそのまま使用されます。他の有効なルールファイルの処理も同様に影響を受けません。
EPIPS_data
EPIPS_data のコンテンツアップデートには、SophosIPS.exe が読み込む侵入防止システム (IPS) 署名が含まれています。SophosIPS.exe にはソフォスが構築した IPS 製品が含まれており、使用されるシグネチャは SophosLabs により発行された IPS シグネチャです。
SophosIPS.exe は低権限プロセスとして実行されます。IPS が有効な場合、sntp.sys ドライバーはフィルタリングのためにパケットを SophosIPS.exe に送信します。SophosIPS.exe はコマンドを用いてドライバーに応答し、パケットを受領あるいは拒否します。
ネットワークスタックの深部で、ネットワークフローとのやり取りをパケット単位で行うには、細心の注意が必要です。L2 の Windows フィルタリングプラットフォーム (WFP) コールアウトは、物理層およびメディアアクセス層にサービスを提供する、多くの場合サードパーティ製の内在ドライバーからの影響を非常に受けやすくなっています。システムの安定性に関するリスクが大きいため、IPS 機能はサードパーティのドライバーとの相互作用が原因だと思われる BSOD やネットワークの中断を監視します。検出された場合、IPS 機能は自動的に自身を無効化し、非互換性への警告としてエンドポイントのヘルスステータスを赤に設定します。
NTP_OVERRIDES
Windows Filtering Platform (WFP) のカーネルドライバーを構築する際の潜在的な問題の 1 つは、このプラットフォームでは複数のドライバーが同時にフィルタリングスタックとやり取りできるように設計されている一方で、一部のサードパーティのソフトウェアパッケージは L2 パケットを傍受して操作する機能を必要とする IPS 機能と互換性のないことが確認されていることです。
NTP_OVERRIDES のコンテンツアップデートには、互換性のない既知のドライバーのリストが含まれています。ポリシーで IPS が有効になっているにもかかわらず、互換性のないドライバーを搭載したデバイスに配置されている場合、SophosNtpService.exe はポリシーを上書きして IPS を無効にします。
コンテンツアップデートとして配信されるため、新しい互換性のないドライバーが発見されると、ソフォスは同じ設定を用いている他のお客様を保護するために動的に対応できます。さらに、ソフォスまたはサードパーティが非互換性に対処するためにドライバーを更新した場合、ソフォスは特定のバージョンのドライバーを削除できます。
RepairKit
毎時のアップデート中に、Sophos AutoUpdate は自己修復プログラム (su-repair.exe) を実行し、修復可能な既知の問題を検出して修正します。RepairKit はもともと、ソフォスのインストールを破損させる可能性のある不正なシャットダウンによって引き起こされるファイルの破損を検出し、修復するために構築されました。ソフォスのエンジニアリングチームはこの機能を使用して、従来はソフォスのお客様とのやり取りを通じたサポートが必要であったり、将来のソフトウェアアップデートで問題が指摘されるまで気付かれなかったりした多くの問題を修正してきました。
RepairKit のルールは Lua で書かれており、su-repair.exe によって読み込まれます。これらのルールは暗号化され、署名されています。su-repair.exe が RepairKit のルールを読み込めなかった場合、「最後の手段」として Sophos AutoUpdate 自体の修復のみを行うルールセットを読み込みます。
RepairKit ルールは、特権キーとファイルを修正する機能を必要とするため、マシンに広くアクセスでき、SYSTEM として実行されます。
TELEMSUP
このテレメトリのコンテンツアップデートには、テレメトリを提出する頻度と場所について記述した JSON 文書が含まれます。
{ "additionalHeaders": "x-amz-acl:bucket-owner-full-control", "port": 0, "resourceRoot": "prod", "server": "t1.sophosupd.com", "verb": "PUT", "interval": 86400 }
テレメトリのコンテンツアップデートは、2016 年を最後に行われていません。
APPFEED、USERAPPFEED
APPFEED のコンテンツアップデートには、インストールされたアプリケーションを検出し、それらのアプリケーションを動的に除外するのに使用される、署名・暗号化された Lua スニペットが含まれています。
APPFEED に除外ルールが記述されているアプリケーションが検出されると、インストールされているアプリケーションに基づいて、マシン固有の除外ルールが動的に生成されます。これらの除外ルールは Sophos Central に報告され、Sophos Central 管理者に表示されます。
このルールは、レジストリとファイルシステムへの読み取り専用アクセス権を持っており、一般的に「プログラムの追加と削除」レジストリキーで既知のアプリケーションを探索することで動作します。Microsoft SQL Server のように、オプションの OS コンポーネントを検出するために PowerShell スクリプトを実行する必要があるアプリケーションもあります。
APPFEED と USERAPPFEED は、SEDService.exe のインスタンスによってロードされます。
ProductRulesFeed
プロダクトルールは、SSPService.exe によってロードされます。これらは動作検知ルールと同じ形式で、同じアクセス権と権限を持ちます。同一の LuaJIT インタプリタにロードされ、動作検知ルールに必要なコア機能を提供します。
ML モデル
ML モデルのコンテンツアップデートには、SophosFileScanner.exe によって読み込まれる複数の機械学習モデルが含まれています。他の多くのコンテンツアップデートとは異なり、ML モデルには、ML モデルのコアロジックおよび「重み」を記載した Windows DLL が含まれています。これらのコンテンツは、SophosLabs クラウドでモデルをトレーニングおよびチューニングした結果です。
ML モデルは SophosFileScanner.exe によってロードされ、同一の低権限環境で実行されます。SophosFileScanner.exe は、各モデルの 2 つのバージョン、「テレメトリ」および「ライブ」のロードをサポートしています。ソフォスはこの機能を利用して、ML モデルの候補をテレメトリモードで配信します。SophosFileScanner.exe は、ML モデルをテレメトリモードにすると、テレメトリ分析用のデータサンプルを選択し、(通常のアクティビティに加えて) テレメトリモデルを実行します。テレメトリモデルからの出力として得られたテレメトリは、通常のモデルによって収集されたデータとともに、分析・トレーニング用としてソフォスに提供されます。
ソフォスは ML モデルをコンテンツアップデートとして配信するため、新しい ML モデルはライブモデルに昇格する前に、テレメトリ、再トレーニング、微調整のサイクルを何度か繰り返します。
ML モデルのアップデートには実行可能コードが含まれているため、ソフォスはより多くのチェックポイントを設け、少しずつリリースしています。
- 初期のリリースグループ (エンジニアリングテストおよびソフォス内部でのテスト) により多くの時間が費やされています。
- 数時間単位ではなく、数週間かけて徐々にリリースされます。
Hmpa_data
Hmpa_data のコンテンツアップデートには、HitmanPro.Alert サムプリントのグローバル許可リストが含まれています。すべての HitmanPro.Alert 検出は、関連する緩和策および検出に固有の情報に対して一意のサムプリントを作成します。たとえば、StackPivot 緩和策用のサムプリントには、プロセスやスタックフレームの末尾数件が含まれます。
Hmpa_data には、グローバルに許可されているサムプリントの短いリストが含まれています。HitmanPro.Alert サービスである hmpalertsvc.exe は、このデータベースを使用して迅速かつ静かに検出を抑制し、誤検出を減らし、パフォーマンスや安定性に関する問題を回避します。
- HitmanPro.Alert ドライバーである hmpalert.sys はサムプリントを生成し、ドライバーベースの緩和策用のサービス (CryptoGuard、CiGuard、PrivGuard など) に送信します。
- ユーザープロセスに注入される HitmanPro.Alert フック DLL である hmpalert.dll は、各検出のサムプリントを生成し、サービスに報告を送信します。
結論
日々進化する脅威環境に対応し、新たな脅威から身を守るためには、セキュリティ製品を新しいデータで定期的にアップデートすることが極めて重要です。しかし、コンテンツアップデートに破損や欠陥があると問題が生じる可能性があるため、更新が有効であること、署名されていること、検証されていることを保証する仕組みがあることも極めて重要です。
本記事では、Intercept X で使用しているコンテンツアップデートの概要について説明しました。今回取り上げたのはアップデートがどのようなものなのか、どれくらいの頻度で提供されるのか、どのように検討・検証されるのか、どのような低権限プロセスに組み込まれるのか、段階的かつ管理された方法で展開するためにどのような方法を使うのかについてです。
Intercept X のカーネルドライバーに関する前回の記事で言及したように、保護と安全性のバランスを取ることはリスクを伴います。しかし、私たちはそのリスクを可能な限り可視化して管理することをお約束します。