Back to skill

Security audit

Django Unfold

Security checks for vulnerabilities and agentic risk

Overview

This is a documentation-only Django Unfold skill with some production-safety caveats, but no hidden execution, persistence, or deceptive behavior.

Install only in projects where you intentionally use django-unfold. Treat the examples as implementation patterns, not hardened production code: pin Python and npm dependencies, use lockfiles, and add explicit permissions, confirmations, audit logging, and idempotency for admin actions that change orders, payments, or other business data.

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/installation.md:9
Finding

Unpinned Python Dependency Installation

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
references/theming.md:139
Finding

Unpinned npm Packages Executed Through npx

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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
Findings (6)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger instruction is overly broad because it says to always activate for any Django admin feature whenever django-unfold is present, even if Unfold is not explicitly mentioned. This can cause unintended skill invocation on general admin requests, leading the agent to apply framework-specific guidance in the wrong context and increasing the chance of incorrect changes or misleading advice.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

This markdown file documents an action that directly changes order status to "SHIPPED" without any accompanying warning, confirmation step, or note that the action is irreversible or affects business data. Because SQP-2 applies to markdown files when descriptions omit warnings about behaviors affecting user data or system integrity, this example should disclose the impact more clearly.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Lines L124-L138 first present a 'dropdown container' action pattern, but L140 explicitly says 'Actually' and replaces that with a different mechanism, claiming dropdown grouping is automatic when multiple actions_row items share the same area. These statements actively contradict each other, creating intent/documentation divergence in a reference file that is supposed to provide authoritative implementation guidance.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The refund-processing example describes a financially sensitive admin action and provides only a basic form flow, without explicit permission checks, confirmation, idempotency protection, audit logging, or warnings about business impact. In an admin skill that developers may copy directly, this can lead to unsafe implementations where privileged users can trigger refunds without sufficient controls or traceability.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding

The documentation instructs users to execute npx @tailwindcss/cli without pinning a specific package version. This can pull whatever version is current at execution time, creating a supply-chain risk from unexpected updates or a compromised upstream release, and it also harms reproducibility of builds.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
86% confidence
Finding

The example uses npx tailwindcss without a pinned version, so users may execute an unreviewed latest package version from the registry. In documentation for admin customization workflows, this increases supply-chain exposure and can lead to inconsistent or compromised build tooling if the dependency changes unexpectedly.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.