Back to skill

Security audit

Drive Tools

Security checks for vulnerabilities and agentic risk

Overview

This drive-management skill matches its stated purpose, but it handles reusable drive credentials and destructive remote file operations with weak safeguards.

Review carefully before installing. Use only low-privilege, dedicated drive accounts; avoid plain FTP; do not rely on this tool for secure FTPS validation; keep config.json out of version control and backups; and manually confirm exact paths before any upload, move, download overwrite, or delete operation.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (5)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/ftp_drive_tools.py:157
Finding

FTPS Certificate and Hostname Validation Disabled

Content
View full analysis

Vulnerability Details

File Location: scripts/ftp_drive_tools.py, lines 157-163
Vulnerability Type: Improper TLS certificate validation
Risk Level: High

python
def _create_context(self) -> ssl.SSLContext:
    context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
    if hasattr(ssl, 'TLSVersion'):
        context.minimum_version = ssl.TLSVersion.TLSv1_2
        context.maximum_version = ssl.TLSVersion.TLSv1_2
    context.check_hostname = False
    context.verify_mode = ssl.CERT_NONE
    return context

Technical Analysis

The FTPS client explicitly disables both certificate-chain validation and hostname verification. Although the resulting connection is encrypted, it does not authenticate the remote FTP server. Any certificate, including a self-signed or attacker-controlled certificate, will be accepted.

This permits an active network attacker to impersonate the configured FTP server. The attacker can terminate the TLS session, establish a separate connection to the real server, and proxy or modify authentication and file-transfer traffic.

Attack Path

  1. A user configures and invokes the client with FTPS enabled.
  2. An attacker obtains a network position capable of intercepting or redirecting the connection, such as through a compromised gateway, DNS poisoning, or a hostile wireless network.
  3. The attacker presents an arbitrary TLS certificate for the FTP endpoint.
  4. The client accepts the certificate because CERT_NONE and disabled hostname checking prevent authentication failures.
  5. The client submits the FTP username and password through the attacker-controlled TLS endpoint.
  6. The attacker captures credentials and can inspect, replace, or modify uploaded and downloaded files.

Impact Assessment

A successful attack can expose reusable FTP credentials and all data transferred during affected sessions. The attacker may obtain the same remote file privileges granted to the compromised FTP account, including listing, readin ...[truncated 59 chars]

Remediation
View remediation

Remediation Suggestions

  • Construct the context with ssl.create_default_context() so trusted certificate authorities and hostname validation are enabled by default.
  • Retain ssl.CERT_REQUIRED and check_hostname = True.
  • Allow users of private certificate authorities to configure a CA bundle through SSLContext.load_verify_locations().
  • Do not provide an automatic fallback that disables certificate validation.
  • If certificate pinning is supported, validate a configured certificate or public-key fingerprint and fail closed on mismatch.
  • Report certificate failures clearly without exposing credentials or retrying over a weaker connection.

T09 · Insecure Skill Coding Practices

Error
Location
config.json:15
Finding

Plain FTP Is the Documented and Shipped Default

Content
View full analysis

Vulnerability Details

File Locations:

  • config.json, lines 15-23
  • ftp_usage_guide.md, lines 7-16
  • scripts/ftp_drive_tools.py, lines 207-214

Vulnerability Type: Cleartext transmission of credentials and files
Risk Level: High

json
"ftp": [
    {
        "name": "",
        "user": "",
        "password": "",
        "ip": "",
        "port": 21,
        "tls": false,
        "path": "/"
    }
]
python
try:
    self.ftp = ReusableFTP_TLS(context=self._create_context()) if use_tls else FTP()
    self.ftp.encoding = 'utf-8'
    self.ftp.connect(host, port, timeout=timeout)
    self.ftp.login(user, password)
    if use_tls:
        try:
            self.ftp.auth()
            self.ftp.prot_p()
        except: pass

Technical Analysis

The shipped configuration and usage guide set tls to false. When this setting is retained, the implementation creates a standard ftplib.FTP connection and transmits the FTP authentication exchange and file contents without transport encryption.

Users following the documented template are therefore directed toward an insecure protocol mode. FTP does not protect the USER and PASS commands or data-channel content against passive monitoring or active modification.

