前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
返回 AI 情报前线
All News · 全部资讯9673
  • Google 发布最强模型 Gemini 4 Argon,主打编程与网络安全
  • Vercel Agent支持安装私有npm包和自定义registry
  • Google Gemma 4 开源发布:256K context 与多平台部署
  • 本地复刻OpenAI Dots:24小时上线开源AI Agent CLI
  • OpenAI 如何用一周推出 Jev 竞品
  • Gemini 4 Argon:追平OpenAI但仍未超越Anthropic
  • Gemini 4 Argon发布:100万输出Token覆盖编程、知识与网安
  • Google Docs/Sheets/Slides API全面支持评论与建议编辑
  • GPT-6.1 Sol发布:编码与计算机操控能力达Astra九成功力,价格仅五分之一
  • Vercel AI Gateway集成Browserbase网页搜索与抓取工具
  • MCP服务器限流与退避设计:防止Agent把账单跑爆
  • 安全让AI Agent部署:四规则让它永远删不了东西
  • Gemini 4 Argon 正式发布:能力大幅提升,但目前仅限「受信任的网络防御者」使用
  • 构建 Agent 数据工厂:Parquet + DuckDB + MCP 架构实战
  • Agent 规则文件是"君子协定":用机制设计让违规无利可图
  • Gemini 4 Argon 模型已发布,但你暂时还用不上
  • Google 发布 Gemini 4 Argon,号称进入下一代前沿智能时代
  • Gemini 4 Argon 测评:表现出色,但你暂时还用不上
  • OpenAI 联手 Synopsys 打造芯片设计 AI 模型 GPT-Synopsys
  • TokenCap:为什么我们用确定性 AST 重构而非让 LLM 生成代码
  • 实测:LLM 能否检出自己帮忙泄露的 Supabase 密钥
  • 三步让 Claude 后台 Agent 快 3-5 倍且更省钱
  • AI Agent 网络搜索 API 真实成本:10 万次搜索实际花销对比
  • Google 将 Gems 升级为 Skills,拥抱代理友好的提示格式
  • PageIndex:无向量数据库的推理型 RAG,可本地运行
  • dbx:25MB 搞定 100+ 数据库,支持 MCP 和本地 AI
  • AI 工程学习路线:从调 API 到上线真实 AI 产品
  • Google Gemini 应用引入 Skills 功能,Workspace AI 自定义能力再升级
  • 两月Claude Code复盘:1675美元API成本与117次危险命令拦截
  • Hugging Face 开源 WebGPU 本地 AI 推理内核,支持 200+ 算子
  • 用Amazon Bedrock知识库自然语言查询保险理赔
  • OpenAI Dots长时间运行边界问题率翻倍
  • 基于 AWS Bedrock 构建多代理音乐生成流水线
  • AI 智能体意外泄露 1.3 万张企业截图,含敏感信息
  • OpenAI Dot 虚拟机配置曝光:AMD 霄龙 + 9.7GB 内存,预装全栈开发工具
  • Google SynthID Bio:AI蛋白水印方案开源
  • AI代理演示成功不代表生产能成功
  • Deepseek为华为昇腾芯片发布开源编程工具TileLang
  • HydraFusion 研究预览版登陆 VS Code 与 GitHub Copilot 应用
  • NVIDIA 开源 AI Agent 安全沙箱 OpenShell
  • x402 新增 OpenAPI 变更检测与限频推断 API
  • OpenAI推理负责人:数学突破仅是智能体时代的开始
  • B站开源Index-Translate:150语言翻译模型,支持社区俚语和长文档
  • Cloudflare Monetization Gateway:用 HTTP 402 向 AI Agent 收费
  • Cloudflare AI Gateway自动路由器:边缘分类器降低AI成本
  • Cloudflare Workers 内置错误监控可直接推给编码 Agent 调查并提 PR
  • Cloudflare Containers 启动提速 6 倍,支持 Agent 运行时选配沙箱
  • 蚂蚁百灵发布 Ling-3.1-flash:560B 总参数、25B 激活参数、1M 上下文
  • 智谱开源GLM-5.3漏洞利用能力逼近Claude,20美元即可发起Chrome攻击
  • OpenClaw 企业版发布:定位「Agent 版 Kubernetes」
  • Perplexity自研Rust检索引擎Photon,P99延迟从800ms降至65ms
  • 已加载 51 / 9673
