AI 搭的站点把华为云 Access Key 塞进浏览器了?先停用这把 IAM 密钥再谈对账

举报
青椒智能脱敏 发表于 2026/10/26 19:19:35 2026/10/26
【摘要】 公开报道里,一批用 AI 搭站工具「几分钟上线」的站点,把本不该离开服务端的密钥直接写进了访客能下载的前端代码。2026 年 10 月,Cyble Research and Intelligence Labs(CRIL)扫描超过 130 万个新注册域名,识别出 22306 个 AI 搭站点;其中 35 站确有「不该出现在浏览器」的私钥级凭证——含 OpenAI Key、Stripe 私钥、S...

公开报道里,一批用 AI 搭站工具「几分钟上线」的站点,把本不该离开服务端的密钥直接写进了访客能下载的前端代码。2026 年 10 月,Cyble Research and Intelligence Labs(CRIL)扫描超过 130 万个新注册域名,识别出 22306 个 AI 搭站点;其中 35 站确有「不该出现在浏览器」的私钥级凭证——含 OpenAI Key、Stripe 私钥、Supabase service-role、AWS Access Key、Slack webhook 等。更麻烦的是克隆模板:同一把密钥会跟着模板复制到整舰队域名。

把同一逻辑换到华为云语境:如果永久 Access Key(AK/SK),或任何可调开 ECS、OBS、按需资源的编程凭证,进了 AI 生成的前端 / 公开 JS bundle,访客不必登录控制台,就能用 API 花掉你账号的钱。计费主体是华为云账号(资源归属与费用归属),不是「写提示词的人」,也不是「部署脚本的外包」。

下面用公开外证对齐企业侧风险,再落到华为云 IAM、访问密钥、费用中心与成本中心上可复现的核对与止血清单。示例一律打码。

一、外证怎么读:浏览器里的「账单钥匙」

Cyble 扫到了什么(只引公开数字)

按公开报道可核对的事实(出处见文末):

  • 扫描规模:新注册域名 130 万以上
  • AI 搭站点识别:22306
  • 确认「私钥级、不该进浏览器」的站点:35
  • 其中 5 站共 16 把 OpenAI Key;另有 Stripe 私钥、Supabase service-role JWT、AWS access key、Slack webhook 等类型分布
  • 模式之一:clone-and-leak——模板里塞进一把密钥,舰队每个域名共用同一凭证

报道同时强调:大量「看起来像密钥」的字符串其实是浏览器侧本就公开的值(如 reCAPTCHA site key、Stripe publishable key);真正危险的是 secret、service-role、云厂商永久 Access Key 这类。

映射到华为云:为什么是「账号买单」

华为云官方文档写得很直白(摘要转述,以文档为准):

  • 账号是资源归属、资源使用计费的主体;账号级凭证效力接近「整本账本」。
  • Access Key(AK/SK)用于 API / CLI / SDK,不能登录控制台,但在权限范围内可创建、变更、删除资源——按需费用照样记在账号账单上。
  • 官方明确建议:不要给账号(根)创建访问密钥;日常用单独 IAM 用户;编程侧优先临时安全凭证或委托,而不是把永久 AK 嵌进代码。

因此,前端 bundle 里若出现形如永久 AK 的凭证,攻击面不是「网站丑一点」,而是:

  1. 访客读到页面源码,复制 AK/SK
  2. 用编程方式调华为云 API(在该 IAM 用户权限范围内)
  3. 开按需资源、拉对象存储、甚至扩权路径上的二次操作
  4. 费用中心里曲线抬升;钱记在账号,不记在访客浏览器

虚构打码示例(勿当真钥,仅供对照自家「最近使用时间」):

IAM 用户:iam-ai-landing-xxxx
Access Key ID:HPUAxxxxxxxx3F9Q
状态:启用
出现位置:某 AI 搭站公开 JS bundle(克隆到 4 个营销域名)
权限画像:曾挂过过宽的计算/存储相关系统策略(应立即缩权)

fig1.png

二、谁受损:同一把钥匙,四种账

损失形态不同,别用一张「总损失」糊弄过去。分开看:

财务 / 出纳方面,直接损失是按需账单陡升、可用额度被抽干、可能触发欠费停服;连带是对账周期被打乱,异常日之后的包年包月误购更难冲正。

