Back to skill

Security audit

Ios Mac App Dev

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly iOS/macOS development guidance, but its compliance monitor is not actually live and one workflow can place repository analysis into a CDN-backed HTML report, so it deserves review before installation.

Install only if you are comfortable with a broad Chinese-language iOS/macOS development assistant that may scan project files and suggest repository or issue-tracker changes. Treat the policy monitor as a static checklist, not current Apple policy verification, and avoid opening generated architecture HTML reports that load CDN scripts unless you accept that external browser code may see the report contents.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T08 · Insecure Dependencies

Warning
Location
references/15-architecture-improvement.md:41
Finding

Generated architecture reports load mutable executable resources from unpinned CDNs

Content
View full analysis
/architecture-review-.html Use Tailwind through a CDN for layout and styling. Use Mermaid through a CDN when diagrams are required. ``` ### Technical Analysis The workflow directs the agent to create an HTML report that imports Tailwind and, when needed, Mermaid from third-party content delivery networks. It does not prescribe: - An approved CDN hostname. - An immutable dependency version. - A cryptographic Subresource Integrity hash. - A restrictive Content Security Policy. - Local vendoring or verification of the downloaded resources. Mermaid is normally delivered as browser-executed JavaScript. Consequently, the effective code executed when the report is opened can change after the Skill package has been reviewed. A compromised CDN account, mutable resource, upstream release, or network delivery path could cause arbitrary JavaScript to execute in the report's browser origin. This is a supply-chain weakness rather than evidence that the current Skill intentionally supplies malicious code. ### Attack Path 1. A user requests an architecture review. 2. The agent follows the workflow and generates an HTML report in the temporary directory. 3. The generated report references mutable Tailwind or Mermaid resources hosted on a CDN. 4. The user opens the report in a browser. 5. The browser contacts the external CDN and downloads the referenced resources. 6. If the resource or its delivery ...[truncated 886 chars]
Remediation
View remediation

other

Warning
Location
scripts/policy_monitor.py:39
Finding

Policy monitor presents hard-coded policy claims as current monitoring results

Content
View full analysis
List[PolicyChange]: """Core check: return currently known policy-monitoring entries.""" self.changes = [ PolicyChange( type="REVIEW_GUIDELINE_UPDATE", section="3.3.11", title="AI/ML framework usage requirements", detail="A new Section 3.3.11 regulates the use of AI and " "machine-learning technologies. AI-generated content " "must be clearly identified and users must be able to " "control whether AI features are enabled.", impact="HIGH", deadline="Starting June 2026", source="Apple Developer Program License Agreement", ), PolicyChange( type="REVIEW_GUIDELINE_UPDATE", section="1.2.1(a)", title="Protection-of-minors requirements", ...[truncated 5183 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (41)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The description presents a comprehensive iOS/macOS development skill pack spanning planning, coding, architecture, compliance, internationalization, optimization, and release. The supplied code does something materially different and much narrower: it is a local static checker for UI/design quality patterns in Swift source files. While a few declared themes partially overlap (design system, dark mode, localization), the actual code only implements limited regex-based lint checks in those areas. It does not implement the large majority of the declared capabilities, and its primary purpose is not full lifecycle app development but design convention auditing. Therefore the description does not accurately represent the code chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

There is a material description-to-behavior mismatch. While the declared description includes policy compliance monitoring as one component, it presents the skill as a comprehensive iOS/macOS development assistant spanning many engineering and design functions. The provided code chunk only performs Apple policy/compliance monitoring and checklist/report generation, with no evidence of the many other claimed capabilities. This makes the actual behavior much narrower than the declared purpose. No obvious hidden or dangerous undeclared capability is present; the mismatch is primarily overclaiming breadth and triggers relative to the supplied implementation.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| 设计质量自动检查 | `scripts/design_quality_checker.py` |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| 设计质量自动检查 | `scripts/design_quality_checker.py` |

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/13-tdd-swift.md (reported line 95)May include surrounding context.

md
}

// ❌ 坏测试:测试实现细节
func test_authServiceCallsKeychain() {
    // 不应该测试内部是否调用了 Keychain
    // 应该测试「登录后 token 可用」这个行为
}

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/13-tdd-swift.md (reported line 96)May include surrounding context.

md
}

// ❌ 坏测试:测试实现细节
func test_authServiceCallsKeychain() {
    // 不应该测试内部是否调用了 Keychain
    // 应该测试「登录后 token 可用」这个行为
}

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill references scripts and capabilities consistent with file read/write and network access, but it does not declare any explicit tool scope or permission boundaries. In an agent environment, missing scope declarations can lead to overbroad tool access, making unintended file modification, repository traversal, or outbound network use more likely if the skill is invoked unexpectedly.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases are extremely broad and overlap with ordinary iOS/macOS development requests, which increases the chance of unintended automatic invocation. In an agent system, overbroad routing can expose users to unnecessary tool use, file access, or policy-driven behavior in contexts where a simpler, safer response would have sufficed.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The entire skill description and operational guidance are presented only in Chinese, with no indication that users may choose another language or locale. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is explicitly documented and justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
83% confidence
Finding

The title and all instructional content are written as a Chinese-only skill description, and there is no indication that users may choose another language or locale. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is clearly documented and justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
77% confidence
Finding

The title and entire skill content are written as a prescriptive design standard in Chinese, with no indication that users may choose another language or locale. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is clearly documented and justified.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The sample recommends changing AppleLanguages in UserDefaults, which mutates persisted language preferences and can create surprising or misleading app behavior across launches. In an iOS/macOS development skill, this is more dangerous because users may copy the pattern directly into production apps without understanding that it is a legacy-style global preference override and that runtime localization should be handled through app-supported mechanisms instead.

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 · references/03-localization.md (reported line 88)May include surrounding context.

text
项目目录/
├── Localizable.xcstrings          # 主字符串目录
├── InfoPlist.xcstrings           # Info.plist 本地化
└── <Feature>.xcstrings            # 按功能拆分

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The sample adaptive color function reverses the documented dark/light behavior: it returns the light color when the interface style is dark, and the dark color otherwise. In an iOS/macOS app development skill, users may copy this code directly into production, causing incorrect theming, poor contrast, and potential accessibility failures in dark mode.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown file contains user-facing guidance only in Chinese, including the title, descriptions, and checklist items. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation unless the locale constraint is clearly documented and justified, which is not present here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The entire checklist is written in Chinese and provides no indication that other languages are supported or that the Chinese-only presentation is an intentional, documented regional constraint. Per the policy, forcing a specific language without user opt-in is a natural-language policy violation.

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 109)May include surrounding context.

md
## 🟡 阶段 2:技术检查

- [ ] **出口合规**:Info.plist 包含 `ITSAppUsesNonExemptEncryption = false`
- [ ] 签名证书有效(3rd Party Mac Developer Application / Apple Distribution)
- [ ] Provisioning Profile 已下载到本地
- [ ] 推送证书有效(若有推送功能)

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 · references/00-policy-compliance.md (reported line 27)May include surrounding context.

md
## 🟡 阶段 2:技术检查

- [ ] **出口合规**:Info.plist 包含 `ITSAppUsesNonExemptEncryption = false`
- [ ] 签名证书有效(3rd Party Mac Developer Application / Apple Distribution)
- [ ] Provisioning Profile 已下载到本地
- [ ] 推送证书有效(若有推送功能)

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 · references/03-localization.md (reported line 88)May include surrounding context.

md
## 🟡 阶段 2:技术检查

- [ ] **出口合规**:Info.plist 包含 `ITSAppUsesNonExemptEncryption = false`
- [ ] 签名证书有效(3rd Party Mac Developer Application / Apple Distribution)
- [ ] Provisioning Profile 已下载到本地
- [ ] 推送证书有效(若有推送功能)

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 · references/09-release-checklist.md (reported line 18)May include surrounding context.

md
## 🟡 阶段 2:技术检查

- [ ] **出口合规**:Info.plist 包含 `ITSAppUsesNonExemptEncryption = false`
- [ ] 签名证书有效(3rd Party Mac Developer Application / Apple Distribution)
- [ ] Provisioning Profile 已下载到本地
- [ ] 推送证书有效(若有推送功能)

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 · scripts/policy_monitor.py (reported line 215)May include surrounding context.

python
## 🟡 阶段 2:技术检查

- [ ] **出口合规**:Info.plist 包含 `ITSAppUsesNonExemptEncryption = false`
- [ ] 签名证书有效(3rd Party Mac Developer Application / Apple Distribution)
- [ ] Provisioning Profile 已下载到本地
- [ ] 推送证书有效(若有推送功能)

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 · scripts/policy_monitor.py (reported line 216)May include surrounding context.

python
## 🟡 阶段 2:技术检查

- [ ] **出口合规**:Info.plist 包含 `ITSAppUsesNonExemptEncryption = false`
- [ ] 签名证书有效(3rd Party Mac Developer Application / Apple Distribution)
- [ ] Provisioning Profile 已下载到本地
- [ ] 推送证书有效(若有推送功能)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

整份技能说明均以中文撰写并默认中文交互与产出,但未说明这是面向特定中文团队/区域的限定,也未提供用户可选择输出语言的机制。根据语言/区域策略,未经用户选择而强制特定语言属于自然语言层面的策略风险。

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

该行将“写个需求文档”“整理一下需求”作为触发示例,但这些表述非常常见,且未限定必须生成 PRD、面向特定项目上下文或工作流阶段,容易与普通讨论需求的自然对话重叠。文件中也未提供负例或排除条件来界定何时不应激活该技能。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

该技能文档标题及全文均以中文撰写,未见任何说明表明这是面向特定中文用户群体,或允许用户选择其他语言。根据规则,若技能在自然语言层面强制特定语言且无用户 opt-in 或合理地域性说明,可构成语言/locale 策略违规。

Content

No source excerpt is available for this finding.