8.0
热点
AI SCORE
技术实践2026-10-01 02:23

实测:LLM 能否检出自己帮忙泄露的 Supabase 密钥

dev.to · AI#安全#LLM评测#密钥泄露
Editor brief · 编辑速览

作者在三天内扫描 GitHub 公开仓库发现 60+ 个真实的 service_role 密钥,随后在 Kaggle 上建立基准测试,评估主流 LLM 识别这类凭证的能力。结果显示模型识别率参差不齐,AI 写代码和 AI 查漏洞的能力存在差距。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

Kaggle Benchmarking Challenge 投稿

这是 Kaggle Benchmarking Challenge 的一个投稿作品。

我日常工作的一部分是扫描公开的 GitHub 仓库,查找被提交的 Supabase 凭据。在三天的扫描中,我发现了 60 多个仍在使用的 service_role 密钥——这类密钥完全绕过 Row Level Security,对真实的生产数据库拥有完整的读写权限。真实的发现包括:

  • config.php 文件中硬编码的 service_role 密钥(涉及一套 CRM、一套 LMS、一家驾校的后端)
  • .env.example 模板里有人粘贴了真实的密钥而非占位符
  • NEXT_PUBLIC_ 前缀的 service_role 密钥——意味着密钥被打包进了浏览器 bundle,发给了每个访问者
  • docker-compose.yml 同时提交了三个秘密:数据库密码、anon key 和 service_role key
  • 部署文档(DEPLOY.md、RAILWAY_ENV_SETUP.md)里"为了方便"写了完整凭据

这让我产生了一个疑问:泄露这些密钥的人经常在使用 AI 助手编写代码。AI 模型本身能否发现它们曾经协助提交的内容?于是我在 Kaggle Benchmarks 上构建了一个基准测试,把模型当作安全审查员来对待:给定一个真实的文件片段,进行分类——是否存在 service_role 密钥(严重)、anon 密钥(中危)、数据库密码,或者什么都没有(仅为占位符/文档)?

这 10 个案例都基于我实际发现的真实泄露模式(基准测试中的每个密钥都是假的、结构有效的 JWT):

  1. PHP 配置文件中硬编码的 service_role + anon
  2. 仅有一个 anon 密钥的 .env
  3. 客户端 createClient() 回退方案中使用 anon 密钥
  4. 部署文档中包含 service_role 密钥 + 数据库密码
  5. 仅包含占位符的文档(假阳性陷阱)
  6. 客户端文件中 NEXT_PUBLIC_ service_role 回退方案——会打包进浏览器
  7. .env.example 中遗留了真实的 service_role 密钥
  8. 注释掉的"旧密钥保留供参考"——仍然是有效的秘密
  9. 两个密钥并列(anon + service_role)——模型必须同时正确分类两者
  10. bash 脚本中 base64 混淆的 service_role——需要两步解码

每个模型回答一个严格的 JSON 裁决(has_service_role、has_anon、has_db_password、warning_level、reasoning),任务对每个字段进行断言。得分为完全正确的案例比例。Temperature 为 0。每个参与者只能提交一次,所以这些案例必须足够有区分度。

从 Kaggle Benchmarks 套件中挑选了 9 个模型,覆盖了开发者实际选择的光谱——前沿旗舰模型、廉价/快速的主力模型,以及开源推理模型:

  • anthropic/claude-sonnet-5
  • google/gemini-3.7-flash
  • google/gemini-3-flash-preview
  • google/gemini-3.1-flash-lite-preview
  • deepseek-ai/deepseek-r1-0528
  • qwen/qwen3-next-80b-a3b-instruct
  • ibm/granite-4.0-h-small

如果你的 AI 助手在上述列表中,这本质上就是在测试"我的助手能否发现它自己泄露的内容"。