Attack Path

  1. A user follows the supplied configuration template and leaves "tls": false.
  2. The client creates an unencrypted FTP control connection.
  3. The username and password are transmitted across the network in cleartext.
  4. A network observer captures the authentication exchange.
  5. The observer can also read or alter listing results and transferred file content.
  6. The captured credentials can be reused directly against the FTP server until they expire or are changed.

Impact Assessment

An attacker with network visibility can obtain FTP credentials and read sensitive uploaded or downloaded files. If the FTP account has write or deletion permissions, the attacker can modify, replace, upload, rename, or de ...[truncated 62 chars]

Remediation
View remediation

Remediation Suggestions

  • Change the shipped configuration and documentation to default to "tls": true.
  • Reject plain FTP by default and require a separate, explicit insecure-mode option before allowing it.
  • Print a prominent warning when cleartext FTP is explicitly selected.
  • Prefer protocols with authenticated encryption, such as properly validated FTPS, SFTP, or HTTPS-based WebDAV.
  • Do not silently downgrade from secure transport to cleartext after a TLS failure.
  • Combine this remediation with proper certificate verification; enabling FTPS alone is insufficient while certificate checks remain disabled.

T09 · Insecure Skill Coding Practices

Error
Location
scripts/webdav_drive_tools.py:170
Finding

WebDAV Credentials Can Be Forwarded to an Attacker-Controlled Origin

Content
View full analysis

Vulnerability Details

File Locations:

  • scripts/webdav_drive_tools.py, lines 170-187
  • scripts/webdav_drive_tools.py, lines 427-449

Vulnerability Type: Cross-origin credential disclosure and server-side request manipulation
Risk Level: High

python
def _request(self, method: str, path: str, **kwargs: Any) -> requests.Response:
    """
    Internal generic HTTP request wrapper with basic authentication and path normalization.
    """
    if path.startswith('http'):
        url = path
    elif self.url_path and path.startswith(self.url_path):
        url = f"{self.base_url.rstrip('/')}/{path.lstrip('/')}"
    else:
        url = f"{self.url.rstrip('/')}/{path.lstrip('/')}"

    response = requests.request(method, url, auth=self.auth, **kwargs)
    if response.status_code == 401:
        print(f"\nAuth failed: Please check if the user {self.config.get('user')} credentials and drive configuration are correct.")
        sys.exit(1)
    return response
python
for entry in entries:
    href = entry.find('d:href', namespace).text
    href = urllib.parse.unquote(href)

    if href.rstrip('/') == list_path.rstrip('/') or href.rstrip('/') == urllib.parse.quote(list_path.rstrip('/')):
        continue

    resourcetype = entry.find('.//d:resourcetype', namespace)
    is_coll = resourcetype is not None and resourcetype.find('d:collection', namespace) is not None

    if is_coll:
        self._delete_recursive(href)
    else:
        child_resp = self._request('DELETE', href)

Technical Analysis

The generic request method accepts any string beginning with http as a complete destination URL. It then unconditionally attaches the configured HTTP Basic credentials through auth=self.auth.

Recursive deletion processes href values returned by the WebDAV server and passes them back into _request() without validating that their scheme, hostname, and port match the configured WebDAV origin. A malicious or compromised WebDAV endpoint can ...[truncated 1408 chars]

Remediation
View remediation

Remediation Suggestions

  • Parse every candidate URL with urllib.parse.urlparse().
  • Resolve relative WebDAV paths against the configured base URL using urljoin().
  • Reject any URL whose normalized scheme, hostname, or effective port differs from the configured WebDAV origin.
  • Reject non-HTTP(S) schemes and malformed href values.
  • Attach Basic authentication only after same-origin validation succeeds.
  • Treat server-provided href values as untrusted input and normalize their path before recursive use.
  • Disable or carefully validate redirects so credentials cannot be forwarded across origins.
  • Consider creating a requests.Session scoped to the validated origin, while still performing explicit destination checks for every request.

T09 · Insecure Skill Coding Practices

Warning
Location
config.json:3
Finding

Drive Credentials Are Persisted in a Plaintext Project Configuration File

Content
View full analysis

Vulnerability Details

File Locations:

  • SKILL.md, lines 34-38
  • config.json, lines 3-33

Vulnerability Type: Plaintext sensitive-data storage
Risk Level: Medium

