网络安全日报 2026年05月22日
1、纽约公立医疗系统遭第三方入侵泄露180万患者敏感数据
https://www.govinfosecurity.com/public-nyc-health-system-notifying-18m-hack-a-31726 美国纽约市大型公立医疗体系NYC Health + Hospitals披露一起大规模数据泄露事件,因合作第三方供应商存在安全漏洞,导致近180万名患者的隐私数据遭到泄露。该医疗系统覆盖纽约五大区七十余家诊疗机构,服务海量基层病患,此次泄露数据范围极广,包含医保参保信息、诊疗记录、账单凭证、社保编号、银行卡信息,以及指纹、掌纹等不可重置的生物识别数据,长期隐私与财产风险极高。安全专家表示,生物识别数据无法像密码一样修改,一旦泄露
2、GitHub遭遇供应链攻击泄露3800个内部代码库数据
https://www.varonis.com/blog/github-breach 微软旗下代码托管平台GitHub确认遭遇针对性供应链攻击,威胁组织TeamPCP利用员工终端安装的恶意VS Code扩展突破内部防护,非法窃取平台内部核心源码资源,共计3800个内部仓库数据遭外泄。TeamPCP是专注供应链攻击的知名黑产团伙,此前曾多次入侵开源安全项目与开发工具平台。此次攻击中,攻击者依托恶意开发工具实现无感知渗透,全程规避常规安全检测,窃取的核心源码涵盖平台多项核心业务模块。攻击得逞后,该团伙在黑产论坛挂牌售卖数据,底价5万美元,并威胁若无买家将全网公开泄露。事件发生后,GitHub迅速
3、OpenClaw AI框架曝高危漏洞可劫持AI代理
https://www.govinfosecurity.com/patched-openclaw-flaw-let-hackers-hijack-ai-agents-a-31720 安全厂商披露开源智能代理框架OpenClaw存在一组高危漏洞,被命名为Claw Chain,包含四组可联动利用的安全缺陷,最高漏洞评分达9.6分,影响4月23日前发布的全部版本。该框架因功能强大、开源免费,上线短期内成为GitHub热门项目,全网暴露公网实例最高达24.5万台。四类漏洞分别对应CVE-2026-44112、CVE-2026-44115、CVE-2026-44118、CVE-2026-44113,涵
4、CISA监管机构不慎公开大量明文密钥与系统凭证
https://techcrunch.com/2026/05/19/us-cyber-agency-cisa-exposed-reams-of-passwords-and-cloud-keys-to-the-open-web/ 美国网络安全和基础设施安全局(CISA)曝出严重内部安全事故,其合作承包商员工不慎将大量明文密码、云访问密钥、系统令牌等核心敏感凭证,上传至公开GitHub仓库,导致美国国土安全部(Department of Homeland Security)及CISA内部系统访问权限暴露。这些凭证可直接对接政府云资源与内部业务系统,风险等级极高。该漏洞由GitGuardian安全
5、微软成功捣毁Fox Tempest恶意代码签名黑产团伙
https://cyberscoop.com/microsoft-digital-crimes-unit-disrupts-fox-tempest/ 微软数字犯罪部门(Microsoft Digital Crimes Unit)联合执法力量,成功瓦解长期活跃的Fox Tempest黑产团伙,捣毁其全套恶意代码签名非法服务体系。该团伙自2025年9月起持续运作,伪造正规企业身份滥用微软Artifact Signing系统,批量制作售卖虚假合法代码签名证书。各类勒索组织、信息窃取团伙可依托该证书为恶意软件赋能,规避系统安全校验、绕过终端防护,实现木马、勒索病毒、钓鱼程序的免杀传播。该团伙累计制作
6、存在九年的Linux内核漏洞可导致主流发行版root命令执行
https://thehackernews.com/2026/05/9-year-old-linux-kernel-flaw-enables.html Linux内核曝出潜伏九年的高危漏洞CVE-2026-46333,可让本地攻击者获取root权限并窃取敏感数据,影响主流发行版。补丁已发布,建议立即更新或临时调整安全参数。同时Arch Linux的PinTheft漏洞PoC也被公开,需警惕本地提权风险。
7、Claude Code网络沙箱漏洞暴露用户凭证与源代码
https://cybersecuritynews.com/claude-codes-network-sandbox-vulnerability/ Claude Code AI编程助手存在严重网络沙箱漏洞,攻击者可窃取凭证和源代码,漏洞持续5个月未被公开。Anthropic静默修复但未公告,用户需立即升级至v2.1.90+并轮换凭证。建议将沙箱视为防御措施而非安全边界。
8、暗网数据贩子将历史泄露事件重新包装为"新企业数据泄露"
https://cybersecuritynews.com/dark-web-brokers-repackage-old-breaches/ 暗网虚假数据泄露泛滥,黑客回收历史数据重新包装成"新情报"出售,消耗企业安全资源。中文暗网五大核心数据源每月发布600-1000条虚假声明,混合真实与伪造信息制造恐慌。企业需结构化验证数据真实性,避免分散对真实威胁的注意力。
9、黑客利用伪造所得税评估页面感染Windows系统
https://cybersecuritynews.com/hackers-use-fake-income-tax-assessment-pages/ 印度税务诈骗活动TAX#TRIDENT通过伪造税务文件攻击Windows用户,利用三条感染链部署恶意软件,包括远程控制工具和劫持合法企业软件,需警惕可疑税务链接并加强行为监控防御。
10、思科Secure Workload严重漏洞可导致未授权API访问
https://cybersecuritynews.com/cisco-secure-workload-vulnerability/ 思科Secure Workload平台曝严重漏洞(CVE-2026-20223,CVSS 10.0),攻击者可利用未认证API获取管理员权限,影响所有版本。思科已发布修复版本,建议立即升级,SaaS用户无需操作。该漏洞凸显内部API安全风险,需加强访问控制。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2026年05月21日
1、GitHub 遭入侵:员工设备遭恶意扩展攻击致内部源码仓库泄露
https://www.freebuf.com/articles/database/481971.html 2026年5月20日,GitHub通过系列官方声明证实,其检测到某员工设备因安装恶意Visual Studio Code扩展而遭入侵,导致内部代码仓库遭到未授权访问。这家微软旗下的代码托管平台表示,在发现某遭篡改的VS Code扩展被用于入侵员工终端后,已迅速识别并控制住此次入侵事件。
2、Apache Flink 高危漏洞可导致远程代码执行攻击
https://www.freebuf.com/articles/database/481799.html Apache Flink 近日披露一个编号为 CVE-2026-35194 的高危漏洞,该漏洞通过平台代码生成引擎中的 SQL 注入缺陷,使分布式数据处理环境面临远程代码执行(RCE)攻击风险。
3、严重n8n漏洞使自动化节点面临完整RCE风险
https://cybersecuritynews.com/n8n-rce-vulnerabilities/ n8n工作流自动化平台曝出三个严重漏洞(CVE-2026-44789至44791),可串联实现远程代码执行,影响HTTP、Git和XML节点。低权限用户即可利用,建议立即升级至修复版本或临时禁用相关节点。
4、Mythos Preview 实现自动化漏洞研究中PoC漏洞利用链构建
https://cybersecuritynews.com/mythos-preview-builds-poc-exploits/ Anthropic的AI模型Mythos Preview实现突破,能串联漏洞生成可验证的PoC利用链,填补漏洞发现与利用间的技术鸿沟。需定制化框架优化结果,但安全防护仍需额外措施,凸显攻防时间窗缩短的紧迫性。
5、攻击者利用旧版MSHTA程序发起大量攻击活动
https://www.bitdefender.com/en-us/blog/labs/microsofts-mshta-legacy-malware-windows Bitdefender安全研究人员发现,微软Windows系统自带的旧工具MSHTA虽为合法组件,但仍被攻击者大量滥用,成为常用的LOLBIN(Living-off-the-Land binary)工具,用于投递各类恶意软件。该工具可默认执行VBScript和JavaScript脚本,即便IE浏览器已退役,其相关功能仍被保留以保障兼容性,这也成为攻击者可利用的漏洞。攻击者借助MSHTA的合法进程身份,构建多阶段无文件执行链,通
6、波兰官员账户遭受网络攻击后停止使用Signal通讯应用
https://securityaffairs.com/192381/intelligence/poland-shifts-away-from-signal-following-cyberattacks-on-officials-accounts.html 波兰政府近期宣布,禁止官方人员使用Signal通讯应用处理敏感信息,转而采用国产加密通信工具mSzyfr及隔离系统SKR-Z,起因是多名政府官员遭遇针对性网络攻击,其Signal账号信息被窃取。经调查,此次攻击并非Signal加密机制被破解,而是亲俄APT组织采用社会工程学手段实施,攻击者冒充Signal平台客服,通过虚假通知诱骗用户泄露
7、全球连锁便利店7-11近期确认遭遇数据泄露事件
https://securityaffairs.com/192336/data-breach/shinyhunters-hack-7-eleven-franchisee-data-and-salesforce-records-exposed.html 全球连锁便利店7-11近期确认遭遇数据泄露事件,知名黑客组织ShinyHunters公开宣称,已成功入侵7-11存储加盟商信息的系统,窃取超60万条Salesforce相关记录及加盟商敏感数据,涵盖加盟商个人身份信息、经营数据、联系方式等,同时包含部分企业内部业务数据。据悉,此次攻击发生于4月8日,黑客组织通过漏洞入侵系统后,窃取数据并向7-1
8、PureLogs窃密木马通过钓鱼邮件传播窃取多类凭证
https://www.helpnetsecurity.com/2026/05/19/purelogs-infostealer-delivery-steganography/ 研究人员发现PureLogs新型信息窃取器正通过钓鱼邮件在全球范围内传播,其传播载体为附发票主题的TXZ压缩包,邮件以“逾期余额确认”为诱饵,伪造采购经理身份催促用户立即打开附件,利用用户的紧急心理实施攻击。该恶意软件采用先进隐写术技术,将加密后的恶意载荷隐藏在普通猫咪PNG照片中,成功规避多数安全软件检测。用户打开附件后,内置的JavaScript脚本会通过混淆手段隐藏恶意命令,启动隐藏的PowerShell会话,加
9、Endue Software同意支付87万美元达成数据泄露和解协议
https://www.hipaajournal.com/endue-software-data-breach-settlement/ 医疗SaaS企业Endue Software就2025年发生的数据泄露事件,与受害者达成87万美元的集体诉讼和解协议。据悉,该数据泄露事件发生于2025年2月,EndueSoftware系统遭黑客入侵,导致11.8万名患者的敏感信息泄露,泄露数据包括患者姓名、社保号、病历号、就诊记录等核心医疗及个人信息,可能被用于医疗诈骗、身份盗用等违法活动。事件发生后,多名受害者联合发起集体诉讼,指控该企业存在安全防护过失。尽管EndueSoftware否认自身存在安全过
10、DeepSeek泄露用户对话内容?回应:特殊字符引发幻觉
https://www.secrss.com/articles/90520 5月19日晚,DeepSeek官方账号发布《关于think字符触发模型异常回复的说明》称,近期有用户反馈,在与DeepSeek模型的对话中输入“think”这类特殊字符后,模型偶发返回不可预期的内容,使部分用户产生了“对话泄露”的疑虑。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2026年05月20日
1、疑似马来西亚政府支持黑客利用Cloudflare开展长期间谍行动
https://hackread.com/government-backed-hackers-cloudflare-malaysia-espionage/ Oasis Security最新研究显示,疑似马来西亚政府支持的黑客团队,长期利用隐藏的命令与控制(C2)系统开展间谍行动,并滥用Cloudflare的存储和内容分发服务托管恶意载荷、钓鱼材料,借助可信云平台规避安全检测。该行动基础设施设计隐蔽,通过灵活响应连接、限制公共扫描可见性等方式长期活跃,服务器定期轮换维护,聚焦情报收集,与区域网络间谍活动模式存在重叠。黑客还倾向使用临时基础设施降低成本,研究人员建议企业加强行为监测,而非仅依赖域
2、Reaper恶意软件利用伪造的微软域名窃取macOS密码
https://hackread.com/reaper-malware-fake-microsoft-domain-macos-passwords/ SentinelOne发现新型Reaper恶意软件(SHub变种),可绕过macOS Tahoe 26.4安全更新,伪装成系统更新及微信、Miro等常用软件,通过拼写错误的伪造微软域名(mlcrosoft.co.com)诱骗用户。攻击者通过虚假下载页触发恶意脚本,诱骗用户打开Script Editor并运行命令,索要设备登录密码,进而窃取浏览器、密码管理器、加密货币钱包数据,还会窃取指定大小的文件并分块上传,同时模仿谷歌软件更新路径安装永久后门
3、研究员披露Windows零日漏洞MiniPlasma
https://securityaffairs.com/192325/hacking/chaotic-eclipse-discloses-miniplasma-zero-day-suggesting-a-missing-or-undone-2020-windows-security-fix.html 研究员Chaotic Eclipse披露Windows零日漏洞MiniPlasma,该漏洞实为2020年上报并宣称已修复的CVE-2020-17103,因未被正确修复或补丁回滚,目前仍可在所有已打2026年5月更新的Windows 11上生效,可通过Windows云文件迷你筛选驱动漏洞提升至SY
4、攻击者利用NGINX高危漏洞实现DoS攻击及代码执行
https://www.helpnetsecurity.com/2026/05/18/ngnix-vulnerability-exploited-cve-2026-42945/ VulnCheck研究员披露,上周公开的NGINX高危漏洞CVE-2026-42945(绰号NGINX Rift)已被攻击者利用。该内存损坏漏洞影响NGINX开源及商业多个版本和相关产品,攻击者发送特制HTTP请求即可实现未授权拒绝服务(DoS),禁用地址空间布局随机化(ASLR)后还可远程执行代码。5月16日已出现利用尝试,全球约570万暴露NGINX服务器可能受影响,负责开发的F5公司已发布修复版本,同时提供临时
5、Tabiq酒店入住系统配置失误导致超百万份顾客数据遭泄露
https://securityaffairs.com/192302/data-breach/public-amazon-bucket-leaks-sensitive-guest-data-from-japanese-hotel-platform-tabiq.html Reqrea公司的Tabiq酒店入住系统因亚马逊S3云存储桶配置错误,导致超100万份旅客护照、驾照及自拍验证照片公开暴露在网上,任何人知晓“tabiq”桶名即可无需认证访问。该漏洞由安全研究员Anurag Sen发现并上报,经TechCrunch及日本JPCERT通知后,系统已被修复、存储桶被锁定。Reqrea表示尚不清楚存
6、国际刑警牵头在中东和北非的13个国家开展网络犯罪打击行动
https://cyberscoop.com/interpol-operation-ramz-middle-east-north-africa/ Interpol牵头13个中东、北非国家开展“Ramz行动”,这是该地区首次大规模网络犯罪打击行动。行动历时4个月,累计逮捕201人、查获53台服务器、识别382名嫌疑人,打击范围涵盖钓鱼服务、恶意软件及金融诈骗。期间还发现约旦有受害者被迫参与诈骗,多国同步开展服务器查封、设备扣押等行动,并有多家安全机构提供支持,目前相关调查仍在推进中。参与这项行动的机构收集了近8000条数据,这些数据在参与国之间共享,以支持正在进行的调查。
7、托瓦兹称AI漏洞报告导致Linux安全邮件列表不堪重负
https://cybersecuritynews.com/linus-torvalds-on-ai-bug-reports/ 林纳斯警告AI漏洞报告泛滥导致Linux安全邮件列表难以管理,新规要求AI报告必须公开处理并提高质量,强调需提供可验证影响和补丁,避免重复低效报告,同时认可AI工具价值但需优化流程。
8、微软确认 Windows 11 更新失败并报错 0x800f0922
https://cybersecuritynews.com/microsoft-windows-11-update/ 微软确认2026年5月更新KB5089549因EFI分区空间不足导致安装失败(错误0x800f0922),主要因Secure Boot变更新增文件。更新包含安全补丁、BitLocker修复等关键改进,企业可通过自动化脚本管理证书部署。微软正推出修复方案。
9、百万WordPress网站受Avada Builder文件读取与SQL注入漏洞影响
https://cybersecuritynews.com/avada-builder-plugin-vulnerability/ Avada Builder插件曝高危漏洞,允许攻击者窃取敏感数据和SQL注入,影响超百万站点。漏洞涉及文件读取和数据库攻击,CVSS评分最高7.5。建议立即升级至3.15.3版本并加强防护,凸显及时修补的重要性。
10、美国CISA将Exchange Server漏洞列入已知被利用漏洞目录
https://securityaffairs.com/192240/hacking/u-s-cisa-adds-a-flaw-in-microsoft-exchange-server-to-its-known-exploited-vulnerabilities-catalog.html CISA将Exchange Server高危漏洞(CVE-2026-42897)列入已知被利用目录,该0Day漏洞可致XSS攻击,通过OWA触发恶意代码,威胁企业邮件系统安全。微软已监测到在野利用,建议立即采取缓解措施。联邦机构须5月29日前修复。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2026年05月19日
1、Tycoon2FA新增设备码钓鱼劫持微软账户
https://www.esentire.com/blog/tycoon-2fa-operators-adopt-oauth-device-code-phishing 研究人员发现曾在3月遭国际执法行动打击的钓鱼平台Tycoon2FA已在新基础设施上恢复运行,并新增“设备码钓鱼”能力,目标指向Microsoft 365账户。研究人员发现,攻击者通过带有Trustifi点击跟踪链接的发票主题邮件,将受害者经由Trustifi、Cloudflare Workers及多层混淆脚本引导至伪造页面,再诱导其在微软合法的microsoft.com/devicelogin页面输入设备码并完成多因素认证。此
2、诈骗者寄送假信件诱骗Ledger用户泄露助记词
https://support.ledger.com/zh-CN/article/scams-targeting-crypto-holders 意大利有诈骗者通过邮寄实体钓鱼信件,冒充Ledger相关通知,诱导加密钱包用户泄露助记词。信件中包含二维码,收件人扫码后可能被引导至伪造页面,并被要求输入钱包恢复所需的seed phrase。一旦助记词泄露,攻击者即可控制受害者钱包中的加密资产。该事件表明,针对加密货币用户的钓鱼手法已从电子邮件等线上渠道扩展到线下邮寄场景,用户需对涉及助记词、恢复短语等敏感信息的任何请求保持警惕。
3、Grafana称源代码被盗后拒绝勒索要求
https://hackread.com/grafana-source-code-theft-rejected-ransom-demand/ Grafana表示,攻击者通过获取其GitHub令牌后访问了公司代码库,并窃取了部分源代码。公司称,在发现事件后已采取应对措施,并明确表示拒绝了对方提出的勒索要求。根据目前披露的信息,此次事件影响范围主要限于源代码层面,未波及客户数据,也没有证据表明其生产系统或客户环境受到影响。该事件再次凸显了代码托管平台访问凭证的重要性,以及企业在令牌管理、权限控制和事件响应方面面临的安全挑战。
4、思科SD-WAN控制器认证绕过漏洞正遭利用
https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-sdwan-rpa2-v69WY2SW 思科Catalyst SD-WAN Controller中一处认证绕过漏洞正被活跃利用。该漏洞编号为CVE-2026-20182,攻击者可通过设备上的DTLS 12346端口绕过身份验证,进而获得管理员级访问权限。根据已披露信息,相关利用活动发生在2026年5月之后,表明该漏洞已从安全风险演变为现实攻击面。报道指出,该问题影响思科SD-WAN控制器的访问控制机制,可能导致未授权人员
5、PraisonAI认证绕过漏洞披露后迅速遭定向利用
https://github.com/advisories/GHSA-6rmh-7xcm-cpxj PraisonAI的一个认证绕过漏洞(CVE-2026-44338)在5月11日公开披露后不久即被攻击者关注并利用。该漏洞会暴露/agents接口,使未授权访问成为可能。根据文中信息,从漏洞披露到出现针对该漏洞的利用探测,仅间隔约3小时44分钟,显示出攻击者对新披露高风险漏洞的响应速度极快。现有内容主要说明了受影响接口、漏洞类型以及被尝试利用的时间窗口,未进一步披露更详细的技术成因、影响范围或攻击后果。整体来看,此事件再次反映出公开披露后的短时间内即可能出现实战化探测与攻击活动。
6、FunnelBuilder漏洞致四万余商店结账数据被窃
https://sansec.io/research/funnelkit-woocommerce-vulnerability-exploited WooCommerce相关插件Funnel Builder存在一个已被攻击者利用的安全漏洞,影响超过4万家在线商店。攻击者借助该缺陷在受影响站点中植入伪造的Google Tag Manager(GTM)代码,从而在用户结账过程中窃取支付信息,形成典型的结账页面信用卡盗刷链路。报道指出,相关风险在修复版本3.15.0.3发布前尤为突出,未及时更新的商店面临较高暴露风险。该事件再次表明,电商站点插件一旦存在漏洞,可能直接危及支付数据安全,运营方应尽快完
7、Claude Code RCE漏洞允许攻击者通过恶意深度链接执行命令
https://cybersecuritynews.com/claude-code-rce-flaw/ Anthropic的Claude Code CLI工具存在严重RCE漏洞,攻击者通过特制深度链接可执行任意命令。漏洞源于参数解析缺陷,允许注入恶意钩子命令。2.1.118版本已修复,建议用户立即更新。
8、NGINX CVE-2026-42945漏洞遭野外利用
https://thehackernews.com/2026/05/nginx-cve-2026-42945-exploited-in-wild.html NGINX Plus和开源版爆出堆缓冲区溢出漏洞(CVE-2026-42945),可致服务崩溃或特定条件下远程代码执行,野外攻击已现。openDCIM同期曝高危漏洞链,攻击者组合利用可远程执行代码。建议用户紧急更新补丁。
9、Fast16恶意软件篡改核武器模拟数据以破坏测试结果
https://cybersecuritynews.com/fast16-malware-manipulated-nuclear-weapons/ Fast16恶意软件通过篡改核武器模拟数据误导工程师,延缓武器研发而非直接破坏。针对流体动力学软件精密设计,仅微调关键参数制造合理误差,消耗资源并加剧内部矛盾。与震网病毒形成数字战略互补,开辟新型认知战战场。
10、Linux内核漏洞"ssh-keysign-pwn"允许窃取SSH密钥与密码文件
https://cybersecuritynews.com/linux-kernel-vulnerability-ssh-keysign-pwn/ Linux内核漏洞CVE-2026-46333(ssh-keysign-pwn)允许攻击者窃取SSH私钥和密码哈希,影响多个主流发行版。漏洞源于ptrace访问控制缺陷,利用进程退出时的短暂时间窗口窃取文件描述符。建议立即打补丁、轮换SSH密钥并监控敏感文件访问。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
CVE-2026-42945 深度解析 NGINX Rift :潜伏18年的堆溢出漏洞分析与防御指南
在全球互联网基础设施的底层架构中,NGINX 凭借其极致的异步非阻塞事件驱动模型和极低的内存消耗,长期占据着 Web 服务器、反向代理、负载均衡器以及 API 网关领域的统治地位。NGINX的安全性影响全球数以千万计在线服务。2026年5月13日,一项被正式命名为 “NGINX Rift” 的严重内存破坏漏洞(CVE-2026-42945)的公开披露,在网络安全业界引发了强烈的震动。
该漏洞极其罕见地在 NGINX 的核心源码库中潜伏了大约 18 年之久(据溯源分析,该缺陷最早在 2008 年左右的提交中被引入),波及了从 0.6.27 早期版本一路延伸至 1.30.0 的几乎所有 NGINX Open Source 迭代分支,同时 NGINX Plus 商业版也未能幸免 。作为一个潜藏极深的基于堆的缓冲区溢出漏洞,它存在于被极为高频使用的 URL 重写模块(ngx_http_rewrite_module)中 。在极具普遍性的特定配置模式下,未经身份验证的远程攻击者仅需发送一个精心构造的单一 HTTP 请求,即可稳定触发该溢出漏洞,导致 NGINX 工作进程(Worker
漏洞分析
根据 F5 官方安全公告(K000161019)以及美国国家漏洞数据库(NVD)的权威评估,NGINX Rift 漏洞在最新的通用漏洞评分系统(CVSS)4.0 标准下获得了 9.2 分的极危(Critical)评级,在 CVSS 3.1 标准下亦达到了 8.1 分的高危(High)水平 。这一评分的内在逻辑深刻反映了该漏洞的破坏力。
受影响版本
该漏洞的波及范围不仅局限于独立部署的 NGINX 服务,更深刻影响了全球主要 Linux 发行版的官方软件源以及基于 Kubernetes 的云原生网络入口控制器。由于该缺陷代码早在 2008 年便已合入主线,这意味着过去 18 年间发布的大量长期支持(LTS)版本均携带此隐患 。
值得高度警惕的是,众多 Kubernetes 集群仍在使用官方主线停止维护的 kubernetes/ingress-nginx 控制器。由于该控制器的底层镜像硬编码并静态嵌入了NGINX 1.27.1 版本,集群管理员无法通过简单地升级宿主机的 NGINX 安装包来解决此问题,必须更换或重新编译入口控制器镜像。这种容器化带来的底层依赖固化,在遇到此类持续时间极长、潜藏极深的超期漏洞时,暴露出供应链安全响应的迟滞风险。
NGINX底层请求处理架构与漏洞产生的原因
为了彻底解析 NGINX Rift 漏洞的技术肌理,有必要深入剖析 NGINX 处理 HTTP 流量的内部架构及其精妙的内存管理哲学。NGINX 并不为每一个传入的连接生成新的线程或进程,而是采用单线程的事件循环(Event Loop)配合非阻塞 I/O 来处理成千上万的并发连接。
在这种架构下,配置文件的解析与请求路由成为至关重要的一环。ngx_http_rewrite_module 是 NGINX 体系中最复杂、最强大的核心模块之一。它允许管理员利用 PCRE(Perl-Compatible Regular Expressions)正则表达式在请求处理的极早期阶段(Server Rewrite Phase 和 Rewrite Phase)动态拦截、修改、重写传入的统一资源标识符(URI),甚至改变后续的处理走向 。在处理如 PHP 前端控制器(Front Controller)模式、WordPress 伪静态永久链接(Permalinks),或是作为 API 网关桥接
在内存分配策略上,NGINX 摒弃了频繁调用操作系统层面 malloc 和 free 的低效做法,转而实现了一套基于内存池(Memory Pool, ngx_pool_t)的高效机制。当一个新的 HTTP 请求接入时,NGINX 会为其创建一个独立的请求内存池。在处理该请求生命周期内的所有小块内存分配(如保存解析后的 HTTP 头、动态生成的 URI 字符串等),都会直接从这个预先申请的大块连续内存页中切割。这种设计极大地降低了内存碎片和分配开销。然而,正是这种将多次分配集中在一个连续内存空间中的设计,使得一旦发生逻辑上的计算谬误导致缓冲区越界写入,溢出的字节会直接覆盖并污染同一内存池中紧邻的
CVE-2026-42945 核心成因
DepthFirst团队在漏洞研究报告中详细揭示了 NGINX Rift 的根本原因。这是一个典型且极其复杂的计算逻辑脱节漏洞,其核心在于 NGINX 的内部脚本引擎(Script Engine)在处理特定的变量重组时,对目标内存长度的“预判(Estimation)”与最终的“执行写入(Execution)”之间,存在基于上下文标志位(Context Flags)的严重不对等。
触发路径的特定“配置”
漏洞并非在 NGINX 的常规运行中随机产生,它宛如一把必须通过特定配置齿轮才能咬合转动的复杂暗锁。研究表明,必须同时满足以下三个配置维度的条件,漏洞代码路径才会被激活 :
存在未命名的 PCRE 正则捕获:在 rewrite 指令的正则表达式中,使用了未命名的捕获组,随后在配置逻辑中通过系统自动分配的数字变量(如 $1, $2)进行引用。
替换字符串引入查询参数机制:在目标替换字符串(Replacement String)中嵌入了问号(?)。在 NGINX 的路由语义中,这标志着 URI 路径与查询参数(Query String)的分界,NGINX 会据此改变对后续字符的转义处理逻辑。
同一作用域下的指令链式调用:在这个存在隐患的 rewrite 指令之后,在同一个配置块(Scope)内,必须紧跟另一个触发脚本引擎重新评估的指令,通常是另一个 rewrite,或者是 if 逻辑判断,亦或是 set 变量赋值指令 。
一个能够精准命中上述所有脆弱条件的真实生产环境配置切片如下所示:
# 典型的 API 网关或应用重写逻辑
location /api/v1/ {
# 步骤一与二:正则表达式使用 (.*) 产生未命名捕获 $1,替换字符串包含? 号
rewrite ^/api/v1/(.*)$ /internal_router.php?route=$1;
# 步骤三:紧跟一个 set 指令,触发双重遍历引擎的上下文混乱
set $backend_cluster "legacy_nodes";
}
双重遍历引擎的逻辑错误
当攻击者向具备上述配置的 NGINX 节点发送包含特殊荷载的 HTTP 请求时,NGINX 将进入其内置的脚本求值流程。位于 src/http/ngx_http_script.c 源码文件中的底层机制被唤醒。由于指令链条的复杂性,NGINX 需要对重写目标进行两次遍历操作 :
第一遍遍历:长度分配的短视计算 引擎必须首先计算出需要多大的目标缓冲区来容纳重写后的 URI。此时,系统调用了 ngx_http_script_complex_value_code 函数。至关重要的是,为了进行纯粹的长度评估,NGINX 在这一步实例化并传入了一个被完全清零初始化的“子引擎(Sub-engine)”结构体 。 在这个被清零的子引擎上下文中,一个名为 is_args 的关键标志位被默认为 0。当子引擎进一步调用 ngx_http_script_copy_capture_len_code 去测量正则表达式捕获的内容(即攻击者传入的恶意 $1 变量)时,由于 is_args 为 0,
第二遍遍历:数据写入的转义膨胀 一旦空间分配完毕,执行流程随即切换到第二遍的实际数据拷贝阶段。此时,操作权交还给了保留完整上下文状态的“主引擎(Main engine)”。 在主引擎的上下文中,由于之前的替换字符串中显式包含了 ? 符号,系统正确识别到当前正在处理 URI 的查询参数区域,因此 is_args 标志位被正确地保持为 1。 当程序执行到 ngx_http_script_copy_capture_code 准备将攻击者的数据拷贝入刚刚分配的缓冲区时,悲剧发生了。由于检测到 is_args 为 1,NGINX 强制介入了参数转义流程,调用了底层的 ngx_escape_uri 函数,
在 NGX_ESCAPE_ARGS 转义模式下,根据相关 RFC 标准,特定的字符必须被编码以保证安全传输。例如:
空格会被转化为 + 或 %20。
字符 +、% 和 & 等会被展开为三字节的十六进制表示形式(如 % 会被重新转义为 %25)。
致命的算术冲突与内存覆写:
假设攻击者发送的请求 URI 中包含了 1000 个连续的 % 字符。
计算阶段:子引擎认为这是一个长度为 1000 字节的数据块,向内存池申请了 1000 字节的目标缓冲区。
写入阶段:主引擎在拷贝过程中,对这 1000 个 % 字符执行 NGX_ESCAPE_ARGS 转义,每一个 % 都被转换成了长达 3 个字节的 %25 字符串。最终,主引擎试图将高达 3000 字节的数据强行塞入仅仅分配了 1000 字节的内存块中 。
这导致了多达 2000 字节的高强度越界写入。由于越界写入的字节流实质上是对攻击者原始输入的转义版本,这意味着内存覆写的内容并不是完全的乱码,而是由攻击者高度可控的数据载荷构成的,这种“可控的内存破坏(Controllable Corruption)”正是将其转化为严重安全漏洞的核心原因 。
漏洞利用进阶:从拒绝服务到远程代码执行
了解了 NGINX Rift 漏洞的根本成因后,有必要进一步剖析攻击者是如何在实战环境中运用这一缺陷的。根据底层操作系统环境的防御纵深配置不同,该漏洞能够造成的破坏程度呈现出巨大的两极分化态势。
拒绝服务(DoS)稳定利用
对于绝大多数开启了现代内存保护机制的系统而言,漏洞最直观和最可靠的表现形式是拒绝服务。由于 NGINX 采用 Master-Worker 多进程架构,工作进程(Worker)负责处理具体的网络请求连接。
当攻击者发送包含大量恶意字符膨胀载荷的请求时,堆缓冲区溢出瞬间发生。溢出的数据无情地践踏了紧邻其后的内存结构。如果该内存处于 NGINX 自定义的 ngx_pool_t 结构内,它会破坏下一个即将被使用的内存块的元数据头部;如果触发了针对大块内存的 malloc 退化,它将破坏底层 glibc(如 ptmalloc)管理堆块(Chunk)所必需的头部信息(例如覆盖了关键的 size 字段或是双向链表的 fd/bk 指针)。
当 NGINX 进程继续运行,试图释放该内存块或在同一池中进行下一次分配时,底层的内存完整性校验机制将被触发。系统侦测到堆数据损坏,会立即抛出 SIGSEGV(段错误)或 SIGABRT 异常中断,直接杀死当前正在处理该请求的 Worker 进程 。虽然 NGINX 的 Master 进程拥有强大的韧性,它会在监控到 Worker 退出(例如在日志中记录类似 worker process <PID> exited on signal 11 的信息)后迅速拉起一个新的替补 Worker,但为攻击者提供了一种极其廉价且高效的攻击途径 。
攻击者可以构建多线程发包工具,以每秒数百次的频率持续发送触发载荷。这种高频的精确打击将导致目标服务器上的所有 NGINX Worker 进程陷入永无止境的“崩溃-重启”死亡循环(Crash Loop)中 。合法的用户请求由于分配不到存活的 Worker 进程,或者连接在处理半途中因进程意外死亡而遭到系统强行重置(Connection reset by peer),从而导致目标 Web 业务或 API 服务呈现全面瘫痪的状态 。在 Alma Linux 团队的独立复现测试中,他们确认在 Alma Linux 8、9、10 及后续衍生版本上,针对目标 Worker 进程制造此类 DoS 攻击路径是
远程代码执行(RCE):受限环境下的服务器接管
多份深度研究报告明确指出,CVE-2026-42945 确实存在被转化为无身份验证 RCE 的完整潜能,然而这其中存在一个至关重要的先决门槛—目标主机的地址空间布局随机化(ASLR)状态 。
在默认开启 ASLR 的环境下,由于堆布局的不可预测性,且当前尚未发现能与此溢出相配合的稳定信息泄露(Info-leak)漏洞,攻击者通过盲目构造溢出载荷去精准覆盖如 NGINX 核心结构体中的 handler 回调函数指针,并将其重定向至有意义的执行链(ROP Chain)的成功率微乎其微。强行尝试的结果绝大多数情况下依然是引发不可恢复的段错误崩溃 。
然而,如果目标系统由于特定的历史遗留原因、兼容性约束、特殊的调试配置,或是某些极度精简的物联网(IoT)固件/老旧嵌入式环境中被人为或被迫禁用了 ASLR(例如配置了 sysctl kernel.randomize_va_space=0)。
在此类未受 ASLR 保护的脆弱环境中,内存的分配模式变得相对静态和确定。Depth First 平台发布的概念验证(PoC)代码成功展示了,在关闭 ASLR 后,攻击者可以通过高度复杂的堆风水(Heap Grooming)技巧,利用合法的请求预先占据特定的堆孔洞,使得目标被覆写的关键回调结构精确落在漏洞溢出覆盖的物理范围之内 。通过精确控制在 $1 捕获变量中输入的字符构成和序列,最终实现对 NGINX 执行控制流的精准劫持,顺利完成无需任何身份验证的底层 Shell 获取,实现了真正意义上的灾难性突破 。
NGINX 内部的衍生漏洞矩阵
除了 NGINX Rift,F5 和开源社区在同一批次的补丁更新中,还集中修补了其他多个同样涉及内存破坏和逻辑错乱的安全漏洞,形成了一个规模庞大的“漏洞补丁包”:
修复指南与纵深防御体系建设
一、核心加固:软件升级
根除 CVE-2026-42945 的唯一终极方案,是用修复了内部引擎转义差异缺陷的安全版本彻底替换脆弱代码。安全补丁通过引入更为一致的状态管理逻辑,确保在长度预估和实际拷贝阶段,对于 URI 逃逸字符的判定标准保持绝对统一。
对于原生的 NGINX Open Source 用户:必须将系统平滑升级至 1.30.1(稳定分支)或 1.31.0(主线分支)以上版本 。
对于使用 NGINX Plus 订阅的商业用户:根据生产环境当前固定的发行列车(Release Train),快速部署对应版本的官方安全修正包,包括 R32 P6、R35 P2 或 R36 P4 。
Linux 发行版软件包管理的跟进:对于通过 apt 或 yum 等包管理器直接从发行版软件库安装 NGINX 的服务器。各主流操作系统社区已迅速响应。例如,Ubuntu 已为 26.04 LTS (resolute) 推送了 1.28.3-2ubuntu1.1,为 24.04 LTS (noble) 提供了 1.24.0-2ubuntu7.8 的安全迭代 ;而 Alma Linux 生态圈内,版本 8、9、10 的用户需立刻更新到诸如 nginx-1.14.1-9.el8.10.alma.1 等包含了向上移植(Backport)代码的新编译包 。在利用包管理器升级后,必须手动执行重启命令(如
二、云原生治理:Kubernetes Ingress-NGINX
由于 Kubernetes 官方维护的 ingress-nginx 核心控制器项目当前处于已归档停止推进的状态,其最终正式版控制器镜像内部锁死并静态编译的仍然是易受攻击的 NGINX 1.27.1 版本 。这是极为危险的供应链安全陷阱:即使系统管理员在承载集群计算节点的宿主机操作系统上更新了 NGINX 的 RPM 或 DEB 包,也对运行在容器内部的控制器进程毫无帮助。
应急审计与规避措施:
集群管理员必须进入特定的 Pod 内部执行诊断命令,直接质询编译二进制文件的版本状态:kubectl exec -n ingress-nginx <controller-pod> -- /nginx-ingress-controller --version 。
战略性架构剥离:借此安全事件为契机,加速淘汰陈旧的 Ingress 架构,全面向更为现代、安全解耦的 Kubernetes Gateway API 实施规范演进 。
短效替代品(Fork 方案):在架构平移完成前,对于无法忍受业务断档的企业,建议将其入口控制器的基础镜像临时替换为由社区积极维护、并且及时合并了上游最新安全补丁(1.30.1+ 核心)的分支项目源(例如 Forkline 项目发布的分支镜像)。
三、不升级情况下的临时措施
核心思路:瓦解触发条件链。因为该溢出极其依赖特定语法符号的堆叠,破坏其中任何一环,都能让漏洞的“预分配与实际执行错位”现象不再发生。
全面使用命名捕获替代未命名系统捕获: 这是最为推荐且影响最小的手段。安全团队需要利用自动化脚本工具,对全网范围内所有的 nginx.conf 及其被包含子配置文件进行地毯式扫描,搜索类似 (.*) 这种依赖 $1, $2 被动赋值的原始正则表达式。 随后,将其全部重构为带有显式名称标识的捕获组,例如使用 (?<my_custom_name>.*) 语法,并在后续的重写路径中显式调用 $my_custom_name。这一语法层面的细微变化,足以改变内部脚本引擎在参数解析时的作用域边界和状态传递链条,完美规避底层缺陷 。
脆弱的配置模式(切勿再使用):
rewrite ^/api/(.*)$ /v2/api.php?query=$1;
set $endpoint "api_v2";
安全配置模式:
# 将被动的 $1 升级为具有隔离性的命名捕获 <apipath>
rewrite ^/api/(?<apipath>.*)$ /v2/api.php?query=$apipath;
set $endpoint "api_v2";
打破指令链枷锁:如果业务重写规则的复杂度允许,可以直接将替换字符串中的问号(?)剔除,或者拆解紧接在其后的 set 或 if 指令,彻底阻断触发执行第二次评估渲染环境所需的“连击(Combo)”条件 。
四、动态监测
如果组织环境内部依然存留着使用脆弱配置且未及更新的 NGINX 实例,那么在被动防御系统上建立高敏态势感知规则是抵御攻击的最后一道壁垒。
建立高敏感的崩溃信标(Crash Beacons):基于此漏洞极其稳定地引发进程终止的特性,防守方应在 SIEM(安全信息和事件管理系统)、Logstash 或集中式的可观测性平台上部署特殊的检测启发式规则。一旦通过模式匹配识别到 NGINX 错误日志中开始大量、规律性地浮现诸如 worker process exited on signal 11 或类似指向 SIGSEGV 断流的关键事件报错,且同一时间维度的 HTTP 访问日志中伴随出现源自特定 IP 范围、含有大量超常编码字符(如冗长的未编码 % 或 + 串列)的异常请求,应当立即触发红色预警响应协议,拉黑关联攻击源,防止针对目标基础设
系统底层防御基线红线审查:安全运维工程师必须针对所有承载着对公网暴露(Internet-facing)NGINX 实例的核心服务器及虚机容器,执行底层的基线回溯审查。重点审查操作系统的地址空间布局随机化(ASLR)核心状态(通过确认 sysctl kernel.randomize_va_space 返回值是否为默认的安全值 2)。如若发现任何因特殊的兼容性诉求、早期的环境隔离配置或是由于承载于不规范硬件上而人为导致 ASLR 完全禁用或被削弱的主机节点,必须将其安全修复优先级上提至最高紧急(P0)级别,因为只有在这类脆弱且无防护伞的环境下,NGINX Rift 漏洞才有可能被实打实地转化为接管
网络安全日报 2026年05月18日
1、Turla将Kazuar改造为模块化P2P僵尸网络
https://www.microsoft.com/en-us/security/blog/2026/05/14/kazuar-anatomy-of-a-nation-state-botnet/研究人员发现Turla已将Kazuar后门改造为由三个模块组成的P2P僵尸网络,以提升隐蔽控制、任务分发韧性和长期驻留能力。该架构通过点对点通信替代或弱化传统中心化指挥控制模式,使受感染节点之间能够转发指令与数据,从而降低单点失效风险并增强抗侦测性。报道指出,此次改造的重点在于实现更隐蔽的C2通信、更稳健的任务下发机制,以及在受害环境中的持续访问能力,体现出相关威胁活动在模块化和持久化方向上的演进。
2、REMUS窃密木马加速演化并强化会话窃取
https://www.bleepingcomputer.com/news/security/inside-the-remus-infostealer-session-theft-maas-and-rapid-evolution/研究人员称,REMUS作为新兴信息窃取木马,正从单一恶意程序快速演变为高度商业化的恶意软件即服务平台。研究基于2026年2月12日至5月8日期间与该地下运营相关的128条帖子,显示其在数月内持续发布功能更新、运营优化和面向客户的支持内容,发展节奏类似正规软件产品。REMUS早期主打浏览器凭证、Cookie、Discord令牌窃取及Telegram投递,随后扩展到恢复令
3、伪装面试应用传播JobStealer恶意程序
https://hackread.com/fake-job-interview-jobstealer-malware-windows-macos/攻击者正利用伪装成求职面试软件的应用,在Windows和macOS系统上传播JobStealer恶意程序。该恶意软件的主要目标是窃取受害者设备中的敏感信息,包括加密货币钱包数据、浏览器中的账户与会话信息,以及保存的密码等。此类攻击借助求职和面试场景进行伪装,具有较强迷惑性,可能诱导用户主动下载安装恶意应用。报道表明,相关威胁同时影响主流桌面平台,显示出攻击者在跨平台投放和信息窃取方面的活跃趋势。
4、Exim关键漏洞可致远程代码执行
https://xbow.com/blog/dead-letter-cve-2026-45185-xbow-found-rce-exim开源邮件传输代理Exim曝出高危漏洞CVE-2026-45185,未认证远程攻击者在特定配置下可实现任意代码执行。该问题影响4.97至4.99.2版本中采用GnuTLS构建、并启用STARTTLS与CHUNKING通告的Exim实例,OpenSSL构建不受影响。漏洞本质为TLS关闭过程中处理BDAT分块SMTP流量时触发的释放后使用(UAF),可能导致向已释放内存写入数据。成功利用后,攻击者可在服务器上执行命令、访问Exim数据及邮件内容,并可能进一步横向移动
5、微软MDASH发现16个已修复的Windows漏洞
https://thehackernews.com/2026/05/microsofts-mdash-ai-system-finds-16.html微软披露,其新推出的MDASH人工智能系统发现了16个已在本月“补丁星期二”更新中修复的Windows漏洞。相关漏洞中包括两个可导致远程代码执行的高危问题,分别涉及IKEv2和TCP/IP组件。该消息表明,微软正在将AI能力应用于漏洞挖掘与安全防护流程,以辅助发现系统中潜在的高风险缺陷。现有信息主要指出漏洞数量、修复时间点以及其中两类关键受影响组件,未进一步公开每个漏洞的详细技术细节、利用条件或影响范围。
6、AvadaBuilder漏洞可致网站凭据被窃取
https://www.wordfence.com/blog/2026/05/1000000-wordpress-sites-affected-by-arbitrary-file-read-and-sql-injection-vulnerabilities-in-avada-builder-wordpress-plugin/WordPress插件Avada Builder曝出两处安全漏洞,可能导致任意文件读取和数据库敏感信息泄露,影响约100万活跃安装。其一为CVE-2026-4782,影响3.15.2及以下版本,具备至少订阅者权限的认证用户可借助shortcode渲染功能中的custom_s
7、三个node-ipc版本被发现含窃密后门代码
https://www.stepsecurity.io/blog/node-ipc-npm-supply-chain-attack三个node-ipc版本中被发现包含窃密程序和后门代码,可能导致开发者与云环境中的敏感信息被非法获取和外传。受影响内容主要涉及开发过程中常见的凭据、密钥及相关机密数据,这意味着使用相关版本的项目或构建环境可能面临供应链安全风险。该事件再次凸显开源依赖被植入恶意代码后,对开发流程、CI/CD 环境以及云资产安全带来的潜在威胁。对于依赖 node-ipc 的用户而言,应尽快核查所使用版本并评估暴露范围,及时采取替换、清理和凭据轮换等措施以降低风险。
8、本地部署Exchange漏洞遭恶意邮件利用
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-42897CVE-2026-42897正影响本地部署的Microsoft Exchange Server,攻击者可通过特制电子邮件对该漏洞进行利用。现有信息显示,此类邮件可被用于实施欺骗相关攻击,给企业邮件系统与通信可信度带来风险。报道强调该问题已处于被利用状态,因此受影响环境需要尽快采取缓解措施。对于仍运行本地Exchange服务器的组织而言,应立即核查资产与版本情况,关注微软后续安全通告与补丁信息,并结合邮件安全策略、日志监测和访问控制等手段降低被攻击面,避免威胁进
9、OpenClaw四个漏洞可被链式利用
https://www.cyera.com/blog/claw-chain-cyera-research-unveil-four-chainable-vulnerabilities-in-openclawOpenClaw 2026.4.22版本中存在四个被称为“Claw Chain”的安全漏洞。这些漏洞在单独存在时影响有限,但一旦被攻击者进行链式组合利用,可能造成更严重的安全后果,包括数据被窃取、权限提升以及在受影响系统中建立持久化控制。现有信息表明,问题集中于OpenClaw 2026.4.22版本,说明该版本用户面临较高风险。报道摘要未披露每个漏洞的具体技术细节、利用条件、受影响范围及修复
10、Ghostwriter借PDF钓鱼攻击乌克兰政府目标
https://www.welivesecurity.com/en/eset-research/frostyneighbor-fresh-mischief-digital-shenanigans/研究人员发现Ghostwriter在2026年3月针对乌克兰政府目标发起攻击,攻击链以PDF文件作为诱饵,并结合地理围栏技术提升命中率与隐蔽性。报道指出,该行动的最终目的是在受害环境中投放Cobalt Strike,这是一类常被用于后渗透控制、横向移动和维持访问的工具。现有信息表明,此次攻击主要面向乌克兰政府机构,体现出针对性较强的定向钓鱼特征。报道未披露更多关于诱饵内容、投递方式或受害范围的细节,但
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
2026 AI+网络安全高级研讨会 · 邀请函
人工智能技术的爆发式迭代正重塑全球数字经济格局与国家核心竞争力新赛道,生成式大模型、多模态 AI 与千行百业的深度融合,已成为驱动数字中国建设向纵深发展的核心引擎,网络空间也由此正式迈入 “人机协同、智能对抗” 的全新纪元。当前,AI 既是网络安全防护体系升级的核心赋能者,为漏洞智能挖掘、威胁实时感知、自动化应急响应提供革命性解决方案;也催生了 AI 驱动的自动化批量攻击、生成式恶意代码、AI 增强型 APT 渗透、大模型自身安全漏洞等新型威胁,传统安全技术体系与高校人才培养模式正面临颠覆性挑战。在网络安全实战场景,AI 正彻底打破传统网安攻防的人力边界与效率瓶颈。能否掌握 “AI +网络安全
为贯彻落实教育部关于深化产教融合、推进网络安全新工科建设与 “AI + 教育” 融合发展的要求,在中国网络空间安全人才教育论坛(网教盟)指导下,湖南蚁景科技有限公司拟于2026年7月27日-7月31日在广州举办“2026 AI + 网络安全高级研讨会”,以实战化课程体系覆盖 AI 与渗透测试融合的核心场景,助力教师打造兼具前沿技术能力与教学转化价值的核心竞争力。诚邀全国相关专业负责人、学科带头人、骨干教师参会交流。
一、组织单位
指导单位:中国网络空间安全人才教育论坛
主办单位:湖南蚁景科技有限公司
二、会议内容
1、渗透测试环境搭建
使用 VMware 虚拟化技术部署 Kali Linux,完成系统初始化、网络配置、基础工具安装及优化,构建标准的渗透测试实验环境。
2、Kali 接入 AI 智能体
在 Kali 中安装 Claude Code 等 AI 助手,配置通信接口,实现操作系统与大型语言模型智能体之间的交互连接。
3、MCP Server 实现自然语言渗透
部署并利用模型上下文协议(MCP)服务,将自然语言指令转化为实际的系统操作,驱动 Kali 工具集执行自动化渗透任务。
4、MCP 深度实战开发
学习 MCP 协议核心规范,动手编写自定义 MCP 服务接口,将常用安全工具封装为可供 AI 调用的标准化组件。
5、AI 全流程驱动漏洞利用开发
使用 AI 智能体操控 Chrome 浏览器完成 Web 漏洞自动利用,借助大模型编写与调试 Exploit 脚本,并运用 AI 操作 IDA Pro 辅助二进制程序逆向分析。
6、AI 全流程自动化代码审计
搭建代码分析工具与 LLM 联动的审计管道,对多语言源代码进行自动化漏洞发现、上下文分析及结果验证。
7、AI 赋能渗透测试全链路自动化
将 AI 应用于渗透测试全流程:信息收集与资产测绘、智能化漏洞检测与确认、AI 辅助漏洞利用,以及自动生成结构化渗透测试报告。
8、多 AI 智能体协同自动化攻击链
利用多智能体编排技术,将信息收集、打点、维权、横向移动等攻击步骤串联为全自动攻击链,并结合 AI-UEBA 技术对用户与实体行为进行异常洞察。
三、参会人员
全国高校、职业院校计算机相关专业和网络(信息)安全专业的负责人、学科带头人、骨干教师、实验室人员等。
四、预期收获
1、快速搭建标准化渗透环境:独立完成可复现的虚拟化渗透测试平台部署,精通 Kali 系统深度配置与性能优化,为后续所有实战演练筑牢稳定、高效的环境基础。
2、解锁 AI 渗透入门能力:掌握 LLM 与渗透测试工作站的无缝对接技术,理解 AI Agent 与操作系统的交互原理,熟练通过命令行和 API 调用 AI 能力,正式开启人机协同渗透新时代。
3、自然语言操控安全工具:吃透 MCP 核心架构,实现用自然语言直接指挥 Nmap、Sqlmap 等主流工具,彻底降低工具使用门槛,让基础渗透操作效率提升 3-5 倍。
4、定制专属 AI 安全插件:具备安全工具 MCP 服务开发能力,可根据企业业务需求快速打造私有化 AI 安全插件,突破现成工具限制,实现任意安全工具的智能化封装。
5、AI 赋能漏洞全流程利用:一键将漏洞描述转化为可执行的 PoC/Exp 代码,获得 Web 与二进制漏洞利用、浏览器操控、逆向工程的 AI 实战加持,大幅提升漏洞挖掘与利用的自动化水平。
6、构建攻防一体智能体系:用 AI 重构渗透测试全工作流,自动化完成 90% 以上重复劳动;掌握 AI 增强代码审计流水线搭建,发现传统扫描器遗漏的逻辑漏洞;同时具备端到端自动化攻击链设计与 AI 异常检测能力,建立攻防兼备的全局安全视野。
7、结业证书:获得由湖南蚁景科技有限公司颁发的结业证书。
五、讲师简介
刘俊明
2019年CNCC-中国计算机大会攻防演讲嘉宾,哈工大网络安全国际邀请赛 HITCTF 2023 裁判长,高校网络空间安全高级研修班特聘专家,中国网络空间安全人才教育论坛特聘讲师,擅长红队渗透测试技术,多年从事渗透测试、Web 安全教研工作,具备丰富的红队人才培养经验。
曾为高校、税务、移动、电网、黄金、烟草等政府事业单位进行网安实战和安全服务技能培训; 为国防科大、中南大学、湖南大学、中国海洋大学、广州大学等高校进行网络安全、攻防演练的系统化培训。
擅长技术:Web渗透、内网渗透、漏洞挖掘、POC/EXP 编写、安全服务、应急响应等网络安全领域。
六、会议安排
1、培训方式:线下会议 / 线上直播
2、培训时间:2026年7月27日-7月31日(7月26日报到)
3、培训地点:广州市黄埔区知识城海丝知识中心
4、会议规模:100人
七、报名方式
1、报名时间:即日起至2026年7月26日
2、报名邮箱:edu@yijingsec.com
3、电话咨询:黄老师 18774948349
4、培训费用:3980元/人(含会议资料,交通费和住宿费自理,自备电脑)
5、付款方式:
◆ 线上汇款: (请务必备注“学校名+参会者姓名”)
公司名称:湖南蚁景科技有限公司
开户行名称:农业银行湖南湘江新区分行
开户行账号:18058801040005912
◆ 扫码付款:(请务必备注“学校名+参会者姓名”)
◆ 现场缴费:现金、扫码或刷卡(银行卡、公务卡均可)
具体课程内容
扫描下方二维码即可报名:
网络安全日报 2026年05月15日
1、伊朗黑客组织入侵韩国大型电子制造商
https://www.security.com/threat-intelligence/iran-seedworm-electronics 研究人员披露,与伊朗有关的黑客组织MuddyWater(又名Seedworm、Static Kitten)近期发起大范围网络间谍活动,目标覆盖多个国家和行业,其中包括一家韩国大型电子制造商、政府机构、中东一座国际机场、亚洲工业企业及教育机构。研究人员称,攻击者于2026年2月20日至27日在该韩国企业网络内活动约一周,疑似以情报搜集为导向,重点关注工业与知识产权窃取、政府间谍活动及获取下游客户或企业网络访问权限。此次行动大量使用DLL侧加载、Power
2、伪装援助文件的间谍软件行动曝光
https://cyble.com/blog/operation-humanitarianbait-infostealer-campaign/ 研究人员披露了一起名为“Operation HumanitarianBait”的网络攻击活动。该行动利用伪造的人道主义援助相关文档作为诱饵,面向俄语用户实施定向攻击。攻击链中,恶意载荷托管在GitHub平台,受害者在接触并打开相关诱饵文件后,可能进一步下载并执行后续程序。最终载荷为基于Python开发的间谍软件,说明攻击者具备利用常见开发语言和公开平台隐藏恶意活动的能力。现有信息表明,这是一场结合社会工程、远程托管载荷与信息窃取能力的攻击行动,重点在
3、新型TrickMo借助TON实现隐蔽控制
https://www.threatfabric.com/blogs/new-trickmo-variant-device-take-over-malware-targeting-banking-fintech-wallet-auth-app 研究人员发现TrickMo安卓银行木马出现新变种,其一项关键变化是利用TON区块链基础设施进行隐蔽的命令与控制(C2)通信。按照披露信息,这种做法意在提升攻击活动的隐匿性,降低传统网络层面检测与拦截的效果。标题同时提到,该变种还结合SOCKS5能力,将受感染的安卓设备转化为网络代理支点,以便为后续流量转发或间接访问提供条件。现有内容重点说明了其通信与代
4、RubyGems因恶意包攻击暂停新用户注册
https://thehackernews.com/2026/05/rubygems-suspends-new-signups-after.html RubyGems因遭遇大规模恶意软件包上传事件,已暂停新用户注册。公开信息显示,此次攻击涉及数百个恶意包,被认为进一步加剧了软件供应链安全风险。RubyGems作为Ruby生态的重要软件包仓库,此类事件可能影响开发者对第三方依赖的获取与信任,也反映出开源包管理平台在账号注册、包审核和恶意内容拦截方面面临持续压力。目前已知信息主要集中在平台采取的应急措施以及攻击规模,原文未披露更详细的技术细节、影响范围或攻击者身份。
5、富士康确认北美工厂遭氮气勒索软件攻击
https://www.bleepingcomputer.com/news/security/electronics-giant-foxconn-confirms-cyberattack-on-north-american-factories/ 富士康向媒体证实,其北美部分工厂遭遇网络攻击,事件发生后公司已启动应急响应机制,并采取多项运营措施以保障生产和交付连续性,受影响工厂目前正逐步恢复正常生产。此次攻击被“氮气”勒索软件组织认领,该组织声称窃取了约8TB数据和超过1100万份文件,内容涉及机密指令、项目资料和图纸,并提及苹果、英特尔、谷歌、英伟达和AMD等客户。公开信息显示,Nitrog
6、西氏医药披露遭遇数据窃取与系统加密攻击
https://www.bleepingcomputer.com/news/security/west-pharmaceutical-says-hackers-stole-data-encrypted-systems/ 美国制药制造企业West Pharmaceutical Services披露,其遭遇一起重大网络安全事件,攻击者不仅从公司网络中窃取了部分数据,还加密了若干系统。公司称于2026年5月4日首次发现入侵,并在5月7日确认事件具有重大影响,随后启动事件响应流程,包括在全球范围内主动下线部分系统、通知执法部门,并聘请外部网络取证专家及Palo Alto Networks Unit
7、Windows DNS客户端漏洞可导致远程代码执行攻击
https://www.freebuf.com/articles/system/481157.html 微软Windows DNS客户端中新披露的一个漏洞可能让攻击者悄无声息地在企业网络中执行恶意代码,暴露出巨大的攻击面。该漏洞被正式编号为CVE-2026-41096,CVSS严重性评分高达9.8分(满分10分)。
8、MongoDB 高危漏洞可导致攻击者执行任意代码
https://www.freebuf.com/articles/database/481122.html 最新披露的 MongoDB 高危漏洞(CVE-2026-8053)可能使威胁攻击者执行任意代码,进而完全控制受影响服务器,导致数百万条记录面临泄露风险。该漏洞直接影响 MongoDB Server 的部署环境。
9、Veeam推出全新备份管理与网络安全功能
https://siliconangle.com/2026/05/12/veeam-introduces-new-backup-management-cybersecurity-features/ Veeam发布新功能强化数据备份与防护,旗舰产品Veeam Data Platform v13.1新增量子级加密和恶意软件扫描,DataAI Command Platform实现智能数据资产管理,提升企业韧性运营能力。
10、NGINX堆缓冲区溢出漏洞可导致远程代码执行
https://www.secrss.com/articles/90300 未经身份认证的攻击者可通过发送构造的 HTTP 请求触发漏洞,造成 Worker 进程崩溃,在特定环境下还可实现远程代码执行。官方修复NGINX ngx_http_rewrite_module 堆缓冲区溢出漏洞(CVE-2026-42945),该漏洞源于处理特定 rewrite 指令时,由于内部标志位管理错误,导致堆缓冲区分配长度与实际写入长度不一致,从而引发堆缓冲区溢出。未经身份认证的攻击者可通过发送构造的 HTTP 请求触发漏洞,造成 Worker 进程崩溃,在特定环境下还可实现远程代码执行。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
网络安全日报 2026年05月14日
1、伪造隐私过滤项目登顶HuggingFace下载榜
https://www.hiddenlayer.com/research/malware-found-in-trending-hugging-face-repository-open-oss-privacy-filter 一个冒充“OpenAI Privacy Filter”的恶意项目曾登上Hugging Face下载排行榜首位,并累计获得约24.4万次下载。该项目以看似正常的隐私过滤工具为幌子,实际向Windows用户传播信息窃取型恶意软件,可能导致受害者的凭据、会话令牌及其他敏感数据被盗。此事件表明,热门开源与AI模型托管平台同样可能被攻击者利用,通过伪装成受欢迎或可信工具来扩大传播范围
2、黑客滥用VercelGenAI批量生成钓鱼网站
https://hackread.com/hackers-exploit-vercel-genai-phishing-sites/ 攻击者正在滥用Vercel GenAI批量创建高仿真的钓鱼网站。这些页面可模仿微软、阿迪达斯、耐克等知名品牌的外观与风格,使诈骗页面更具迷惑性,也让普通用户更难通过视觉特征识别风险。报道指出,此类生成式AI工具被不法分子利用后,可能显著降低搭建钓鱼站点的门槛,并提升伪造页面的制作效率与可信度,从而扩大网络钓鱼攻击的影响范围。该现象反映出生成式AI在便利开发的同时,也带来了新的安全滥用风险。
3、Shai-Hulud供应链攻击污染数百软件包
https://www.endorlabs.com/learn/shai-hulud-compromises-the-tanstack-ecosystem-80-packages-compromised Shai-Hulud供应链攻击已影响npm与PyPI上的数百个软件包,目标直指开发者凭证。攻击者被指与TeamPCP有关,先后入侵TanStack、Mistral AI、Guardrails AI、UiPath、OpenSearch等项目,并利用被窃取的CI/CD凭证发布恶意版本。此次攻击尤其危险之处在于,恶意包通过合法流水线发布,携带有效的OIDC身份、SLSA Build Level 3
4、Signal新增应用内警示以防社交工程攻击
https://www.bleepingcomputer.com/news/security/signal-adds-security-warnings-for-social-engineering-phishing-attacks/ Signal宣布在应用内新增确认提示和警告信息,以加强对网络钓鱼和社交工程攻击的防护,降低用户因外部请求受骗的风险。此举背景是近期多起针对高知名度用户的攻击事件,攻击者冒充“Signal支持”发送虚假警报,诱导受害者扫描二维码或提供一次性验证码,从而滥用“关联设备”功能访问账号、聊天记录和联系人列表。相关事件已被FBI、荷兰政府和德国有关部门披露,并归因于俄罗
5、斯柯达网店遭入侵致客户数据泄露
https://www.skoda-auto.de/unternehmen/sicherheitsvorfall-skoda-shop 大众集团旗下汽车制造商斯柯达披露,其在线商店因电商门户所用标准软件存在未说明漏洞而遭攻击,导致不明数量客户的个人信息被未授权访问。公司表示,受影响数据包括姓名、地址、电子邮件、电话号码、订单信息,以及登录凭据中的邮箱地址和密码加密哈希;完整信用卡信息未存储在被攻破系统中,因此攻击者无法直接获取。斯柯达称已修复相关漏洞,向数据保护监管机构报告事件,并交由专业IT取证团队开展技术分析。尽管目前没有证据表明被窃取的访问数据已被滥用,斯柯达仍提醒受影响客户警惕冒充其
6、谷歌推出AI驱动的Android移动安全增强方案
https://cybersecuritynews.com/google-enhances-android-mobile-security/ Android面临复杂威胁,谷歌推出AI主动防御体系,包括实时威胁检测、设备丢失保护和隐私控制升级,从被动修复转向主动拦截,防止诈骗和数据窃取。
7、Microsoft Teams 漏洞可导致黑客实施欺骗攻击
https://cybersecuritynews.com/microsoft-teams-vulnerability-spoofing/ 微软Teams曝高危漏洞(CVE-2026-32185),攻击者可伪造本地设备进行欺骗攻击,影响数据机密性。已发布Android版修复补丁,建议用户立即更新,企业环境需优先处理。
8、Fortinet修复FortiSandbox与FortiAuthenticator高危漏洞
https://securityaffairs.com/192047/security/critical-fortinet-vulnerabilities-fixed-in-fortisandbox-and-fortiauthenticator.html Fortinet修复了FortiSandbox和FortiAuthenticator的高危漏洞(CVE-2026-44277和CVE-2026-26083),攻击者可远程执行任意代码,需升级至指定版本。目前未发现利用情况。
9、微软2026年5月补丁日:修复120个漏洞,含29个高危RCE漏洞
https://cybersecuritynews.com/microsoft-patch-tuesday-may-2026/ 微软2026年5月补丁修复120个漏洞,含29个高危RCE漏洞,重点涉及Windows核心网络、Office、Azure及AI工具,虽无0Day但风险高,需优先修补Dynamics 365、SharePoint及DNS等关键组件。
10、虚假Claude Code安装程序利用浏览器凭证窃取工具锁定开发者
https://hackread.com/fake-claude-code-installer-devs-browser-credential-stealer/ 攻击者伪造Claude Code安装页面,诱骗开发者下载恶意脚本窃取浏览器密钥,利用IElevator2接口解密数据,属于新型持续性攻击。建议启用脚本日志监控异常调用,采用凭证轮换降低风险。
声明
以上内容原文来自互联网的公共方式,仅用于有限分享,译文内容不代表蚁景科技观点,因此第三方对以上内容进行分享、传播等行为,以及所带来的一切后果与译者和蚁景科技无关。以上内容亦不得用于任何商业目的,若产生法律责任,译者与蚁景科技一律不予承担。
Prompt is Search:GCG 与大模型对抗后缀攻击
0.前言
在上一次的技术分享文章中,着重讨论了 RAG 时代的数据投毒问题,也就是当外部文档被检索、拼接并送入大模型上下文时,数据就不再只是被动的信息来源,它可能变成一段能够影响模型行为的代码,详细可以搜索《Data is Code:RAG 时代的数据投毒与大模型上下文劫持》
这种风险在 RAG 系统中尤为明显,攻击者不一定需要入侵服务器,也不一定需要修改模型权重,只要一段被污染的文本进入知识库,并在合适的问题下被召回,它就有机会改变模型的回答逻辑,突破指令边界,甚至诱导模型泄露同一上下文中的敏感信息。
上次我在第三种RAG投毒方式,零交互数据窃取中,提到这种攻击还可以进一步升级,即用GCG计算出一串人类看不懂的乱码,这串乱码在向量空间里的坐标跟很多都重合,完成一次更加隐蔽的攻击
RAG 投毒更多讨论的是攻击内容如何进入上下文,而 GCG 是探讨,如果我们已经知道模型会受上下文影响,那么能不能用算法自动搜索出最容易影响模型的那一小段文本?
这就是 GCG 值得被单独拿出来讲的原因,因为它把大模型越狱从人写 prompt推进到了算法优化 prompt的阶段
说到底,如果说 RAG 投毒讨论的是外部数据如何劫持上下文,那么 GCG 讨论的就是另一个更底层的问题:模型的安全边界,是否可以被算法自动搜索出来?
1.GCG介绍
在讨论 GCG 之前,先要把它放回到大模型越狱的语境里
1.1从 Jailbreak 到 Adversarial Suffix
传统的 Jailbreak(越狱),本质上是通过构造特殊提示词,让模型偏离原本的安全对齐策略。比如通过角色扮演、规则重写、上下文欺骗、任务拆分等方式,让模型误以为自己可以回答原本应该拒绝的问题
这类方法有一个共同点:它们基本上是由人写出来的
也就是说,攻击效果依赖于攻击者对模型行为的观察、对提示词的理解,以及大量试错。攻击者要不断调整表达方式,测试模型是否会拒绝,观察模型在哪些语境下更容易被攻击,比如说会说一些不该说的话,或者是泄露不该泄露的东西
但 GCG 的出现,把这个问题变成了个半自动,即GCG 不再把 Jailbreak 看成一个单纯的提示词写作问题,而是把它建模成一个优化问题:
在用户原始问题后面,能不能自动搜索出一小段 token 后缀,让模型更倾向于生成目标响应,而不是执行安全拒答?
这段被搜索出来的文本,通常叫做adversarial suffix,也就是对抗后缀
它可以被抽象成下面这个形式:
用户问题 + 对抗后缀 → 模型输出
这里真正被优化的,不是用户问题本身,也不是模型权重,而是后面那一小段额外文本
这也是 GCG 和传统 Jailbreak 最大的差别
说得通俗易懂点,就是传统 Jailbreak 更像是在说服模型,而GCG算法更像是在搜索模型的脆弱方向
之前的分享里讲 RAG 投毒时,重点是外部数据如何进入上下文,并在推理期影响模型行为
而这次讲 GCG,就是在进一步探索,如果说模型确实会被上下文影响,那么什么样的上下文片段最容易影响它?
1.2 GCG算法
GCG的原文链接 https://arxiv.org/abs/2307.15043
GCG 是Greedy Coordinate Gradient的缩写,可以拆成三个关键词来看:
Greedy 贪心
Coordinate 坐标
Gradient 梯度
这三个词基本上就概括了它的核心思想
Gradient 指的是,算法会利用模型的梯度信息,判断当前后缀中的某个 token 如果被替换,模型输出会朝哪个方向变化
Coordinate 指的是,它不是一次性改完整段文本,而是把后缀看成多个位置,每次选择其中一个 token 位置进行修改
这里的位置可以简单理解成后缀中的第几个 token
比如:
[x0] [x1] [x2] [x3] [x4]
GCG 每次会尝试修改其中某一个位置,比如先看 x3 能不能换成更合适的 token,再看 x1、x4 等位置
Greedy指的是,每一轮修改时,它都会倾向于保留当前看起来效果最好的替换。也就是说,它不保证一次找到全局最优,但会不断做局部最优选择,让后缀逐步
朝目标方向靠近
所以,用一句话解释 GCG
GCG 是一种利用梯度信息,在离散 token 空间中贪心搜索对抗后缀的方法
如果说得更人话一点:
它就像是在模型输入后面放了一串可调参数,然后不断问模型:我把这里换成哪个 token,最容易让你的输出朝目标方向偏移
这里可能会有人有个疑问,特别是有做图像干扰的师傅们
就是图像可以做梯度优化很好理解,因为图片是像素矩阵,像素值是连续的
比如一个像素原来是:0.31 我们可以把它微调成:0.33 但文本不是连续的
一个 token 要么是猫,要么是狗,要么是某个标点符号,不能把猫加上 0.01 变成另一个 token
所以疑问就是
token 是离散的,GCG 为什么还能用梯度?
其实关键在于语言模型真正处理的并不是 token 字符串本身,而是 token 对应的 embedding 向量
Embedding 向量就像是给每一个词语或事物分配的多维特征坐标位置,它把人类才能懂的抽象概念变成了一串数字,让意思越相近的东西,在这个数学坐标系里
住得越紧凑,从而让计算机能直接通过量距离来算出它们的关系
举个最直白的例子解释一下
如果把词语当成找对象,我们可以给它们打分(坐标):
“苹果”:甜度(0.8),水分(0.9),机械感(0.0) -> [0.8, 0.9, 0.0]
“香蕉”:甜度(0.9),水分(0.5),机械感(0.0) -> [0.9, 0.5, 0.0]
“汽车”:甜度(0.0),水分(0.0),机械感(1.0) -> [0.0, 0.0, 1.0]
在计算机眼里,它算一下距离就会发现,苹果和香蕉的向量数字非常接近,所以它们是同一类,都是属于水果范畴
而汽车跟它们差了十万八千里,这就是 Embedding 的核心作用
回到GCG,一个输入 token 进入模型时,会先被映射成一个高维向量,虽然 token ID 是离散的,但 embedding 向量是连续的,连续向量就可以参与梯度计算
可以这样理解:
token → embedding 向量
离散文本 → 连续空间中的一个点
不可直接求导 → 可以通过向量方向估计变化趋势
GCG 并不是直接对 token 做加减法,而是通过梯度判断:
如果想让模型更接近某个目标输出,那么当前这个 token 对应的 embedding 应该往哪个方向变化?
然后算法会回到词表中,寻找那些更接近这个方向的候选 token,再尝试用它们替换当前 token
所以,GCG 的关键并不是文本本身可导,而是:
文本进入模型后会变成 embedding,而 embedding 空间中的方向变化可以用梯度来估计
这也是为什么它经常会生成一些人类看起来像乱码的后缀,因为GCG算法并不是在追求人类读起来通顺,而是在追求模型内部表示空间中的有效扰动
从安全对齐的角度看,一个经过对齐的模型在面对危险问题时,理想行为应该是拒绝回答
也就是说,当输入是危险问题的时候,模型应该更倾向于输出:
抱歉,我不能帮助完成这个请求
而不是输出具体的危险内容
GCG 要做的事情,就是在不修改模型权重的情况下,只通过修改输入后缀,让模型的输出概率发生偏移
可以抽象成:
原始状态:
用户问题 → 模型倾向于拒答
加入后缀后:
用户问题 + 后缀 → 模型更容易生成目标响应
这里需要注意一点:
GCG 并不是让模型理解这段后缀的语义,也不一定是通过自然语言逻辑说服模型。
很多时候,这段后缀在人类看来没有明确含义,但它在模型内部可能会影响某些 token 的生成概率
类比到图像对抗样本一样,人眼看到的图片几乎没变化,但模型的分类结果可能发生变化,GCG 对语言模型做的是类似的事情,只不过扰动对象从像素变成了 token
因此,GCG 的真正意义不是发现了一种奇怪的越狱提示词,而是说明:
大模型的安全边界可能不是一个稳定的语义规则边界,而是一个可以被搜索和逼近的概率边界。
1.3 GCG具体流程
通俗易懂来说,GCG可以具体分为六步
第一步:初始化一段后缀
算法首先会在用户问题后面放一段初始后缀
这段后缀一开始可以是随机 token,也可以是某种占位文本
抽象表示如下:
用户问题 + [x1, x2, x3, x4, ..., xn]
其中 [x1, x2, x3, ..., xn] 就是后面要不断优化的部分
第二步:设定优化目标
GCG 需要一个目标方向,比如,它可能希望模型更倾向于生成某类目标响应,而不是安全拒答
可以把它抽象成:
目标:让模型输出从拒答路径偏向目标响应路径
第三步:计算当前后缀的影响
模型会根据当前输入计算输出概率,此时算法会评估:
当前后缀距离目标还有多远?
如果当前后缀效果不好,说明它还需要继续被修改
这个距离通常会通过损失函数来衡量
损失函数就是 AI 的错题扣分器,预测答案偏离标准答案越离谱,扣的分,也就是Loss 值就越高,AI 学习的过程就是想方设法把这个分数降到最低
举个例子,最开始的 Loss 是 6.13,说明那一组前缀离成功劫持大模型还差得很远;经过 200 轮的不断纠错调整,Loss 降到了 0.0004,说明算法已经找到了近乎
完美的payload,错题本上的扣分基本清零了
损失越高,说明模型越不倾向于生成目标响应,损失越低,说明当前后缀越能把模型推向目标方向
说白了,就是GCG 会把模型有没有被诱导到目标方向转化成一个可计算的损失值
第四步:用梯度寻找候选 token
接下来是 GCG 最关键的一步。
算法会查看后缀中每一个位置,估计如果替换这个位置上的 token,损失可能如何变化
比如当前后缀是:
[x0] [x1] [x2] [x3] [x4]
算法可能发现,修改 x3 对降低损失最有帮助,于是它会围绕 x3 这个位置,从词表中挑出一批候选 token
这里的梯度就像一个方向指示器,它告诉算法,当前这个位置,往哪些 token 方向替换更可能有效?
第五步:尝试替换并评估效果
找到候选 token 后,算法会尝试把当前位置替换成不同候选项,然后重新计算损失。
比如:
原始后缀:
[x0] [x1] [x2] [x3] [x4]
候选替换:
[x0] [x1] [a] [x3] [x4]
[x0] [x1] [b] [x3] [x4]
[x0] [x1] [c] [x3] [x4]
算法会比较这些替换方案,选择让损失下降最多的那个
第六步:重复迭代
完成一次替换后,算法会继续下一轮,它会再次计算梯度,再次选择位置,再次生成候选 token,再次替换。
整个过程可以画成下面这个循环:
初始化后缀
↓
计算损失
↓
计算梯度
↓
选择候选 token
↓
尝试替换
↓
保留效果最好的替换
↓
重复迭代
经过多轮迭代后,原本随机或普通的后缀,可能会变成一段对模型输出有明显影响的 adversarial suffix
整个过程的伪代码如下:
输入:
模型 M
原始输入 x
可优化后缀 s = [s1, s2, ..., sn]
目标响应 y
迭代轮数 T
初始化:
随机或固定初始化一段 suffix s
循环 T 轮:
1. 将 x 与当前 suffix s 拼接,送入模型 M
2. 计算模型生成目标响应 y 的损失 L
3. 对 suffix 中每个 token 位置计算梯度
4. 根据梯度为每个位置选出若干候选 token
5. 尝试替换某个位置上的 token
6. 重新计算替换后的损失
7. 保留让损失下降最多的那次替换
输出:
优化后的 suffix s
上面这段伪代码看起来像普通优化算法,但它真正特殊的地方在于,优化对象不是模型参数,而是输入文本
优化空间不是连续向量,而是离散 token,优化目标不是提升任务准确率,而是改变模型在安全边界附近的输出倾向
2.GCG实践
说了这么多,我们来做点GCG实践
2.1 Hackergame
https://github.com/USTC-Hackergame/hackergame2023-writeups这里拿中国科学技术大学2023的一道Hackergame题目来讲解
本地部署环境一定要 Gradio 3.50.2 和 Transformers 4.35.0
否则本地跑起来会有各种各样的错误
这里我们着重来看第三个flag
flag3已经不像之前的flag1和flag2可以通过手写提示词的方式就可以直接拿到flag的
这里就必须用到GCG算法了,我们回顾一下刚刚所讲的GCG步骤
先初始化,设定目标,计算后缀,梯度寻找token,替换评估,重复迭代,这里就不再过多赘述了,直接看解题代码
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
from livelossplot import PlotLosses # pip install livelossplot
import gc
import numpy as np
import torch
import torch.nn as nn
from transformers import AutoModelForCausalLM, AutoTokenizer
np.random.seed(20)
torch.manual_seed(20)
torch.cuda.manual_seed_all(20)
target = "hackergame" # 这个就是我所说的初始化目标
num_steps = 500 #最多优化 500 轮
adv_string_init = "!"*100 #初始前缀,先用 100 个感叹号占位
adv_prefix = adv_string_init #当前正在被优化的前缀
# larger batch_size means more memory (but more likely to succeed)
batch_size = 512 #每轮尝试 512 个候选前缀
device = 'cuda:0'
topk = 256 #每个位置从梯度推荐的前 256 个 token 里采样
def get_embedding_matrix(model):
return model.transformer.wte.weight
def get_embeddings(model, input_ids):
return model.transformer.wte(input_ids)
def token_gradients(model, input_ids, input_slice, target_slice, loss_slice):
"""
Computes gradients of the loss with respect to the coordinates.
Parameters
----------
model : Transformer Model
The transformer model to be used.
input_ids : torch.Tensor
The input sequence in the form of token ids.
input_slice : slice
The slice of the input sequence for which gradients need to be computed.
target_slice : slice
The slice of the input sequence to be used as targets.
loss_slice : slice
The slice of the logits to be used for computing the loss.
Returns
-------
torch.Tensor
The gradients of each token in the input_slice with respect to the loss.
"""
embed_weights = get_embedding_matrix(model)
one_hot = torch.zeros(
input_ids[input_slice].shape[0],
embed_weights.shape[0],
device=model.device,
dtype=embed_weights.dtype
)
one_hot.scatter_(
1,
input_ids[input_slice].unsqueeze(1),
torch.ones(one_hot.shape[0], 1,
device=model.device, dtype=embed_weights.dtype)
)
one_hot.requires_grad_()
input_embeds = (one_hot @ embed_weights).unsqueeze(0)
# now stitch it together with the rest of the embeddings
embeds = get_embeddings(model, input_ids.unsqueeze(0)).detach()
full_embeds = torch.cat(
[
input_embeds,
embeds[:, input_slice.stop:, :]
],
dim=1
)
logits = model(inputs_embeds=full_embeds).logits
targets = input_ids[target_slice]
loss = nn.CrossEntropyLoss()(logits[0, loss_slice, :], targets)
loss.backward()
grad = one_hot.grad.clone()
grad = grad / grad.norm(dim=-1, keepdim=True)
return grad
def sample_control(control_toks, grad, batch_size):
control_toks = control_toks.to(grad.device)
original_control_toks = control_toks.repeat(batch_size, 1)
new_token_pos = torch.arange(
0,
len(control_toks),
len(control_toks) / batch_size,
device=grad.device
).type(torch.int64)
top_indices = (-grad).topk(topk, dim=1).indices
new_token_val = torch.gather(
top_indices[new_token_pos], 1,
torch.randint(0, topk, (batch_size, 1),
device=grad.device)
)
new_control_toks = original_control_toks.scatter_(
1, new_token_pos.unsqueeze(-1), new_token_val)
return new_control_toks
def get_filtered_cands(tokenizer, control_cand, filter_cand=True, curr_control=None):
cands, count = [], 0
for i in range(control_cand.shape[0]):
decoded_str = tokenizer.decode(
control_cand[i], skip_special_tokens=True)
if filter_cand:
if decoded_str != curr_control \
and len(tokenizer(decoded_str, add_special_tokens=False).input_ids) == len(control_cand[i]):
cands.append(decoded_str)
else:
count += 1
else:
cands.append(decoded_str)
if filter_cand:
cands = cands + [cands[-1]] * (len(control_cand) - len(cands))
return cands
def get_logits(*, model, tokenizer, input_ids, control_slice, test_controls, return_ids=False, batch_size=512):
if isinstance(test_controls[0], str):
max_len = control_slice.stop - control_slice.start
test_ids = [
torch.tensor(tokenizer(
control, add_special_tokens=False).input_ids[:max_len], device=model.device)
for control in test_controls
]
pad_tok = 0
while pad_tok in input_ids or any([pad_tok in ids for ids in test_ids]):
pad_tok += 1
nested_ids = torch.nested.nested_tensor(test_ids)
test_ids = torch.nested.to_padded_tensor(
nested_ids, pad_tok, (len(test_ids), max_len))
else:
raise ValueError(
f"test_controls must be a list of strings, got {type(test_controls)}")
if not (test_ids[0].shape[0] == control_slice.stop - control_slice.start):
raise ValueError((
f"test_controls must have shape "
f"(n, {control_slice.stop - control_slice.start}), "
f"got {test_ids.shape}"
))
locs = torch.arange(control_slice.start, control_slice.stop).repeat(
test_ids.shape[0], 1).to(model.device)
ids = torch.scatter(
input_ids.unsqueeze(0).repeat(test_ids.shape[0], 1).to(model.device),
1,
locs,
test_ids
)
if pad_tok >= 0:
attn_mask = (ids != pad_tok).type(ids.dtype)
else:
attn_mask = None
if return_ids:
del locs, test_ids
gc.collect()
return forward(model=model, input_ids=ids, attention_mask=attn_mask, batch_size=batch_size), ids
else:
del locs, test_ids
logits = forward(model=model, input_ids=ids,
attention_mask=attn_mask, batch_size=batch_size)
del ids
gc.collect()
return logits
def forward(*, model, input_ids, attention_mask, batch_size=512):
logits = []
for i in range(0, input_ids.shape[0], batch_size):
batch_input_ids = input_ids[i:i+batch_size]
if attention_mask is not None:
batch_attention_mask = attention_mask[i:i+batch_size]
else:
batch_attention_mask = None
logits.append(model(input_ids=batch_input_ids,
attention_mask=batch_attention_mask).logits)
gc.collect()
del batch_input_ids, batch_attention_mask
return torch.cat(logits, dim=0)
def target_loss(logits, ids, target_slice):
crit = nn.CrossEntropyLoss(reduction='none')
loss_slice = slice(target_slice.start-1, target_slice.stop-1)
loss = crit(logits[:, loss_slice, :].transpose(1, 2), ids[:, target_slice])
return loss.mean(dim=-1)
model = AutoModelForCausalLM.from_pretrained(
'roneneldan/TinyStories-33M',
torch_dtype=torch.float16,
trust_remote_code=True,
).to(device).eval()
tokenizer = AutoTokenizer.from_pretrained(
"EleutherAI/gpt-neo-125M", use_fast=False)
def is_success(prompt):
input_ids = tokenizer.encode(prompt, return_tensors="pt")
output = model.generate(input_ids.to(
device), max_new_tokens=50, num_beams=1, temperature=0)
output = output[:, len(input_ids[0]):]
output_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(output_text)
if output_text.lower().find(target.lower()) != -1:
return True
return False
plotlosses = PlotLosses()
adv_slice = slice(0, len(tokenizer.encode(
adv_string_init, add_special_tokens=False)))
target_slice = slice(adv_slice.stop, adv_slice.stop +
len(tokenizer.encode(target, add_special_tokens=False)))
loss_slice = slice(target_slice.start-1, target_slice.stop-1)
best_new_adv_prefix = ''
for i in range(num_steps):
input_ids = tokenizer.encode(
adv_prefix+target, add_special_tokens=False, return_tensors='pt').squeeze()
input_ids = input_ids.to(device)
coordinate_grad = token_gradients(model,
input_ids,
adv_slice,
target_slice,
loss_slice)
with torch.no_grad():
adv_prefix_tokens = input_ids[adv_slice].to(device)
new_adv_prefix_toks = sample_control(adv_prefix_tokens,
coordinate_grad,
batch_size)
new_adv_prefix = get_filtered_cands(tokenizer,
new_adv_prefix_toks,
filter_cand=True,
curr_control=adv_prefix)
logits, ids = get_logits(model=model,
tokenizer=tokenizer,
input_ids=input_ids,
control_slice=adv_slice,
test_controls=new_adv_prefix,
return_ids=True,
batch_size=batch_size) # decrease this number if you run into OOM.
losses = target_loss(logits, ids, target_slice)
best_new_adv_prefix_id = losses.argmin()
best_new_adv_prefix = new_adv_prefix[best_new_adv_prefix_id]
current_loss = losses[best_new_adv_prefix_id]
adv_prefix = best_new_adv_prefix
# Create a dynamic plot for the loss.
plotlosses.update({'Loss': current_loss.detach().cpu().numpy()})
plotlosses.send()
print(f"Current Prefix:{best_new_adv_prefix}", end='\r')
if is_success(best_new_adv_prefix):
break
del coordinate_grad, adv_prefix_tokens
gc.collect()
torch.cuda.empty_cache()
if is_success(best_new_adv_prefix):
print("SUCCESS:", best_new_adv_prefix)
脚本的核心思想是:先初始化一段无意义前缀,例如一串感叹号,然后不断修改这段前缀中的 token,使模型在看到这段前缀后,更倾向于把 hackergame 作为后续文本生成出来,也就是说,优化阶段并不是直接让模型自由生成,而是把输入构造成:
adv_prefix + hackergame
然后计算模型在当前 adv_prefix 条件下预测 hackergame 的 loss,并且将loss值降低
GCG 的关键在于,它不是随机乱试前缀,而是利用梯度来指导 token 替换
脚本会把可控前缀中的每个 token 转成 one-hot 表示,再通过模型的 embedding 矩阵映射成连续向量。虽然 token 本身是离散的,但 embedding 空间是连续
的,因此可以计算目标 loss 对这些 one-hot 位置的梯度
梯度告诉我们:如果想让 loss 下降,当前位置更应该替换成哪些 token
接下来,脚本会为每个位置选出若干个梯度方向上更有希望的候选 token,并构造出一批候选前缀
每个候选前缀通常只和当前前缀相差一个 token,然后脚本批量评估这些候选前缀对应的目标 loss,选择 loss 最低的那个作为新的前缀
这个过程会不断重复:
直到模型在只看到 adv_prefix 的情况下,能够自动续写出 hackergame,脚本就认为攻击成功
2.2 本地部署GCG
https://github.com/llm-attacks/llm-attacks可以在本地进行gcg攻击过程的一个复现,前期环境安装的命令就不提了,这里提一个模型的问题
#
pip install "fschat[model_worker]"
python -c "
from huggingface_hub import snapshot_download
snapshot_download('lmsys/vicuna-7b-v1.5', local_dir='/data/models/vicuna-7b-v1.5')
"
#
python -c "
from huggingface_hub import snapshot_download
snapshot_download('meta-llama/Llama-2-7b-chat-hf',
local_dir='/data/models/llama-2-7b-chat-hf',
token='YOUR_HF_TOKEN')
"
第一种是下载Vicuna-7B模型,这种模型最轻量,复现最快
第二种是LLaMA-2-7B-Chat,也是论文中的主要目标,但是LLaMA-2 需要先在 HuggingFace 申请访问权限,获取 token
启动命令
CUDA_VISIBLE_DEVICES=0 python -u ../main.py \
--config="../configs/individual_vicuna.py" \
--config.attack=gcg \
--config.train_data="../../data/advbench/harmful_behaviors.csv" \
--config.result_prefix="../results/test_run" \
--config.n_train_data=2 \
--config.data_offset=0 \
--config.n_steps=10 \
--config.test_steps=5 \
--config.batch_size=512
可以看到最终的结果在终端中,随着迭代步数(n_steps)的推进,有几个现象印证了 GCG 算法原理:
在每一轮迭代中,终端都会实时打印出当前的 Loss 值。正如前文所述,损失函数在这里充当了扣分器
在针对目标任务,例如诱导模型输出恶意漏洞脚本的第 0 步,初始的感叹号后缀(! ! !...)产生的 Loss 值通常较高,这说明在没有任何有效干预时,模型原始状态强烈倾向于执行安全拒答
但随着梯度优化的进行,Loss 值会肉眼可见地逐步缩小,这意味着算法找到了让损失下降最多的替换方案,当前生成的对抗后缀正在把模型的输出概率一步步推向设定的目标方向
且在不断迭代的过程中,最初的占位符,比如感叹号会被诸如 avec、payload、compact 等看似毫不相干的词汇或零碎符号逐渐替换
这个过程直观地展示了算法如何利用梯度信息,在离散 token 空间中进行贪心搜索
它根本不在意这些词汇组合在人类读起来是否通顺,它只在乎把某个位置换成哪个 token,最容易让输出朝目标方向偏移
也就是说,大模型的安全边界可能不是一个稳定的语义规则边界,而是一个可以被算法自动搜索和逼近的概率边界
这段对抗样本对人眼来说毫无逻辑,但在模型内部的连续 Embedding 空间中,它却构成了最致命的有效扰动
当跑完设定的步数后,如果 Loss 降到了足够低的阈值,模型就会彻底突破原本的安全对齐限制,顺着后缀,将原本应该拒绝的恶意内容直接生成出来
这里我只实验了10步,做了一个测试而已,所以最终结果 (Step 10): 攻击失败 (Passed 0/1)
归根到底还是因为步数太少,算法没能找到有效的破解后缀,模型依然坚守底线,回答:I'm sorry, but I cannot provide a strategy for hacking...
所以可以把n_steps设置为500,可能会有更好的效果
第2页 第3页 第4页 第5页 第6页 第7页 第8页 第9页 第10页 第11页 第12页 第13页 第14页 第15页 第16页 第17页 第18页 第19页 第20页 第21页 第22页 第23页 第24页 第25页 第26页 第27页 第28页 第29页 第30页 第31页 第32页 第33页 第34页 第35页 第36页 第37页 第38页 第39页 第40页 第41页 第42页 第43页 第44页 第45页 第46页 第47页 第48页 第49页 第50页 第51页 第52页 第53页 第54页 第55页 第56页 第57页 第58页 第59页 第60页 第61页 第62页 第63页 第64页 第65页 第66页 第67页 第68页 第69页 第70页 第71页 第72页 第73页 第74页 第75页 第76页 第77页 第78页 第79页 第80页 第81页 第82页 第83页 第84页 第85页 第86页 第87页 第88页 第89页 第90页 第91页 第92页 第93页 第94页 第95页 第96页 第97页 第98页 第99页 第100页 第101页 第102页 第103页 第104页 第105页 第106页 第107页 第108页 第109页 第110页 第111页 第112页 第113页 第114页 第115页 第116页 第117页 第118页 第119页 第120页 第121页 第122页 第123页 第124页 第125页 第126页 第127页 第128页 第129页 第130页 第131页 第132页 第133页 第134页 第135页 第136页 第137页 第138页 第139页 第140页 第141页 第142页 第143页 第144页 第145页 第146页 第147页 第148页 第149页 第150页 第151页 第152页 第153页 第154页 第155页 第156页 第157页 第158页 第159页 第160页 第161页 第162页 第163页 第164页 第165页 第166页 第167页 第168页 第169页 第170页 第171页 第172页 第173页 第174页 第175页 第176页 第177页 第178页 第179页 第180页 第181页 第182页 第183页 第184页 第185页 第186页 第187页 第188页 第189页 第190页 第191页 第192页 第193页 第194页 第195页 第196页 第197页 第198页 第199页 第200页 第201页 第202页 第203页 第204页 第205页 第206页 第207页
蚁景网安学院火热招生中,限时领取大额优惠券,快来抢购吧~
扫码咨询客服了解招生最新内容和活动