核心结论:现代模型在明显案例上表现得出奇地好

在五个"经典"案例(硬编码配置密钥、包含凭据的文档、仅占位符的假阳性陷阱)上,每个前沿模型都拿到了满分。即便是廉价快速的 gpt-5.4-nano 也交出了 5/5 的答卷。如果你把一个包含 SUPABASE_SERVICE_ROLE_KEY=eyJ... 的文件粘贴给这些模型中的任何一个,问"这有问题吗?",它们都会正确地告诉你:是的,严重,请轮换密钥。

有趣的是它们在哪些地方产生了分歧

DeepSeek-R1 是一个专门的推理模型,得分 0/10——但不是因为它漏掉了密钥。它把所有文件都标红了:每个文件,包括那个仅包含占位符的 DEPLOY.md,都返回了"严重,存在 service_role,存在数据库密码"。在安全分类中,如果一个审查员对每个文件都喊"严重",那在真正重要的那个文件上他反而会被忽视。仅有召回率而没有精确率,就是多此一举的告警疲劳。

边缘案例充分发挥了作用。gpt-5.4-nano 恰好漏掉了两个隐蔽的案例:注释掉的"旧密钥保留供参考"(它把注释当作死代码——但注释中的秘密仍然有效,而且旧密钥经常会被轮换回来继续使用),以及 base64 混淆的密钥。前沿模型——包括廉价的 Gemini Flash 层级——全部捕获了全部 10 个案例,其中 Gemini 3 Flash 在回答过程中明显解码了 base64 blob 并识别出了 role claim。

这对实际工作的意义

你的 AI 助手不会替你防止秘密被提交——但它可以。测试的每个模型在被问到时都能即时捕获这些泄露。问题在于没有人去问。秘密之所以被提交,是因为审查步骤根本没有发生。

过度标记本身就是一种失败模式。一个审查员(人或者 AI)对每个占位符都喊"严重",会让团队学会忽视所有告警。在安全分类中,精确率和召回率同样重要。

15 分钟的修复方案胜过任何检测器。在 Supabase 控制台轮换密钥(立即失效),迁移到环境变量,如果想从历史记录中清除就用 git filter-repo。

我接下来想测量的方向

工具调用:给模型一个仓库目录树和搜索工具,看看它们是主动搜寻秘密还是只评判粘贴的文件

多文件上下文:真实世界中的泄露版本分布在 config.php + 部署文档 + docker-compose——当秘密藏在两跳之外时,性能是否会下降?

修复质量:标记只是第一步;模型能否给出正确的修复方案(先轮换,再删除,再清理历史)?

在你自己应用上运行同样的检查

上述 10 个案例只是一个快照。你的代码库里会有你自己的版本。

我放了 9 个只读的 Postgres 查询,覆盖相同的失败类别到一个免费文件中——没有任何数据会离开你的数据库,你在自己的 SQL 编辑器里运行:github.com/cekuu35/supabase-rls-leak-demo - audit/rls-audit.sql

同一个仓库里还有一个红/绿测试套件,演示了跨租户泄露和单文件修复方案。

如果你想要完整的引导版本——写侧检查、角色模拟工具,以及可以直接丢进现有仓库的修复模板——那是 Supabase RLS Audit Kit。它完全针对你自己的目录表运行,$29。

声明:以上两个链接都是我自己的。审计查询和演示是免费的,采用 MIT 许可证。

任务:Kaggle 上的 committed-supabase-key-detection

任务页面展示了每个模型的逐个结果、完整对话记录,以及每个案例的断言分解。假密钥,真模式——可以拿走这些案例来构建你自己的审查清单。

(如果你正在阅读这篇文章,而你的仓库历史里正躺着一个被提交的 Supabase 密钥:现在就去轮换。这只需要 15 分钟,而且我保证你不是唯一一个见过它的人。)

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
TokenCap:为什么我们用确定性 AST 重构而非让 LLM 生成代码
下一篇
三步让 Claude 后台 Agent 快 3-5 倍且更省钱