Back to skill

Security audit

Seekdb

Security checks for vulnerabilities and agentic risk

Overview

The skill matches its SeekDB install/build purpose, but several install paths use privileged, persistent system changes with unsafe verification or exposure choices that need review.

Review this skill carefully before installing. Prefer signed package repositories, pinned Docker digests bound to 127.0.0.1, verified MSI hashes/signatures, and separate confirmation before enabling services at boot or deleting SeekDB data. Avoid the yum remote-script path and the APT [trusted=yes] HTTP source unless you independently trust and verify the source.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (4)

T03 · Remote Payload Retrieval and Execution

Error
Location
install/references/linux-yum.md:28
Finding

Unverified Remote Installation Script Executed with Root Privileges

Content
View full analysis
**Security note:** The following command downloads and executes a remote script with root privileges. Review the script content before running, or prefer the yum repo method above. curl -fsSL https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/seekdb/seekdb_install.sh -o /tmp/seekdb_install.sh # Review the script before executing: less /tmp/seekdb_install.sh sudo bash /tmp/seekdb_install.sh ``` ### Technical Analysis The installation flow retrieves a mutable shell script from an external object-storage hostname and subsequently executes it through `sudo bash`. No cryptographic digest, detached signature, package signature, or expected signer identity is verified before execution. Opening the file with `less` does not provide a security boundary. It neither guarantees that the user performs a meaningful review nor detects a sophisticated malicious modification. The downloaded file also resides at a predictable path under `/tmp`, which is not as robust as creating a private temporary file using `mktemp`. Although installing a system database can legitimately require administrative privileges, granting root privileges to an unauthenticated remote script exceeds the minimum safe trust model for that task. ### Attack Path 1. An attacker compromises the object-storage account, the published script, or another part of the delivery infrastructure. 2. Alternatively, an attacker who can interfere with the trusted network or TLS environment redirects the request or alters the returned payload. 3. The Skill downloads the attacker-controlled script to `/tmp/seekdb_install.sh`. 4. The user or agent displays the script with `less`, but no automated integrity or signature validation occurs. 5. The Skill executes the payload ...[truncated 550 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Error
Location
install/references/linux-apt.md:22
Finding

APT Repository Authentication Disabled over Plaintext HTTP

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Error
Location
install/references/windows-msi.md:25
Finding

Downloaded MSI Is Elevated without Digest or Publisher Verification

Content
View full analysis
/tmp/seekdb_elevate.vbs << 'VBS' Set wshShell = CreateObject("WScript.Shell") Set objShell = CreateObject("Shell.Application") tempDir = wshShell.ExpandEnvironmentStrings("%TEMP%") objShell.ShellExecute "cmd.exe", "/c """ & tempDir & "\seekdb_setup.bat""", "", "runas", 1 VBS cmd.exe //c "wscript.exe $(cygpath -w /tmp/seekdb_elevate.vbs)" ``` ### Technical Analysis The MSI is downloaded over HTTPS, but the flow does not verify a vendor-published cryptographic digest or validate that the MSI has a valid Authenticode signature from the expected publisher. HTTPS protects transport under normal conditions but does not provide artifact-level integrity against mirror compromise, incorrect uploads, signing infrastructure failures, or a compromised trust environment. The MSI is installed silently after a single UAC approval. An MSI can execute privileged custom actions, write system files, modify the registry, and register services. Therefore, an altered MSI would obtain Administrator-level execution without any subsequent user-visible review. The flow also configures the resulting SeekDB service for automatic startup. A server service is consistent with the declared deployment mode, but boot persistence is not necessary merely to install and verify the software and should be separately disclosed and consent-gated. ### Attack Path 1. An att ...[truncated 976 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Error
Location
install/references/docker.md:18
Finding

Mutable Docker Image Publishes Unauthenticated Database Ports on All Interfaces

