Back to skill

Security audit

Proppely

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly gives coherent Proppely connection instructions, but its Codex install path depends on an unpinned third-party marketplace repository before granting property-management access.

Review the Codex marketplace repository before installing, prefer a pinned reviewed commit or official Proppely-controlled distribution, and only approve OAuth scopes for the correct organization. Treat this as a review-needed install path rather than evidence of confirmed malicious behavior.

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 (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:48
Finding

Unpinned Third-Party Marketplace Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 48–58
Vulnerability Type: Supply-chain risk from a mutable third-party repository
Risk Level: Medium

Vulnerable Code

markdown
## Connect (Codex)

Install from the public marketplace:

```bash
git clone https://github.com/shabsi7700/proppely-codex-marketplace.git
cd proppely-codex-marketplace
codex plugin marketplace add .

Then install Proppely MCP from the Codex marketplace UI and complete OAuth when prompted.

text

### Technical Analysis

The Skill instructs users to clone the current default branch of a third-party GitHub repository and register that checkout as a Codex plugin marketplace. It does not pin an immutable commit or signed release, verify a checksum or signature, or require inspection of the resolved plugin contents.

Consequently, the component installed by a user can differ from the component that existed when this Skill was reviewed. The referenced repository is not included in the audited project, so its code, marketplace metadata, installation behavior, and future changes could not be verified during this audit.

This is an insecure dependency and supply-chain boundary. Trusting a mutable remote repository allows compromise of the repository, its maintainer account, or its distribution process to change the effective payload after review.

### Attack Path

1. An attacker compromises the repository owner, a maintainer account, or another mechanism capable of modifying the repository's default branch.
2. The attacker adds malicious plugin code or marketplace metadata to the repository.
3. A user follows the documented command and clones the modified default branch without selecting a reviewed commit or release.
4. The user registers the checkout through `codex plugin marketplace add .`.
5. The user installs the advertised plugin from the marketplace UI.
6. The altered component executes or configures attacker-controlled behavior with the permissions available
...[truncated 554 chars]
Remediation
View remediation

Remediation Suggestions

  1. Distribute the marketplace through an official, organization-controlled repository.
  2. Pin installation instructions to a specific, reviewed commit hash or immutable signed release rather than the mutable default branch.
  3. Publish cryptographic checksums and signed release artifacts, and require verification before registration or installation.
  4. Document the expected repository origin, commit identifier, signer identity, and checksum.
  5. Require users or deployment automation to inspect and approve the resolved plugin package and marketplace metadata before installation.
  6. Apply branch protection, mandatory reviews, signed commits or tags, least-privilege maintainer access, and multifactor authentication to the distribution repository.
  7. Periodically audit the externally distributed plugin and its transitive dependencies.
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (2)

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

md
The login command opens or prints a Proppely authorization URL. The user signs
in, selects an organization, reviews scopes, and approves. Never ask the user to
paste a Proppely password, access token, refresh token, `ak_live_*` key, or
browser cookie into chat.

If the command cannot open a browser, show the authorization URL exactly as

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

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

text

The login command opens or prints a Proppely authorization URL. The user signs
in, selects an organization, reviews scopes, and approves. Never ask the user to
paste a Proppely password, access token, refresh token, `ak_live_*` key, or
browser cookie into chat.

Static analysis

No suspicious patterns detected.