Back to skill

Security audit

ios flyverify integration(IOS 集成一键登录 SDK)

Security checks for vulnerabilities and agentic risk

Overview

The skill fits its iOS FlyVerify integration purpose, but it handles a service secret in project files and recommends risky dependency/build settings without enough safeguards.

Review before installing. Use only if you are comfortable with an agent modifying an iOS project and handling FlyVerify credentials. Keep any generated FlyVerify_iOS_Config.xlsx out of source control, avoid putting real secrets in code where possible, pin and review Podfile.lock changes, and avoid disabling Xcode script sandboxing except temporarily in an isolated build environment.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
Findings (3)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:76
Finding

Unpinned FlyVerify CocoaPods Dependency

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
assets/generate_excel_template.py:38
Finding

Plaintext Collection and Embedding of the FlyVerify Application Secret

Content
View full analysis
" secret:@"" privacyLevel:2]; ``` It otherwise directs the agent to write `flyverifysecret` into `Info.plist`. ### Technical Analysis The generated Excel workbook requests `appSecret` as an ordinary cell value and is intended to be copied into the project root. The workflow subsequently directs the agent to place the secret in `Info.plist` or, for code-based initialization, in an Objective-C string literal. The workbook is not encrypted, and the Skill does not require it to be excluded from version control. Values embedded in source code or `Info.plist` are also recoverable from source repositories, build artifacts, backups, and distributed application bundles. An iOS application cannot reliably preserve a static client-side secret against a party capable of inspecting the application. ### Attack Path 1. The user enters the FlyVerify `appSecret` into the generated workbook. 2. The workbook is copied into the project root as `FlyVerify_iOS_Config.xlsx`. 3. The workbook is committed, uploaded, backed up, or exposed through developer tooling. 4. Alternatively, the secret is inserted into source code or `Info.plist` and included in the application bundle. 5. An attacker obtains the repository, workbook, backup, build artifact, or application package. 6. The attacker reads the plaintext secret and attempts to us ...[truncated 617 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:359
Finding

Disabling Xcode User Script Sandboxing Expands Dependency Build-Script Access

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (20)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The declared description promises an active iOS integration skill that scans an engineering project, infers setup details, integrates FlyVerify dependencies, applies privacy-related changes, and wires login flow with minimal edits. The actual code only creates an Excel workbook template for collecting configuration information and guidance. While the spreadsheet content is related to FlyVerify integration and privacy compliance, the code does not perform the core declared actions such as scanning the project, choosing CocoaPods, editing project files, or implementing login flow. This is a material purpose/behavior mismatch, not merely an implementation detail.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill description is written entirely in Chinese and does not indicate that other languages are supported or that the language choice is optional. Under the stated policy, forcing a specific language or locale without user opt-in is a natural-language policy violation unless the constraint is explicitly justified.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
91% confidence
Finding

技能要求在 Info.plist 中配置 flyverifykey 与 flyverifysecret,意味着长期凭据将以静态明文形式保存在工程和产物配置中。若仓库泄露、构建产物被提取或应用被逆向,第三方服务凭据可能被获取并被滥用,造成服务盗用或配额消耗。

Content

Scanner excerpt · SKILL.md (reported line 79)May include surrounding context.

md
- 默认 Pod 为 `pod 'FlyVerify'`
- 工程需要链接 `libsqlite3.tbd`、`libc++.tbd`、`libz.1.2.5.tbd`
- `Other Linker Flags` 需要添加 `-ObjC`
- `Info.plist` 需要配置 `flyverifykey` 与 `flyverifysecret`
- 严格隐私模式需要在默认 `plist` 中添加 `FlyVerifyPLevel = 2`
- 如果项目全局禁止 HTTP,需要为以下域名配置 ATS 白名单:
  - `zzx9.cn`

Session Persistence

Medium
Category
Rogue Agent
Confidence
92% confidence
Finding