安全 / 合规方面,直接问题是凭证失控面从「一个站点」扩到「整舰队克隆域名」;连带是审计拿不出「密钥最近使用时间」与轮转记录;若同时泄露了其他云或支付类密钥,事件面更宽。

业务负责人方面,直接冲击是核心服务因欠费、资源争抢或紧急停钥而受影响;连带是对客户承诺的服务时限与内部追责交叉;营销站「一晚上起十个域名」的速度,变成事故扩散速度。

工程师 / 外包搭站方方面,个人未必被扣款,但要面对权限与密钥治理追责。「我只是把环境变量贴进了 AI 搭站的客户端字段」无法对抗账单上的 API 轨迹。

结论先写死:止血顺序是停用密钥,再缩权、清异常资源,再核对账单与告警,最后才谈复盘;不是先开复盘会,更不是先争论「是不是 AI 的锅」。

三、三条边界:IAM、访问密钥、账单

IAM 边界:人、组、策略,不是「一个管理员密码」

对照华为云 IAM 安全使用最佳实践,企业侧应固定记住:

  1. 不要给账号创建访问密钥——密码与 AK/SK 对账号效力同等;账号 AK 泄露接近全账号风险。
  2. 为人创建单独的 IAM 用户,不要共享账号密码;日常管理用 IAM 用户,少用根身份。
  3. 授予最小权限——系统策略过宽时,用自定义策略收到「刚好够用」。
  4. 控制台用户与编程用户分开——只登录控制台的用户,不要顺手再发一把 AK。
  5. 高权限用户开启虚拟 MFA;对删除资源、生成访问密钥等开启敏感操作(操作保护)。
  6. 不要把访问密钥嵌入代码——官方原文级建议;AI 搭站的「客户端可访问字段」与硬编码是同一类事故。

fig2.png

访问密钥边界:永久 AK/SK 和临时安全凭证不是一回事

硬约束(以「管理 IAM 用户的访问密钥」为准):

  • 每个 IAM 用户最多 2 个永久访问密钥,有效期为永久(除非停用或删除)。
  • 「最近使用时间」按规则采样:15 分钟内多次使用仅记第一次——可用来判断旧钥是否仍在被调用,但不要误解成「精确到每一次调用」。
  • SK 仅在创建时可下载;关掉弹窗后无法再取 SK,只能删了重建。
  • 更稳妥路径:临时安全凭证(临时 AK/SK 加 security_token),或在 ECS 等场景用委托自动取临时凭证——永久密钥应视为「不得已」。

与 Cyble 场景的对照:OpenAI / Stripe 的 secret 进前端,花的是对方余额;华为云永久 AK/SK 进前端,在权限范围内花的是你账号的按需费用;模板克隆让同一 AK 出现在多个域名,等于多个公开入口指向同一把账单钥匙。

账单边界:费用中心看花了什么,成本中心看偏没偏

费用中心 / 账单:账单概览、消费走势、流水与明细;异常当周盯按天消费走势与 Top 产品类型。未出账数据有延迟,明细不建议直接当最终对账依据。

成本中心的异常成本监控:用模型标「潜在异常」,不会自动关资源,也不对资损结果负责;系统监控器记录常见 T+2 时延,自建监控器常见 T+1。

成本中心的预算:可按天/月/季/年设实际或预测阈值,超阈值短信或邮件提醒——适合做「早发现」,不能替代密钥停用。预算检查有节奏(常见按小时检测),且周期内「首次触达阈值才通知」——告警到达时,费用往往已经上去。

按需异常规则的官方示例(便于对照自家曲线):某日实际支出 105 元、预测最大值 100 元,差额大于 1 元即可生成异常记录(系统监控器场景下往往在 T+2 下午可见)。包年包月则看环比是否超过阈值(默认 20%)且差额大于 1 元。

fig3.png

fig4.png

四、控制台逐步核对(费用到密钥到资源再到告警)

以下假设你具备账号或 IAM 管理员权限;生产环境请先开变更窗。先停用可疑密钥,再删异常资源。

