Back to skill

Security audit

NocoDB Skiils

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed NocoDB management skill that can make real database, permission, attachment, and API-token changes, so it should be used carefully but does not show hidden or malicious behavior.

Install only if you trust the NocoDB endpoint and token scope. Use a least-privilege NocoDB token, avoid running destructive commands unless the target IDs are verified, treat token commands as security administration, and upload only files you intend to send to that NocoDB server.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/nocodb.sh:7
Finding
Unrestricted NocoDB Endpoint Can Expose API Credentials and Uploaded Files<![CDATA[ ## Vulnerability Details **File Location**: `scripts/nocodb.sh:7-24` **Vulnerability Type**: Unvalidated remote endpoint used for authenticated requests **Risk Level**: Medium ### Vulnerable Code ```bash NC_URL="${NOCODB_URL:-https://app.nocodb.com}" NC_TOKEN="${NOCODB_TOKEN:-}" NC_VERBOSE="${NOCODB_VERBOSE:-0}" [[ -z "$NC_TOKEN" ]] && { echo "NOCODB_TOKEN required" >&2; exit 1; } # Verbose helper - shows resolved IDs _v() { [[ "$NC_VERBOSE" == "1" ]] && echo "→ $*" >&2 || true; } ############################################################################### # HTTP helpers ############################################################################### _get() { curl -sS -H "xc-token: $NC_TOKEN" "$NC_URL/api/v3/$1"; } _post() { curl -sS -X POST -H "xc-token: $NC_TOKEN" -H "Content-Type: application/json" "$NC_URL/api/v3/$1" -d "${2:-}"; } _patch() { curl -sS -X PATCH -H "xc-token: $NC_TOKEN" -H "Content-Type: application/json" "$NC_URL/api/v3/$1" -d "${2:-}"; } _put() { curl -sS -X PUT -H "xc-token: $NC_TOKEN" -H "Content-Type: application/json" "$NC_URL/api/v3/$1" -d "${2:-}"; } _delete() { curl -sS -X DELETE -H "xc-token: $NC_TOKEN" -H "Content-Type: application/json" "$NC_URL/api/v3/$1" ${2:+-d "$2"}; } _upload() { curl -sS -X POST -H "xc-token: $NC_TOKEN" -F "file=@$2" "$NC_URL/api/v3/$1"; } ``` The configurable endpoint is also documented without any HTTPS-only or trusted-host restriction at `SKILL.md:34-36`: ```bash export NOCODB_TOKEN="your-api-token" export NOCODB_URL="https://app.nocodb.com" # optional, this is default export NOCODB_VERBOSE=1 # optional, shows resolved IDs ``` ### Technical Analysis `NOCODB_URL` is trusted directly as the destination for every HTTP request. The script does not validate its scheme, hostname, port, or relationship to an expected NocoDB deployment. It consequently permits cleartext HTTP and arbitrary attacker-controlled destinations. Every request transmits the privileged ...[truncated 1881 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Parse and validate `NOCODB_URL` before making any request. 2. Require HTTPS by default and reject cleartext HTTP unless a deliberate, clearly named development override is enabled. 3. Support a configurable allowlist of trusted NocoDB hostnames for managed or automated environments. 4. Reject malformed URLs, embedded user information, unexpected schemes, and option-like values. 5. Add explicit curl protocol controls and an option terminator where appropriate: ```bash curl --proto '=https' --proto-redir '=https' --fail-with-body --silent --show-error \ -H "xc-token: $NC_TOKEN" -- "$validated_url" ``` 6. Do not automatically send credentials after cross-origin redirects if redirect support is introduced later. 7. Before uploading a file to a non-default or newly configured host, display the resolved destination and require explicit confirmation in interactive use. 8. Document the trust implications of changing `NOCODB_URL`, including that the configured server receives both the API token and uploaded data. ]]>

T08 · Insecure Dependencies

Note
Location
README.md:9
Finding
Unpinned npm Package Is Downloaded and Executed During Installation<![CDATA[ ## Vulnerability Details **File Location**: `README.md:9-11` **Vulnerability Type**: Unpinned executable installation dependency **Risk Level**: Low ### Vulnerable Code ```text npx skills add nocodb/agent-skills ``` ### Technical Analysis The documented installation command invokes `npx skills` without pinning the `skills` package to a reviewed version or integrity digest. If the package is not already installed locally, `npx` may retrieve executable package content from the configured npm registry and run it. This makes installation behavior dependent on mutable third-party registry state at the time the command is executed. A compromised maintainer account, malicious package release, registry compromise, or unexpected future release could therefore change the code executed by users without any modification to this repository. The audit did not establish that the current package is malicious. The issue is the absence of version and integrity controls around code executed during installation. ### Attack Path 1. An attacker compromises the publishing account, release pipeline, or registry entry for the `skills` package, or otherwise causes a malicious release to become the version selected by `npx`. 2. A user follows the README and runs `npx skills add nocodb/agent-skills`. 3. `npx` resolves and downloads the mutable package release. 4. The downloaded package executes with the privileges of the invoking user. 5. Malicious package code can access data and perform actions available to that user, subject to operating-system and environment restrictions. ### Impact Assessment Potential impact is code execution under the account running the installation command. This may expose source code, environment variables, developer credentials, agent configuration, and files accessible to that account. In CI environments, it may also expose repository or deployment credentials available to the job. The practical likelihood depends on compromise of the up ...[truncated 86 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the installer package to a specific reviewed version, for example: ```text npx skills@<audited-version> add nocodb/agent-skills ``` 2. Where supported, verify package integrity through a lockfile, npm integrity metadata, a trusted checksum, or a signed release. 3. Avoid using `npx` with an unpinned package in privileged or sensitive environments. 4. Document the expected package name, publisher, version, and verification procedure so users can detect dependency confusion or ownership changes. 5. Consider providing a non-executing installation method that downloads a versioned release artifact and verifies its checksum before placing the skill files in the required directory. 6. Periodically review and update the pinned version through a controlled dependency-update process. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (11)

Ae1

High
Category
analysis-evasion
Content
- **Linux / macOS**: `scripts/nocodb.sh` (Bash, requires `curl` and `jq`)
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Context-Inappropriate Capability

High
Confidence
94% confidence
Finding
The script can create and revoke API tokens, which is a credential-management function with security impact beyond ordinary table/record operations. In the context of a general database-management skill, this expands privilege and could be abused to mint long-lived access or disable access by deleting tokens, especially if an agent is granted this skill broadly.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding
The README instructs users to run `npx skills add nocodb/agent-skills` without pinning an exact package version. This causes execution of whatever package version is current at install time, which introduces a supply-chain risk if a malicious or compromised update is published or if behavior changes unexpectedly.

Lp3

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding
The skill exposes shell-capable behavior through documented CLI usage and required binaries (`curl`, `jq`) but does not declare any explicit tool scope such as permissions or allowed-tools. That increases the chance an agent can invoke broader shell actions than intended, reducing containment and making misuse harder to govern or audit.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The skill documents destructive operations such as delete, update, member changes, and token deletion without any warning, dry-run guidance, or confirmation pattern. In an agent setting, this can lead to accidental or prompt-induced irreversible modifications to databases, permissions, or collaboration settings.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The attachment upload command sends a local file path to the remote NocoDB service without any privacy, sensitivity, or transfer warning. In an agent context, users may not realize that local files could contain secrets or regulated data, creating a risk of unintended exfiltration.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill includes API token creation and deletion commands without highlighting that tokens are sensitive credentials granting API access. This omission is dangerous because agents or users may create, mishandle, or revoke tokens without understanding the security impact, potentially causing credential exposure or service disruption.

External Transmission

Medium
Category
Data Exfiltration
Content
###############################################################################
# HTTP helpers
###############################################################################
_get()    { curl -sS -H "xc-token: $NC_TOKEN" "$NC_URL/api/v3/$1"; }
_post()   { curl -sS -X POST -H "xc-token: $NC_TOKEN" -H "Content-Type: application/json" "$NC_URL/api/v3/$1" -d "${2:-}"; }
_patch()  { curl -sS -X PATCH -H "xc-token: $NC_TOKEN" -H "Content-Type: application/json" "$NC_URL/api/v3/$1" -d "${2:-}"; }
_put()    { curl -sS -X PUT -H "xc-token: $NC_TOKEN" -H "Content-Type: application/json" "$NC_URL/api/v3/$1" -d "${2:-}"; }
Confidence
70% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The helper functions send the NOCODB_TOKEN in HTTP headers and may upload local file contents or record data to a remote NocoDB instance, but the code does not emit any user-facing notice when these transmissions occur. For a CLI that can target arbitrary NOCODB_URL endpoints, the absence of explicit disclosure can obscure privacy and data-handling implications.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
This shell script exposes multiple destructive operations such as workspace deletion and issues the DELETE request directly after basic argument validation. There is no confirmation prompt, no explicit warning message before execution, and no inline disclosure that these commands irreversibly remove remote resources and data.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The skill metadata describes database access and management, but the implemented commands also support listing, creating, and deleting NocoDB API tokens. That omission hides a privileged security-administration capability from users and reviewers, which can lead to accidental credential issuance or revocation beyond the expected scope of a database-management skill.

Static analysis

No suspicious patterns detected.