最小改动计划明确包含向 Info.plist 写入 flyverifykey、flyverifysecret。这会把敏感服务凭据固化到客户端配置中,增加源码泄露、二进制逆向和批量滥用的风险;在面向大量项目自动化修改的 skill 中,这种模式会被规模化复制,放大暴露面。

Content

Scanner excerpt · SKILL.md (reported line 246)May include surrounding context.

md
- `Podfile`:按需加入 `pod 'FlyVerify'`
- `.gitignore`:按需加入 `Pods/`
- `Info.plist`:写入 `flyverifykey`、`flyverifysecret`、`FlyVerifyPLevel`
- Xcode 构建设置:补 `-ObjC`
- Swift 工程:新增或复用 Bridging Header,并配置 `SWIFT_OBJC_BRIDGING_HEADER`
- 视情况补 ATS 白名单或提示用户已有配置可复用

Session Persistence

Medium
Category
Rogue Agent
Confidence
90% confidence
Finding

该段开始进入 Info.plist 默认写入/校正流程,实质上推动将 FlyVerify 凭据持久化到应用配置。客户端静态存储第三方服务 secret 在移动端通常不可保密,攻击者可通过反编译或读取应用包内容恢复凭据并进行未授权调用。

Content

Scanner excerpt · SKILL.md (reported line 274)May include surrounding context.

md
- 按官方资料把下载的 SDK 拖入工程
- 检查并补系统库、`-ObjC` 与 `Info.plist`

### 5-2 `Info.plist` 配置

默认写入或校正:

Session Persistence

Medium
Category
Rogue Agent
Confidence
88% confidence
Finding

代码示例 initKey:secret:privacyLevel: 直接将 secret 置于客户端初始化路径,即使不写入 Info.plist,最终仍会出现在客户端代码或构建配置中。对移动端而言,这类硬编码或可恢复配置都难以真正保密,可能导致第三方 SDK 账户被冒用。

Content

Scanner excerpt · SKILL.md (reported line 316)May include surrounding context.

[FlyVerifyC initKey:@"" secret:@"" privacyLevel:2];

text

否则优先沿用 `Info.plist` 配置,不同时强塞两套初始化方案。

### 5-4 登录流程接入

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown file presents all trigger and usage examples exclusively in Chinese, which can amount to a language/locale policy violation when no user opt-in or justification is provided. The content does not indicate that the skill is intentionally limited to Chinese-speaking users or a China-specific deployment context.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · SKILL.md (reported line 30)May include surrounding context.

md
## 工程改造类问法

6. 帮我检查这个 iOS 项目还缺哪些 FlyVerify 配置
7. FlyVerify 的 `Info.plist` 应该怎么配
8. `agreePrivacy` 应该放在哪个回调里
9. iOS 秒验的 `preLogin` 和授权页怎么接
10. 帮我把 FlyVerify 授权页接到现有手机号登录页

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · SKILL.md (reported line 80)May include surrounding context.

md
## 工程改造类问法

6. 帮我检查这个 iOS 项目还缺哪些 FlyVerify 配置
7. FlyVerify 的 `Info.plist` 应该怎么配
8. `agreePrivacy` 应该放在哪个回调里
9. iOS 秒验的 `preLogin` 和授权页怎么接
10. 帮我把 FlyVerify 授权页接到现有手机号登录页

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · SKILL.md (reported line 104)May include surrounding context.

md
## 工程改造类问法

6. 帮我检查这个 iOS 项目还缺哪些 FlyVerify 配置
7. FlyVerify 的 `Info.plist` 应该怎么配
8. `agreePrivacy` 应该放在哪个回调里
9. iOS 秒验的 `preLogin` 和授权页怎么接
10. 帮我把 FlyVerify 授权页接到现有手机号登录页

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · SKILL.md (reported line 117)May include surrounding context.

md
## 工程改造类问法

