Back to skill

Security audit

Otterai Cli

Security checks for vulnerabilities and agentic risk

Overview

This Otter.ai skill is mostly coherent, but it asks users to install an unpinned third-party CLI that handles account credentials and meeting content and documents a confirmation-bypass delete path.

Install only if you trust the `otterai-cli` package source and are comfortable giving it Otter.ai account access. Prefer a pinned, reviewed package version, use it on a trusted machine, avoid exposing password environment variables broadly, and require explicit confirmation before any rename, move, speaker-tagging, folder change, upload, or trash action, especially commands using `--yes`.

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:10
Finding
Unpinned Third-Party CLI Dependency## Vulnerability Details **File Location**: `SKILL.md`, line 10; repeated at lines 17–20 **Vulnerability Type**: Unpinned package installation and supply-chain exposure **Risk Level**: Medium **Vulnerable code:** ```yaml install: uv tool install otterai-cli ``` The same installation behavior is documented again: ```bash Install with: ```bash uv tool install otterai-cli ``` ``` ### Technical Analysis The Skill instructs the environment to install `otterai-cli` without specifying an exact version, package hash, trusted artifact URL, lockfile, or signature verification procedure. Consequently, the package resolver may install whichever release is current at installation time rather than the release reviewed when this Skill was published. This creates a supply-chain trust boundary in which package registry compromise, publisher account compromise, or a malicious future release could change the code executed by the Skill without requiring any modification to this repository. The package runs with the invoking user's privileges and is expected to process the sensitive `OTTERAI_USERNAME` and `OTTERAI_PASSWORD` environment variables declared at lines 7–8. It may also access credentials stored through the operating-system keychain or the documented `~/.otterai/config.json` fallback and interact with private meeting transcripts and recordings. No evidence establishes that the current package is malicious. The vulnerability is the mutable and unverified dependency installation process. ### Attack Path 1. An attacker compromises the package publisher account or package registry, or causes a malicious release of `otterai-cli` to become the version selected by the package resolver. 2. A user or agent follows the Skill's installation instruction: ```bash uv tool install otterai-cli ``` 3. Because no version or artifact hash is pinned, the resolver retrieves and installs the attacker-controlled release. 4. Pa ...[truncated 1437 chars]
Remediation
## Remediation Suggestions 1. Pin the dependency to a specifically reviewed version in both the metadata and installation documentation, for example: ```yaml install: uv tool install "otterai-cli==<reviewed-version>" ``` 2. Require integrity verification using trusted package hashes or signed release artifacts. Maintain reviewed hashes alongside the Skill and fail installation if verification does not succeed. 3. Document the canonical publisher, package index, and source repository so users can verify package provenance and detect dependency-confusion or publisher-substitution attempts. 4. Use an approved private package mirror or allowlist where practical, and prevent fallback to untrusted indexes. 5. Review every dependency update before changing the pinned version. Use automated vulnerability and provenance scanning, but do not automatically deploy unreviewed releases. 6. Run the CLI with least privilege in an isolated environment. Limit filesystem, network, keychain, and environment-variable access to what is necessary for Otter operations. 7. Avoid exposing username and password variables to unrelated processes. Prefer short-lived, narrowly scoped authentication tokens where the service supports them, and ensure secrets are never logged. 8. Keep the installation command at line 10 and the documented command at line 19 synchronized so neither path permits an unpinned installation.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

Credential Access

High
Category
Privilege Escalation
Content
### Auth & Config

```bash
otter login                  # authenticate (saves to keyring)
otter user                   # show current user
otter logout                 # clear credentials
otter config show            # show config
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Missing User Warnings

Medium
Confidence
85% confidence
Finding
This markdown file instructs users to authenticate with Otter.ai and explicitly references environment variables for `OTTERAI_USERNAME` and `OTTERAI_PASSWORD`, plus fallback storage in `~/.otterai/config.json`. Because the skill handles credentials and account access, the description should include a clear warning about sensitive credential usage and local storage implications.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The documented commands retrieve full transcripts and upload recordings to Otter.ai, which can affect user privacy by accessing or transmitting meeting content. The README describes these capabilities but does not warn users that transcripts, recordings, or shared speech data may contain sensitive information and will be sent to or fetched from a third-party service.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
otter speeches rename SPEECH_ID "New Title"
otter speeches trash SPEECH_ID               # move to trash
otter speeches trash SPEECH_ID --yes         # skip confirmation

otter speeches move SPEECH_ID --folder "Work"
otter speeches move ID1 ID2 ID3 --folder "Work"
Confidence
85% confidence
Finding
The skill explicitly advertises a destructive operation with a `--yes` flag that skips confirmation, which can enable an autonomous agent to delete or trash user data without an interactive check. In an agent setting, this increases the chance of unintended destructive actions because the skill provides a ready-made path to bypass safety friction.

Missing User Warnings

Low
Confidence
80% confidence
Finding
The skill documents `otter speeches trash SPEECH_ID` and a `--yes` flag to skip confirmation, indicating a potentially destructive operation on meeting records. Although the command syntax shows confirmation can be bypassed, the markdown lacks an explicit warning that this action changes user data and may be hard to reverse.

Static analysis

No suspicious patterns detected.