text
Based on the drive type, check the configuration information. If the relevant
drive configuration does not exist, guide the user to configure the drive
connection information and record it in `skills/drive-tools/config.json`
following the specified format.
json
"smb": [
    {
        "name": "",
        "user": "",
        "password": "",
        "ip": "",
        "share": "",
        "domain": "WORKGROUP",
        "path": "/"
    }
],
"ftp": [
    {
        "name": "",
        "user": "",
        "password": "",
        "ip": "",
        "port": 21,
        "tls": false,
        "path": "/"
    }
],
"webdav": [
    {
        "name": "",
        "user": "",
        "password": "",
        "url": "https://dav.jianguoyun.com/dav/",
        "path": "/"
    }
]

Technical Analysis

The Skill explicitly instructs the Agent to record SMB, FTP, and WebDAV credentials in config.json. The configuration format stores passwords directly as plaintext strings. The implementation does not integrate with a secret manager, reference environment variables, enforce restrictive file permissions, or separate example configuration from live secrets.

Because the file is stored in the project directory, credentials may be exposed through repository commits, backups, artifact packaging, diagnostic collection, or access by other local processes and users.

Attack Path

  1. The user supplies storage credentials while configuring the Skill.
  2. The Agent records the credentials directly in config.json as instructed.
  3. The project directory is copied, archived, backed up, committed to version control, or read by another local process or user.
  4. The plaintext credentials are recovered without requiring decryption.
  5. The credentials are reused to access the configured SMB, FTP, or ...[truncated 472 chars]
Remediation
View remediation

Remediation Suggestions

  • Store passwords in an operating-system credential manager, encrypted secret store, or deployment secret-management service.
  • Keep only secret identifiers or environment-variable names in config.json.
  • Provide a sanitized example file such as config.example.json and exclude the live configuration from version control.
  • If file-based storage is unavoidable, enforce owner-only permissions and verify them before loading credentials.
  • Avoid printing credentials or including them in exception output.
  • Document credential rotation procedures and recommend narrowly scoped service accounts with minimum required remote permissions.
  • Separate credentials for SMB, FTP, and WebDAV rather than encouraging reuse.

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/smb_drive_tools.py:218
Finding

Configured Remote Base-Path Restrictions Can Be Bypassed Using Parent Traversal

Content
View full analysis

Vulnerability Details

File Locations:

  • scripts/smb_drive_tools.py, lines 218-226
  • scripts/ftp_drive_tools.py, lines 91-96
  • scripts/webdav_drive_tools.py, lines 164-168

Vulnerability Type: Improper remote-path canonicalization
Risk Level: Medium

python
def _get_full_path(self, path: Union[str, os.PathLike]) -> str:
    """Merge requested path with configured base_path to implement scope limitation."""
    path = str(path).replace('\\', '/')
    clean_path = path.lstrip('/')

    full_path = f"{self.base_path}/{clean_path}".replace('//', '/')
    return full_path if full_path.startswith('/') else f"/{full_path}"

Equivalent string-concatenation logic is used by the FTP and WebDAV clients:

python
path = str(path).replace('\\', '/')
clean_path = path.lstrip('/')
full_path = f"{self.base_path}/{clean_path}".replace('//', '/')
return full_path if full_path.startswith('/') else f"/{full_path}"

Technical Analysis

The documentation and comments describe base_path as a way to limit remote access scope. However, _get_full_path() only strips leading separators and concatenates the requested path to the configured base path. It does not resolve or reject . and .. components.

For example, with a base path of /restricted/user, input such as ../../shared/secret.txt produces /restricted/user/../../shared/secret.txt. A remote SMB, FTP, or WebDAV server that canonicalizes parent components may resolve this to /shared/secret.txt, outside the intended subtree.

This is a client-side scope failure rather than a bypass of the remote account's server-enforced permissions. The operation remains limited by the permissions of the configured remote account.

Attack Path

  1. An administrator configures a non-root path expecting it to restrict the Skill to a remote subtree.
  2. A user or Agent action supplies a path containing one or more .. components.
  3. _get_full_path() retains those components in the outgoing path.

...[truncated 733 chars]

Remediation
View remediation

