跳转到正文
报告库
用途分类 / 其他用途

Extension Core Infrastructure Skill 安全审计

作者说它能做什么(原文)

Core infrastructure providing backend connection configuration, storage client, and React app entry point.

第三方安全检查结论

发现安全风险

已检查文件
2
发现的风险
1
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。未发现风险
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 1 项风险
中风险

升级后默认请求经验证的电子邮箱

原文依据:5 处
发现了什么

迁移说明称 InternetIdentityProvider 默认启用属性验证并请求 verified_email。未显式关闭时,用户登录会被提示共享邮箱;这是从原本普通登录增加的个人数据披露。

为什么需要注意

用户的经验证邮箱可能被提供给身份验证流程及使用该属性的应用后端,从而把可关联身份的信息加入账户或业务数据。

迁移说明明确表示,升级后的 InternetIdentityProvider 默认启用属性验证并请求 verified_email;应用未显式关闭时,登录用户会看到共享邮箱的提示。这支持个人数据披露风险,但证据仅是文档中的默认行为说明,不能证明邮箱已被收集或发送。用户可要求应用说明邮箱用途、接收方和保存方式,或确认其设置 withAttributes={false} 以退出该请求。

migration/v0.x.y-to-v1.x.y.md:7来自说明文档打开原文件
`InternetIdentityProvider` now enables attribute verification by default. Existing apps that do not need email attributes must opt out explicitly.
查看另外 4 个位置
migration/v0.x.y-to-v1.x.y.md:38来自说明文档打开原文件
### 3. `InternetIdentityProvider` attribute verification is now on by default`withAttributes` now defaults to `{}` (enabled, requesting `verified_email`). This is a non-breaking addition from Internet Identity — existing apps continue to work as before, and users are simply prompted to share their email during sign-in. No code change is required unless you want to opt out entirely:```tsx// opt out — plain sign-in, no attribute request<InternetIdentityProvider withAttributes={false}>```
SKILL.md:126来自说明文档打开原文件
- Sessions from all variants are stored the same way: `isAuthenticated`, session restore on reload, and `clear()` behave identically regardless of the variant used.- When the backend uses `caffeineai-authorization`, Google, Microsoft, and SSO sign-ins carry verified name/email attributes (and the SSO domain) to the attribute callback automatically — see the `extension-authorization` skill.
migration/v0.x.y-to-v1.x.y.md:40来自说明文档打开原文件
`withAttributes` now defaults to `{}` (enabled, requesting `verified_email`). This is a non-breaking addition from Internet Identity — existing apps continue to work as before, and users are simply prompted to share their email during sign-in. No code change is required unless you want to opt out entirely:
migration/v0.x.y-to-v1.x.y.md:43来自说明文档打开原文件
```tsx// opt out — plain sign-in, no attribute request<InternetIdentityProvider withAttributes={false}>```
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。未发现风险
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。未发现风险
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

1 个说明模块

该 Skill 是集成说明而非所引用 npm 包的实现源码。它要求项目直接安装基础设施和对象存储包,并称基础设施会自动包含在每个项目中;因此,仅凭所提供文件无法核验这些依赖在运行时的网络、存储或凭据处理行为。

查看原文
SKILL.md:28来自说明文档打开原文件
`@caffeineai/object-storage` is a peer dependency of core-infrastructure. Every project must install it as a direct npm dependency (the build template includes both packages).
SKILL.md:30来自说明文档打开原文件
## IntegrationCore infrastructure is automatically included in every project. No manual integration steps are required.

该组件提供 Internet Identity 登录状态,并将已登录身份交给后端 actor;身份变化时会重建 actor,并使相关查询失效后重新获取。

查看原文
SKILL.md:174来自说明文档打开原文件
## `useActor()` — Backend Actor HookCreates and manages a typed backend actor instance. Automatically re-creates the actor when the user's identity changes (login/logout).
SKILL.md:200来自说明文档打开原文件
When the identity changes (login, logout, or session restore), the actor is automatically re-created with the new identity and all dependent queries are invalidated and refetched.

登录会话从 IndexedDB 恢复,退出操作会清除保存的身份;文档建议用 isAuthenticated 控制已登录界面的显示。

查看原文
SKILL.md:67来自说明文档打开原文件
|---|---|---|| `identity` | `Identity \| undefined` | The user's identity (available after login or session restore) || `login` | `(options?: LoginOptions) => void` | Opens the II popup. Fire-and-forget — do not `await`. See [Sign-in variants](#sign-in-variants-plain-ii-google-microsoft-workspace-sso). || `clear` | `() => void` | Logs out and clears stored identity. Fire-and-forget. || `isAuthenticated` | `boolean` | `true` when user has a valid identity. **Use this for UI gating.** || `isInitializing` | `boolean` | `true` while `AuthClient` is loading from IndexedDB || `isLoggingIn` | `boolean` | `true` while the II popup is open |
从这里开始 · 工作说明SKILL.md
extension-core-infrastructure
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。
文件与检查记录2 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文
  • migration/v0.x.y-to-v1.x.y.md已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明
  • migration/v0.x.y-to-v1.x.y.md配套文件

代码和说明中提到的操作

连接外部网站
SKILL.md:13来自说明文档打开原文件
# Core InfrastructureCore infrastructure extension for [Caffeine AI](https://caffeine.ai?utm_source=caffeine-skill&utm_medium=referral).
SKILL.md:123来自说明文档打开原文件
- **Microsoft**: no Azure/Entra app registration is needed — Internet Identity owns the OAuth client. Accepts both personal Microsoft accounts and work/school accounts.- **Workspace SSO**: the user enters their company domain (e.g. `acme.com`); Internet Identity discovers the company's OpenID Connect provider from `https://<domain>/.well-known/ii-openid-configuration` and signs in against it (works with Okta, Entra ID, and other OIDC providers the company has configured). Use this when the app needs a specific company's own tenant; use `provider: "microsoft"` for a one-click Microsoft button that needs no per-company setup.- Apple sign-in is not offered: Internet Identity returns no email or name claims for Apple, so the attribute callback would be empty.
安装其他软件包
migration/v0.x.y-to-v1.x.y.md:61来自说明文档打开原文件
- [ ] Optionally pass `withAttributes={false}` to `InternetIdentityProvider` to disable the II attribute request- [ ] Run `pnpm install` and verify the frontend builds without errors
读取了多少行
263
文件校验值(用于核对版本)
d546fe9a9fbeb109f04edc05d314051256a9e34c4e472303d6f09ce7fbddbc90