Back to skill

Security audit

Flutter

Security checks for vulnerabilities and agentic risk

Overview

This Flutter skill is a coherent documentation-style helper with disclosed preference storage and no hidden execution or exfiltration behavior.

Install only if you want Flutter-specific coding guidance. Be aware that it may remember stated Flutter preferences in its scoped config file and may suggest project-mutating maintenance commands, but the artifact tells the agent to confirm destructive actions by default.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (7)

Anti-Refusal Statement

High
Category
Anti-Refusal
Confidence
80% confidence
Finding

Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.

Content

Scanner excerpt · async.md (reported line 17)May include surrounding context.

md
- The `use_build_context_synchronously` lint catches `context` after a gap. It does NOT catch a controller write, an animation start, or a `ScaffoldMessenger` call — those need the same guard with no warning.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · commands.md (reported line 88)May include surrounding context.

bash
flutter clean                      # DESTRUCTIVE: deletes build/, forces a full rebuild
rm ios/Podfile.lock                # DESTRUCTIVE: re-resolves every pod
rm pubspec.lock                    # DESTRUCTIVE: re-resolves every package (dependencies.md)

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest describes a Flutter-focused skill for widgets, layout, state management, navigation, performance, testing, and store release issues. This file instead defines a full data-layer guide covering HTTP clients, token refresh, secure storage, databases, caching, offline queues, file downloads/uploads, and certificate pinning, which materially exceeds the manifest's described operational scope.

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 · platform.md (reported line 47)May include surrounding context.

md
- Every permission has three states worth distinguishing: not yet asked, denied (can ask again), permanently denied (must send the user to Settings). Code that only checks granted-or-not leaves users stuck with no path forward.
- Ask in context, right before the feature needs it, with a preceding explanation screen when the reason is not obvious. A permission requested at launch is the most-denied permission.
- iOS requires a purpose string in `Info.plist` for every permission; a missing one is an immediate crash on first use, not a denial — and App Review rejects vague strings.
- Android splits permissions by API level (notifications became a runtime permission on Android 13, storage access was reworked into scoped storage). Test on both an old and a current OS version.
- Permissions can be revoked while the app is backgrounded: re-check on resume, do not cache the granted state across sessions (`state.md`).

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 · release.md (reported line 80)May include surrounding context.

md
- Every permission has three states worth distinguishing: not yet asked, denied (can ask again), permanently denied (must send the user to Settings). Code that only checks granted-or-not leaves users stuck with no path forward.
- Ask in context, right before the feature needs it, with a preceding explanation screen when the reason is not obvious. A permission requested at launch is the most-denied permission.
- iOS requires a purpose string in `Info.plist` for every permission; a missing one is an immediate crash on first use, not a denial — and App Review rejects vague strings.
- Android splits permissions by API level (notifications became a runtime permission on Android 13, storage access was reworked into scoped storage). Test on both an old and a current OS version.
- Permissions can be revoked while the app is backgrounded: re-check on resume, do not cache the granted state across sessions (`state.md`).

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The manifest emphasizes Flutter app construction and debugging concerns such as widgets, rendering, rebuilds, routing, tests, and release packaging. Guidance on certificate pinning, secret extraction risks, and request-body logging controls introduces security architecture capabilities that are not clearly necessary from the declared purpose alone.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

Line L27 states that an in-app language switch means storing the choice and explicitly passing a locale, which assumes language handling but does not explicitly frame user language selection as opt-in or user-controlled policy. Because SQP-3 covers language or locale policy violations, this is a mild concern where the guidance could be interpreted as enforcing locale behavior without an explicit user-choice statement.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.