Back to skill

Security audit

Manage Apple Notes

Security checks for vulnerabilities and agentic risk

Overview

This skill is purpose-aligned for managing Apple Notes, but it asks users to install a third-party Notes-control binary with under-specified verification and includes potentially destructive note operations without strong guardrails.

Install only if you trust the inotes publisher and verify the Homebrew formula or release checksum yourself. Grant Notes Automation access only with the understanding that the CLI can read, edit, and delete your notes; avoid --force, --no-input, all-account access, or bulk edit loops unless you have reviewed the exact target notes first.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:57
Finding

Unverified Third-Party Binary Download and System-Wide Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 57-61
Vulnerability Type: Remote executable retrieval without a pinned checksum, followed by privileged installation
Risk Level: High

Vulnerable code:

bash
curl -LO https://github.com/wangwalk/inotes/releases/download/v0.1.2/inotes-0.1.2-universal-apple-darwin.tar.gz
# Verify checksum from release notes
tar xzf inotes-0.1.2-universal-apple-darwin.tar.gz
sudo cp inotes /usr/local/bin/
sudo chmod +x /usr/local/bin/inotes

Technical Analysis

The skill instructs the user to retrieve a precompiled executable from a third-party GitHub repository, extract it, and place it in a system-wide executable directory. Although the URL specifies release version v0.1.2 and uses HTTPS, the instructions do not provide an expected SHA-256 digest or an executable command that enforces integrity verification.

The comment # Verify checksum from release notes is not an effective security control. It neither supplies a trusted digest nor causes installation to fail if verification is omitted or unsuccessful. A user or agent following the commands literally can therefore install the binary without authenticating its contents.

The use of sudo gives the installation commands administrative write access to /usr/local/bin. This is broader than the minimum access necessary to run a per-user Notes utility; installation into a user-controlled directory such as ~/.local/bin would avoid administrative filesystem modification. The downloaded binary is not shown being executed with root privileges, so this does not by itself prove root code execution. Nevertheless, privileged placement makes the unverified executable available system-wide and could overwrite an existing inotes executable.

The document asserts that the installation is auditable and comes from a signed release, but the provided workflow performs no signature verification. The repository contains only d ...[truncated 2060 chars]

Remediation
View remediation

Remediation Suggestions

  1. Publish the exact SHA-256 digest in SKILL.md and enforce it before extraction:

    bash
    curl --fail --location --proto '=https' --tlsv1.2 \
      --output inotes-0.1.2-universal-apple-darwin.tar.gz \
      https://github.com/wangwalk/inotes/releases/download/v0.1.2/inotes-0.1.2-universal-apple-darwin.tar.gz
    
    printf '%s  %s\n' \
      'EXPECTED_SHA256_DIGEST' \
      'inotes-0.1.2-universal-apple-darwin.tar.gz' | shasum -a 256 -c -
    

    Installation must stop if verification fails.

  2. Prefer a cryptographically signed release and verify its signature against a maintainer key whose fingerprint is distributed through a separate trusted channel. Do not describe the release as signed unless the workflow actually validates that signature.

  3. Build from a pinned, reviewed source commit where feasible. Document the relationship between the source commit, release tag, and generated binary.

  4. Avoid administrative installation by default:

    bash
    install -d "$HOME/.local/bin"
    install -m 0755 inotes "$HOME/.local/bin/inotes"
    

    Explain how to add that directory to PATH. Offer /usr/local/bin installation only as an explicit system-wide alternative.

  5. Before replacing an existing executable, check its location and require informed confirmation. Do not silently overwrite /usr/local/bin/inotes.

  6. Extract into a newly created private temporary directory, inspect the archive listing first, and reject absolute paths, parent-directory traversal entries, symlinks, or unexpected files.

  7. Pin the Homebrew formula to an audited release and ensure the formula contains the release artifact's immutable SHA-256 digest. Users should be told how to inspect the personal tap and formula before installation.

  8. Correct the security documentation so that “local-only,” “no network calls,” and similar guarantees are clearly scoped to a specifically verified build rather than any execu ...[truncated 39 chars]

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

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

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

curl -LO https://github.com/wangwalk/inotes/releases/download/v0.1.2/inotes-0.1.2-universal-apple-darwin.tar.gz

Verify checksum from release notes

tar xzf inotes-0.1.2-universal-apple-darwin.tar.gz sudo cp inotes /usr/local/bin/ sudo chmod +x /usr/local/bin/inotes

text

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

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

curl -LO https://github.com/wangwalk/inotes/releases/download/v0.1.2/inotes-0.1.2-universal-apple-darwin.tar.gz

Verify checksum from release notes

tar xzf inotes-0.1.2-universal-apple-darwin.tar.gz sudo cp inotes /usr/local/bin/ sudo chmod +x /usr/local/bin/inotes

text

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

Documenting a force-delete option that skips confirmation increases the risk of autonomous or accidental destructive actions, especially when an agent may execute commands non-interactively. While the CLI feature itself may be legitimate, presenting it without a caution or stronger guardrail can lead to irreversible deletion of notes.

Content

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

bash
inotes delete 1              # with confirmation
inotes delete 1 --force      # skip confirmation

Search notes

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The example performs a bulk move of notes returned by a search and loops over all matching IDs without any warning, preview, or confirmation step. In an agent context, users may copy this pattern directly, causing unintended mass modification of Notes data if the search term or folder filter is broader than expected.

Content

No source excerpt is available for this finding.

Excessive Permissions

Low
Category
Privilege Escalation
Confidence
80% confidence
Finding

Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.

Content

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

sudo chmod +x /usr/local/bin/inotes

text

**Check permission:**

```bash
inotes status

Static analysis

No suspicious patterns detected.