步骤 A|费用侧:偏了多少、偏在哪类产品

  1. 登录控制台,打开「费用中心」里的「账单」再进「账单概览」。
  2. 将时间调到疑似异常前后各 3 到 7 天,看消费走势是否出现单日陡升。
  3. 进入流水账单或明细账单,按产品类型、计费模式(按需)、区域过滤;记下 Top 资源 ID(后文用于关停)。
  4. (可选)打开「成本中心」里的「成本洞察」再进「异常成本监控」,看是否已有记录;没有记录不代表没有资损(注意 T+1 / T+2 时延)。

可自填核对(代入本账号真实导出):

  • 异常日前 7 日日均:____ 元
  • 异常日当日:____ 元
  • 比值:____ 倍
  • Top 产品类型:____

步骤 B|身份侧:陡升对齐到哪把密钥、哪个用户

  1. 打开「统一身份认证服务 IAM」里的「用户」,排查长期未用、命名含「ai」「web」「landing」「tmp」「ci」「legacy」的用户,以及近期新建用户。
  2. 进入对应用户的「安全设置」再看「访问密钥」:记录状态、创建时间、最近使用时间。
  3. 若最近使用时间落在异常开资源窗口内,将该密钥视为优先嫌疑对象。
  4. 同步检查:账号(根)是否仍持有访问密钥——若有,按官方建议评估后停用并删除(业务确需编程访问时,迁到最小权限 IAM 用户)。
  5. 有云审计服务 CTS 的,按时间窗检索凭证创建、ECS 开机等事件,交叉验证调用方身份(具体事件名以 CTS 控制台为准)。

步骤 C|权限侧:这把密钥本来能做什么

  1. 查看该 IAM 用户所属用户组及附加策略(系统策略 / 自定义策略)。
  2. 若存在「Tenant Administrator」、过宽的「* FullAccess」、或「所有资源」范围,泄露影响面接近账号级。
  3. 对照官方建议:编程用用户尽量用自定义策略收到「刚好能完成工作」;控制台管理员与机机账号分离。

步骤 D|资源侧:停钥之后再清异常开出来的东西

  1. 先停用嫌疑 Access Key(删除不可恢复;官方路径通常是:停用,确认业务无影响,再删除)。
  2. 每个用户最多 2 把钥——可走「一主一备」轮转:新建,业务切新钥,观察旧钥最近使用时间不再更新,停用旧钥,再删除。
  3. 按步骤 A 记下的资源 ID,在对应区域释放异常 ECS / EVS / EIP 等;保留必要快照仅用于取证,取证后按合规要求处理。
  4. 检查委托(agency)、新创建的 IAM 用户或用户组,防止攻击者留下第二条通路。

步骤 E|前端与舰队:别只盯一个域名

对应 Cyble 的 clone-and-leak:

  1. 列出同一模板 / 同一 CI 产物部署过的全部域名与环境(测试、预发、活动页)。
  2. 对公开页面做自检:在自有站点源码中检索是否出现 Access Key 形态字符串、「.env」内容、服务端专用 token(具体检索由你们安全流程定义)。
  3. 任一域名出现过私钥级凭证,即视为整舰队同源凭证已暴露——轮转范围按舰队计,不按「被举报的那一个域名」计。
  4. 凭证一律改到服务端 / 工作流 / 密钥管理;前端只保留浏览器侧本就公开的值。

fig5.png

fig6.png

五、缓解清单

已发生或高度疑似泄露(小时级)

  • 停用嫌疑 Access Key;必要时同时缩权(禁止再创 IAM 用户、禁止删日志、禁止批量开停计算或存储——细则以官方最佳实践与你们变更单为准)。
  • 账号根 AK 若存在:业务切到 IAM 用户最小权限钥后,停用并删除根 AK。
  • 释放异常按需资源;确认费用中心当日走势回落。
  • 高权限控制台用户开启虚拟 MFA;开启敏感操作 / 操作保护。
  • 通知财务关注可用额度与欠费风险,避免「密钥停了但生产也停了」。
  • 若密钥曾出现在 AI 搭站 / 公开 bundle:按舰队域名范围轮转,不要只换一个站。