Content
View full analysis
Remediation
View remediation
``` 2. Publish the expected digest through an official authenticated release channel and verify it before deployment. 3. Bind services to loopback by default: ```bash -p 127.0.0.1:2881:2881 -p 127.0.0.1:2886:2886 ``` 4. Require explicit user consent before binding to non-loopback interfaces. 5. Configure strong database credentials and avoid an unauthenticated root account. 6. Do not publish the HTTP/obshell port unless the user specifically requires it. 7. Apply container hardening where compatible, including a non-root runtime user, dropped Linux capabilities, `no-new-privileges`, resource limits, and a read-only filesystem where possible. 8. Document the actual network binding and provide firewall guidance for intentionally remote deployments. ]]>
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
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
Findings (39)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The APT source is added with [trusted=yes], which disables normal package signature verification for that repository and grants broad trust to packages fetched from it. In an installation guide, this meaningfully increases supply-chain risk because a compromised mirror, network attacker on HTTP, or malicious package in that repo could be installed as root without cryptographic validation.

Content

No source excerpt is available for this finding.

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · install/references/linux-apt.md (reported line 24)May include surrounding context.

  • Online install (recommended):
bash
echo "deb [trusted=yes] http://mirrors.aliyun.com/oceanbase/community/stable/$(lsb_release -is | awk '{print tolower($0)}')/$(lsb_release -cs)/$(dpkg --print-architecture)/ ./" \
  | sudo tee /etc/apt/sources.list.d/oceanbase.list
sudo apt update
sudo apt install seekdb

Chaining Abuse

High
Category
Tool Misuse
Confidence
92% confidence
Finding

The uninstall command chains package removal directly into execution of a root shell script, reducing user pause points and making destructive cleanup more likely to be run unintentionally. Combined with the lack of warnings about data deletion, this increases the chance of irreversible loss or execution of an opaque script with full privileges.

Content

Scanner excerpt · install/references/linux-apt.md (reported line 77)May include surrounding context.

md
- MySQL port: `127.0.0.1:2881`
- Config file: `/etc/seekdb/seekdb.cnf`
- Service management: `sudo systemctl {start|stop|status} seekdb`
- Uninstall: `sudo apt remove seekdb && sudo bash /var/lib/seekdb/seekdb_clean.sh`

---

Chaining Abuse

High
Category
Tool Misuse
Confidence
84% confidence
Finding

Chaining package erasure with immediate execution of a root cleanup script reduces the chance for users to pause and inspect what will run next. This increases the risk of accidental execution of unsafe cleanup logic and compounds the impact if the cleanup script is malicious or corrupted.

Content

Scanner excerpt · install/references/linux-yum.md (reported line 89)May include surrounding context.

md
- MySQL port: `127.0.0.1:2881`
- Config file: `/etc/seekdb/seekdb.cnf`
- Service management: `sudo systemctl {start|stop|status} seekdb`
- Uninstall: `sudo yum erase seekdb && sudo bash /var/lib/seekdb/seekdb_clean.sh`

---

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill includes an --install option that performs adb install on a connected Android device, which is a state-changing action on an external system. Although this is expected in a build/deploy workflow, the skill does not require explicit user confirmation or provide a warning that it will modify a connected device, increasing the risk of unintended installation to the wrong target.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly instructs the agent to actively run shell commands on the user's machine and verify outputs, but it does not provide an upfront warning or require explicit user consent before beginning environment inspection and installation actions. In an agent setting, this can lead to unauthorized system probing or package installation behavior that exceeds user expectations, especially when triggered from vague requests like 'install seekdb'.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
97% confidence
Finding

The instruction to perform environment detection 'automatically without asking' delegates autonomous decision-making and action initiation to the agent without first obtaining consent. This is risky because the skill is designed not just to suggest commands but to execute them, creating a path for unapproved reconnaissance and follow-on installation actions on the host.

Content

Scanner excerpt · install/SKILL.md (reported line 24)May include surrounding context.

Phase 1 — Detect environment

Run the following to understand the user's machine. Do this automatically without asking.

bash
uname -s   # Darwin = macOS, Linux = Linux, MINGW64/MSYS/CYGWIN = Windows Git Bash

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

The Docker command pulls and runs oceanbase/seekdb:latest, which is a mutable tag rather than a pinned version or image digest. This creates a supply-chain risk: future pulls may retrieve different or compromised content, leading to unexpected code execution or behavior during installation.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
80% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · install/references/linux-apt.md (reported line 54)May include surrounding context.

bash
sudo systemctl start seekdb
sudo systemctl enable seekdb

Step 5 — Verify service status

Session Persistence

Medium
Category
Rogue Agent
Confidence
80% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · install/references/linux-yum.md (reported line 62)May include surrounding context.

bash
sudo systemctl start seekdb
sudo systemctl enable seekdb

Step 5 — Verify service status

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The uninstall instruction runs a root shell script from /var/lib/seekdb/seekdb_clean.sh without explaining what it deletes or warning that cleanup may be irreversible. In context, this could remove databases, logs, or other local state, and users may execute it assuming it is a routine package removal step.

Content

No source excerpt is available for this finding.

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 · install/references/linux-apt.md (reported line 4)May include surrounding context.

md
# Install SeekDB — Linux yum (RPM)

**Supported systems:** Anolis OS 8.X/23.X, CentOS 7.X/9.X, openEuler 22.03/24.03 (kernel 4.19+)
**Minimum requirements:** 1-core CPU, 2 GB RAM, `jq` and MySQL client installed, systemd available, sudo privileges.

---

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 · install/references/linux-apt.md (reported line 76)May include surrounding context.

md
# Install SeekDB — Linux yum (RPM)

**Supported systems:** Anolis OS 8.X/23.X, CentOS 7.X/9.X, openEuler 22.03/24.03 (kernel 4.19+)
**Minimum requirements:** 1-core CPU, 2 GB RAM, `jq` and MySQL client installed, systemd available, sudo privileges.

---

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 · install/references/linux-apt.md (reported line 77)May include surrounding context.

md
# Install SeekDB — Linux yum (RPM)

**Supported systems:** Anolis OS 8.X/23.X, CentOS 7.X/9.X, openEuler 22.03/24.03 (kernel 4.19+)
**Minimum requirements:** 1-core CPU, 2 GB RAM, `jq` and MySQL client installed, systemd available, sudo privileges.

---

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 · install/references/linux-yum.md (reported line 4)May include surrounding context.

md
# Install SeekDB — Linux yum (RPM)

**Supported systems:** Anolis OS 8.X/23.X, CentOS 7.X/9.X, openEuler 22.03/24.03 (kernel 4.19+)
**Minimum requirements:** 1-core CPU, 2 GB RAM, `jq` and MySQL client installed, systemd available, sudo privileges.

---

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 · install/references/linux-yum.md (reported line 88)May include surrounding context.

md
# Install SeekDB — Linux yum (RPM)

**Supported systems:** Anolis OS 8.X/23.X, CentOS 7.X/9.X, openEuler 22.03/24.03 (kernel 4.19+)
**Minimum requirements:** 1-core CPU, 2 GB RAM, `jq` and MySQL client installed, systemd available, sudo privileges.

---

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 · install/references/linux-apt.md (reported line 15)May include surrounding context.

systemctl --version 2>/dev/null | head -1 || echo "systemd not available" command -v jq || echo "jq not installed"

text
If `jq` is missing: `sudo yum install -y jq`

## Step 2 — Install SeekDB

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 · install/references/linux-apt.md (reported line 24)May include surrounding context.

systemctl --version 2>/dev/null | head -1 || echo "systemd not available" command -v jq || echo "jq not installed"

text
If `jq` is missing: `sudo yum install -y jq`

## Step 2 — Install SeekDB

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 · install/references/linux-apt.md (reported line 25)May include surrounding context.

systemctl --version 2>/dev/null | head -1 || echo "systemd not available" command -v jq || echo "jq not installed"

text
If `jq` is missing: `sudo yum install -y jq`

## Step 2 — Install SeekDB

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 · install/references/linux-apt.md (reported line 26)May include surrounding context.

systemctl --version 2>/dev/null | head -1 || echo "systemd not available" command -v jq || echo "jq not installed"

text
If `jq` is missing: `sudo yum install -y jq`

## Step 2 — Install SeekDB

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 · install/references/linux-apt.md (reported line 31)May include surrounding context.

systemctl --version 2>/dev/null | head -1 || echo "systemd not available" command -v jq || echo "jq not installed"

text
If `jq` is missing: `sudo yum install -y jq`

## Step 2 — Install SeekDB

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 · install/references/linux-apt.md (reported line 39)May include surrounding context.

systemctl --version 2>/dev/null | head -1 || echo "systemd not available" command -v jq || echo "jq not installed"

text
If `jq` is missing: `sudo yum install -y jq`

## Step 2 — Install SeekDB

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 · install/references/linux-apt.md (reported line 53)May include surrounding context.

systemctl --version 2>/dev/null | head -1 || echo "systemd not available" command -v jq || echo "jq not installed"

text
If `jq` is missing: `sudo yum install -y jq`

## Step 2 — Install SeekDB

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 · install/references/linux-apt.md (reported line 54)May include surrounding context.

systemctl --version 2>/dev/null | head -1 || echo "systemd not available" command -v jq || echo "jq not installed"

text
If `jq` is missing: `sudo yum install -y jq`

## Step 2 — Install SeekDB

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 · install/references/linux-apt.md (reported line 60)May include surrounding context.

systemctl --version 2>/dev/null | head -1 || echo "systemd not available" command -v jq || echo "jq not installed"

text
If `jq` is missing: `sudo yum install -y jq`

## Step 2 — Install SeekDB

Static analysis

No suspicious patterns detected.