6. 帮我检查这个 iOS 项目还缺哪些 FlyVerify 配置
7. FlyVerify 的 `Info.plist` 应该怎么配
8. `agreePrivacy` 应该放在哪个回调里
9. iOS 秒验的 `preLogin` 和授权页怎么接
10. 帮我把 FlyVerify 授权页接到现有手机号登录页

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · SKILL.md (reported line 144)May include surrounding context.

md
## 工程改造类问法

6. 帮我检查这个 iOS 项目还缺哪些 FlyVerify 配置
7. FlyVerify 的 `Info.plist` 应该怎么配
8. `agreePrivacy` 应该放在哪个回调里
9. iOS 秒验的 `preLogin` 和授权页怎么接
10. 帮我把 FlyVerify 授权页接到现有手机号登录页

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · SKILL.md (reported line 154)May include surrounding context.

md
## 工程改造类问法

6. 帮我检查这个 iOS 项目还缺哪些 FlyVerify 配置
7. FlyVerify 的 `Info.plist` 应该怎么配
8. `agreePrivacy` 应该放在哪个回调里
9. iOS 秒验的 `preLogin` 和授权页怎么接
10. 帮我把 FlyVerify 授权页接到现有手机号登录页

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · SKILL.md (reported line 192)May include surrounding context.

md
## 工程改造类问法

6. 帮我检查这个 iOS 项目还缺哪些 FlyVerify 配置
7. FlyVerify 的 `Info.plist` 应该怎么配
8. `agreePrivacy` 应该放在哪个回调里
9. iOS 秒验的 `preLogin` 和授权页怎么接
10. 帮我把 FlyVerify 授权页接到现有手机号登录页

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · SKILL.md (reported line 223)May include surrounding context.

md
## 工程改造类问法

6. 帮我检查这个 iOS 项目还缺哪些 FlyVerify 配置
7. FlyVerify 的 `Info.plist` 应该怎么配
8. `agreePrivacy` 应该放在哪个回调里
9. iOS 秒验的 `preLogin` 和授权页怎么接
10. 帮我把 FlyVerify 授权页接到现有手机号登录页

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · SKILL.md (reported line 272)May include surrounding context.

md
## 工程改造类问法

6. 帮我检查这个 iOS 项目还缺哪些 FlyVerify 配置
7. FlyVerify 的 `Info.plist` 应该怎么配
8. `agreePrivacy` 应该放在哪个回调里
9. iOS 秒验的 `preLogin` 和授权页怎么接
10. 帮我把 FlyVerify 授权页接到现有手机号登录页

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · assets/generate_excel_template.py (reported line 63)May include surrounding context.

python
## 工程改造类问法

6. 帮我检查这个 iOS 项目还缺哪些 FlyVerify 配置
7. FlyVerify 的 `Info.plist` 应该怎么配
8. `agreePrivacy` 应该放在哪个回调里
9. iOS 秒验的 `preLogin` 和授权页怎么接
10. 帮我把 FlyVerify 授权页接到现有手机号登录页

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · assets/generate_excel_template.py (reported line 88)May include surrounding context.

python
## 工程改造类问法

6. 帮我检查这个 iOS 项目还缺哪些 FlyVerify 配置
7. FlyVerify 的 `Info.plist` 应该怎么配
8. `agreePrivacy` 应该放在哪个回调里
9. iOS 秒验的 `preLogin` 和授权页怎么接
10. 帮我把 FlyVerify 授权页接到现有手机号登录页

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · examples/example-prompts.md (reported line 14)May include surrounding context.

md
## 工程改造类问法

6. 帮我检查这个 iOS 项目还缺哪些 FlyVerify 配置
7. FlyVerify 的 `Info.plist` 应该怎么配
8. `agreePrivacy` 应该放在哪个回调里
9. iOS 秒验的 `preLogin` 和授权页怎么接
10. 帮我把 FlyVerify 授权页接到现有手机号登录页

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The markdown explicitly says '默认使用中文与用户沟通', which imposes a language default on user-facing responses. Under the policy rule, locale/language constraints should either offer user choice or be clearly justified as region-specific; this section does not provide an opt-in or fallback.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.