48 小时内(防止复发)

  • 清点全部 IAM 用户访问密钥:无「最近使用」、仅控制台登录的用户,删除多余 AK。
  • 编程负载优先改为临时安全凭证或委托;必须用永久钥时:最小权限加定期轮转(双钥一主一备)。
  • 代码仓、CI、共享盘、搭站平台「客户端可访问字段」检索永久凭证痕迹;凡出现过的一律视为已泄露并轮转。
  • 成本中心配置预算告警(例如:月预算的 80% 实际或预测阈值);确认异常成本通知覆盖按需与包年包月(包年包月通知范围可能需手动打开)。
  • 开通并保留 CTS 对 IAM 关键操作的审计查询能力。

制度与架构(按迭代落地)

  • AI / 低代码搭站发布门禁:上线前强制「自有页面源码自检」加「密钥不得进客户端字段」检查项。
  • 用户组按职能拆分(只读 / 运维 / 费用 / 安全),禁止「一人进多组后权限并集失控」却无人复核。
  • 自定义策略优先于过宽系统策略;授权范围优先指定区域 / 企业项目,慎用「所有资源」。
  • 密钥轮转节奏写入变更日历(例如每 90 天);轮转记录与「最近使用时间」截图一并归档。
  • 演练一次「停用密钥,业务切流,账单回看」桌面推演,记下真实耗时。

六、常见误区

1. 「这是营销站 / AI 生成站,又不是生产 API,不会动到云账单」
否。只要前端能读到可调开资源的永久凭证,计费主体仍是华为云账号。站点类型不改变账单归属。

2. 「开了 IAM 最小权限就等于密钥安全」
否。最小权限降低的是单次泄露的爆炸半径;永久 AK 仍可能在权限范围内持续开资源。临时凭证与委托解决的是凭证生命周期。

3. 「异常成本监控会自动停机」
否。官方写明:只识别潜在异常,不对资源做操作,也不为资损负责;且有 T+1 / T+2 时延。它是辅助发现,不是熔断器。

4. 「预算告警等于实时风控」
否。告警有检测周期与「周期内首次触达才通知」等机制;告警到达时,实际费用往往已经上去。告警是财务雷达,停用密钥才是安全刹车。

5. 「删了密钥就万事大吉」
不完整。还需:清异常资源、查是否被创建了新用户或新委托、按舰队轮转同源凭证、补 MFA 与操作保护、回头修搭站模板与 CI。

6. 「只处理被扫到的那一个域名」
危险。克隆模板场景下,一把密钥活在整舰队;响应范围按凭证计,不按域名计。

7. 「主账号登录方便,日常也用主账号,顺便给主账号开一把 AK」
与官方建议相反。日常管理用已授权 IAM 用户;不要给账号创建访问密钥。

七、参考(华为云文档域 + 公开报道出处)

华为云官方文档(support.huaweicloud.com)

  1. IAM 的安全使用最佳实践:https://support.huaweicloud.com/bestpractice-iam/iam_0426.html
  2. 安全使用 IAM(新版最佳实践):https://support.huaweicloud.com/bestpractice-iam5/iam_05_0111.html
  3. 管理 IAM 用户的访问密钥:https://support.huaweicloud.com/usermanual-iam/iam_02_0003.html
  4. 临时安全凭证概述:https://support.huaweicloud.com/usermanual-iam5/iam_01_1236.html
  5. 异常成本规则(成本中心):https://support.huaweicloud.com/usermanual-cost/costcenter_000013_05.html
  6. 创建预测预算并接收告警:https://support.huaweicloud.com/qs-cost/billing_qs_0000003_01.html
  7. 流水和明细账单(费用中心):https://support.huaweicloud.com/usermanual-billing/bills-topic_new_1000102.html

公开报道出处

- Cyble:The Keys Are in the Browser: Secret Exposure Across AI-Built Websites
https://cyble.com/blog/secret-exposure-across-ai-built-websites/

(控制台路径以登录后实际菜单为准;文档版本随官网更新,引用时请打开链接核对更新日期。)

本文为华为云控制台可复现的企业治理说明。示例账号与密钥均为虚构打码;Cyble 数字仅作公开外证,不构成对其方法或覆盖面的背书。若你方已完成密钥停用与账单回看,建议把「日均费用对比异常日费用」「密钥最近使用时间对比资源创建时间」「舰队域名清单对比轮转完成数」三组数字写进内部故障报告——比任何口号都更有用。

如果你平时还要把合同、简历或配置文档发给外部大模型处理,可以先在本地用青椒智能脱敏处理敏感字段再上传:https://qingjiaolab.com

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。