Remediation Suggestions

  • Normalize remote paths using POSIX semantics before sending them to a server.
  • Reject any input containing traversal that would resolve above the configured base path.
  • Compare normalized path components rather than using a simple string prefix.
  • Preserve an immutable normalized base path and verify that every generated destination remains its descendant.
  • Apply the same canonicalization logic consistently to listing, upload, download, creation, deletion, rename, and recursive search operations.
  • Treat both forward and backslash separators consistently.
  • Use server-side accounts and shares restricted to the intended subtree, because client-side validation should not be the only authorization boundary.
  • Add tests for paths such as .., ../file, a/../../file, encoded traversal where relevant, and similarly named prefix directories.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (30)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The documentation describes a limited cloud-drive utility, but the analyzed behavior indicates additional capabilities such as delete, rename/move, mkdir, search, and recursive upload that are not clearly disclosed. Hidden or under-documented remote-management actions are dangerous because users may invoke the skill without realizing it can alter or remove remote data, increasing the chance of destructive operations or social-engineering abuse.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The documentation describes a limited cloud-drive utility, but the analyzed behavior indicates additional capabilities such as delete, rename/move, mkdir, search, and recursive upload that are not clearly disclosed. Hidden or under-documented remote-management actions are dangerous because users may invoke the skill without realizing it can alter or remove remote data, increasing the chance of destructive operations or social-engineering abuse.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The documentation describes a limited cloud-drive utility, but the analyzed behavior indicates additional capabilities such as delete, rename/move, mkdir, search, and recursive upload that are not clearly disclosed. Hidden or under-documented remote-management actions are dangerous because users may invoke the skill without realizing it can alter or remove remote data, increasing the chance of destructive operations or social-engineering abuse.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · ftp_usage_guide.md (reported line 47)May include surrounding context.

md
# Delete File or Directory (删除远程文件或目录)
# Use -d for directories (使用 -d 参数删除目录)
python scripts/ftp_drive_tools.py --name ftpDrive rm /old.txt
python scripts/ftp_drive_tools.py --name ftpDrive rm -d /old_dir

# Rename or Move: old_path -> new_path (重命名或移动: 旧路径 -> 新路径)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · ftp_usage_guide.md (reported line 48)May include surrounding context.

md
# Delete File or Directory (删除远程文件或目录)
# Use -d for directories (使用 -d 参数删除目录)
python scripts/ftp_drive_tools.py --name ftpDrive rm /old.txt
python scripts/ftp_drive_tools.py --name ftpDrive rm -d /old_dir

# Rename or Move: old_path -> new_path (重命名或移动: 旧路径 -> 新路径)
python scripts/ftp_drive_tools.py --name ftpDrive mv /old.txt /new.txt

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The TLS context disables both certificate validation and hostname checking, which means the client cannot verify the identity of the FTP server. In a cloud drive/file transfer tool, this enables man-in-the-middle attacks that can intercept credentials, alter transferred files, or redirect users to a rogue server while the connection still appears 'encrypted'.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The tool performs remote deletion, including recursive directory deletion, without any confirmation, dry-run, or safeguard against broad targets. In a storage-management skill, this is especially dangerous because a typo, automation mistake, or path-confusion bug can irreversibly remove large amounts of user data from the remote drive.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · smb_usage_guide.md (reported line 49)May include surrounding context.

md
# Delete File or Directory (删除远程文件或目录)
# Use -d for directories (使用 -d 参数删除目录)
python scripts/smb_drive_tools.py --name smbDrive rm /old_file.txt
python scripts/smb_drive_tools.py --name smbDrive rm -d /old_folder

# Rename or Move: old_path -> new_path (重命名或移动: 旧路径 -> 新路径)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · smb_usage_guide.md (reported line 50)May include surrounding context.

md
# Delete File or Directory (删除远程文件或目录)
# Use -d for directories (使用 -d 参数删除目录)
python scripts/smb_drive_tools.py --name smbDrive rm /old_file.txt
python scripts/smb_drive_tools.py --name smbDrive rm -d /old_folder

# Rename or Move: old_path -> new_path (重命名或移动: 旧路径 -> 新路径)
python scripts/smb_drive_tools.py --name smbDrive mv /old_name.txt /new_name.txt

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · webdav_usage_guide.md (reported line 48)May include surrounding context.

md
# Delete File or Directory (删除远程文件或目录)
# Use -d for directories (使用 -d 参数删除目录)
python scripts/webdav_drive_tools.py --name webdavDrive rm /Photos/old_file.txt
python scripts/webdav_drive_tools.py --name webdavDrive rm /Photos/OldFolder

# Rename or Move: old_path -> new_path (重命名或移动: 旧路径 -> 新路径)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · webdav_usage_guide.md (reported line 49)May include surrounding context.

md
# Delete File or Directory (删除远程文件或目录)
# Use -d for directories (使用 -d 参数删除目录)
python scripts/webdav_drive_tools.py --name webdavDrive rm /Photos/old_file.txt
python scripts/webdav_drive_tools.py --name webdavDrive rm /Photos/OldFolder

# Rename or Move: old_path -> new_path (重命名或移动: 旧路径 -> 新路径)
python scripts/webdav_drive_tools.py --name webdavDrive mv /old_name.txt /new_name.txt

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill instructs the agent to read and write local files and make outbound network connections to remote storage services, but it does not declare any explicit tool scope or permissions boundary. That increases the risk of unintended file access, credential handling, or network actions occurring without clear policy constraints or user-visible guardrails.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill instructs users to configure remote drive connection details in a local config file but does not provide explicit guidance on safely handling sensitive credentials. Because this skill manages SMB/FTP/WebDAV access, missing warnings around passwords, tokens, and server details materially increases the risk of credential exposure through plaintext storage, logs, screenshots, or accidental file sharing.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The suggested invocation phrase is broad and resembles normal user conversation, which raises the chance that the skill activates in situations where the user did not intend to initiate cloud-drive access. In a skill with file-transfer and remote-management capabilities, overbroad triggering can lead to unintended listing, retrieval, or modification of remote data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The guide explicitly instructs users to store FTP credentials, including a plaintext password, in a local config file under the skill directory. This is dangerous because credentials may be exposed through local compromise, backups, logs, version control, or accidental sharing, and the document provides no warning about secret handling or safer alternatives.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The quick-start section documents remote deletion commands without any warning, confirmation step, or note that deletion may be irreversible. In a remote storage management context, this increases the likelihood of accidental destructive actions against user data or shared storage targets.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest describes a cloud drive tool supporting SMB, WebDAV, and FTP, but this file implements only FTP/FTPS behavior end-to-end: FTP client classes, FTP config loading, FTP commands, and an FTP-only CLI. That creates a description-behavior mismatch for this skill component because the code's actual scope is narrower and protocol-specific than the manifest claims.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The download operation opens a caller-supplied local path in write-binary mode and streams remote data into it, which can create or overwrite local files. Although success/failure is printed, there is no user-facing warning, confirmation, or cautionary comment/docstring about this safety-impacting file write behavior.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The code comments claim _get_full_path enforces scope limitation, but it only concatenates base_path with user input and never normalizes or rejects traversal such as ../. On SMB servers that interpret dot-segments, a user can escape the configured base directory and list, read, write, rename, or delete files elsewhere in the share, defeating the intended access boundary.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This code performs destructive remote file and directory deletion, including recursive removal of non-empty directories, but provides no confirmation prompt or prominent warning before executing the operation. Although success/failure is printed after the fact, that does not disclose the risk in advance or help prevent accidental destructive use.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The function may rewrite config.json automatically when configuration is missing, without explicit confirmation or backup. That can destroy an existing local configuration state or replace user-managed content unexpectedly, causing loss of settings and possibly leading users to re-enter credentials into a freshly written plaintext file.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The download path creates directories with os.makedirs and writes arbitrary remote content to a local file path. While success and failure are printed afterward, there is no confirmation or explicit warning before the local filesystem is modified, and this operation can affect user data or overwrite expected locations.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The guide explicitly instructs users to place SMB credentials, including a plaintext password, into skills/drive-tools/config.json and says the configuration is automatically loaded. Storing reusable network credentials in a local unprotected file increases the chance of credential disclosure through source control, backups, logs, local compromise, or accidental sharing, and the documentation provides no warning or safer alternative.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The guide tells users to place a WebDAV username and app-specific password into a local config.json file, but provides no warning about secret handling, file permissions, or exclusion from version control. In a tool specifically intended to access remote storage, leaked credentials could enable unauthorized access to cloud files and remote management actions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The quick-start includes destructive delete operations against remote storage without any warning that these actions may permanently remove files or folders. In the context of a cloud drive management tool, users may copy-paste examples and unintentionally cause irreversible data loss on connected storage.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.