Back to skill

Security audit

Astock Daily

Security checks for vulnerabilities and agentic risk

Overview

This stock-report email skill has a coherent purpose, but it needs review because it mishandles mail credentials and can make persistent system and scheduler changes.

Do not install this as-is for a real mailbox. Before use, remove the hard-coded recipient and test credential, rotate any exposed SMTP password, store mail secrets in a protected secret manager or tightly permissioned config file, stop logging credential-bearing configuration, keep TLS certificate validation enabled, avoid the sudo hosts-file helper, and review any cron or shell-profile persistence before enabling it.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (10)

T09 · Insecure Skill Coding Practices

Error
Location
test-smtp.js:36
Finding

Hard-Coded SMTP Account Credential

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
index.js:269
Finding

SMTP Password Disclosure Through Console and Cron Logs

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
index.js:276
Finding

SMTP Certificate Validation Is Disabled

Content
View full analysis
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
fix-hosts.sh:8
Finding

Root-Level Persistent SMTP DNS Overrides

Content
View full analysis
/dev/null; then echo "Entry already exists" else sudo sh -c 'echo "47.246.165.89 smtp.qiye.aliyun.com" >> /etc/hosts' fi if grep -q "smtp.mxhichina.com" /etc/hosts 2>/dev/null; then echo "Entry already exists" else sudo sh -c 'echo "47.246.165.89 smtp.mxhichina.com" >> /etc/hosts' fi ``` ### Technical Analysis The helper requests root privileges and permanently changes system-wide hostname resolution by appending fixed SMTP mappings to `/etc/hosts`. It does not cryptographically verify that the hard-coded IP is currently operated by the expected provider, preserve the previous state, establish an expiry, or provide an automated rollback. Modifying `/etc/hosts` is not required for the Skill's core stock-reporting function. The change affects every process on the host, not only this application. Combined with disabled TLS certificate verification, it creates a direct path for SMTP credential interception if the address is incorrect, reassigned, or compromised. ### Attack Path 1. A user runs `fix-hosts.sh` and grants `sudo` access. 2. The script permanently maps both SMTP domains to the fixed address. 3. The address later becomes incorrect, is reassigned, or does not belong to the intended SMTP endpoint. 4. The Skill connects to the fixed endpoint instead of using authenticated DNS resolution. 5. Because certificate validation is disabled, a fraudulent endpoint can receive SMTP authentication data. ### Impact Assessment The script obtains root-authorized write access to a security-sensitive system file and changes network behavior for all users and applications. Potential consequences include credential interception, email disruption, persistent traffic redirection, and difficult- ...[truncated 39 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
send-mail-applescript.js:17
Finding

Shell and AppleScript Injection in Alternate Mail Sender

Content
View full analysis
{ exec(`osascript -e '${script}'`, (error) => { fs.unlinkSync(tempFile); if (error) { reject(error); } else { resolve(true); } }); }); ``` ### Technical Analysis The `subject`, `htmlContent`, and `to` values are interpolated into AppleScript source. The generated AppleScript is then interpolated again into a shell command passed to `exec`. The expression `htmlContent.replace(/"/g, '"')` replaces a double quote with the same double quote and therefore performs no escaping. A single quote can terminate the shell argument, while AppleScript delimiters can terminate strings and introduce new AppleScript statements. Although this helper is not called by the primary `index.js` flow, it is exported as a reusable project function and becomes exploitable by any caller that supplies untrusted values. ### Attack Path 1. A caller passes attacker-controlled content, subject, or recipient data to `sendViaAppleMail`. 2. The attacker includes shell single quotes or AppleScript string delimiters and executable syntax. 3. The crafted value breaks out of the intended string. 4. `exec` invokes a shell that interprets the injected command, or `osascript` executes injected AppleScript. 5. The payload runs with the privileges of the user executing the Skill. ### Impact ...[truncated 305 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
index.js:324
Finding

Predictable Temporary Files Permit Symlink and Race Attacks

Content
View full analysis
{ exec(`/usr/sbin/sendmail -t < "${tempFile}"`, (error) => { fs.unlinkSync(tempFile); ``` Additional fixed names include: ```javascript path.join(__dirname, 'email-temp.html') path.join(__dirname, 'email-temp.txt') ``` ### Technical Analysis The code uses predictable, shared filenames and writes them without exclusive creation or symlink protection. A local attacker with write access to the project directory can pre-create one of these paths as a symbolic link or replace it between the write, send, and delete operations. Concurrent executions can also overwrite or delete each other's temporary content. ### Attack Path 1. An attacker predicts the fixed filename. 2. The attacker creates a symbolic link at that path pointing to another file writable by the victim. 3. The victim runs the Skill. 4. `writeFileSync` follows the link and overwrites the target with generated email content. 5. The subsequent deletion may remove the link, obscuring evidence. 6. Alternatively, concurrent runs replace each other's messages and send unintended content. ### Impact Assessment The practical scope depends on the current user's permissions and project-directory access. Exploitation may overwrite user-owned files, expose report content, corrupt outgoing messages, or cause denial of service. It does not directly grant privileges beyond those held by the Skill process. ]]>
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
setup.sh:79
Finding

SMTP Secrets Persisted in Environment Files and Shell Startup Profiles

Content
View full analysis
.env << EOF SMTP_CONFIG='$SMTP_CONFIG' EOF ``` The setup script can duplicate the password into a shell startup file: ```bash if ! grep -q "SMTP_CONFIG" "$SHELL_RC" 2>/dev/null; then echo "" >> "$SHELL_RC" echo "export SMTP_CONFIG='$SMTP_CONFIG'" >> "$SHELL_RC" fi ``` The JavaScript wizard also writes the complete secret with default permissions: ```javascript const envPath = path.join(__dirname, '.env'); fs.writeFileSync(envPath, `SMTP_CONFIG=${JSON.stringify(smtpConfig)}\n`); ``` ### Technical Analysis SMTP passwords are stored as plaintext without explicitly enforcing restrictive filesystem permissions. The setup process optionally copies the credential into `.zshrc`, `.bashrc`, or `.bash_profile`, increasing its lifetime and exposure. Shell profiles are commonly included in backups, diagnostic bundles, dotfile repositories, and interactive shell processing. Environment variables may also propagate to unrelated child processes. ### Attack Path 1. A user provides an SMTP password to the setup utility. 2. The utility writes it to `.env`. 3. The user optionally allows the same password to be appended to a shell profile. 4. Another local account, backup process, repository operation, support tool, or compromised child process reads the plaintext value. 5. The credential is reused against the SMTP service. ### Impact Assessment Exposure may grant authenticated SMTP access under the configured account. The blast radius is increased by duplicating the secret into persistent user configuration and inherited process environments. ]]>
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
config.js:52
Finding

Configuration Input Is Written Directly Into Executable JavaScript

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
index.js:53
Finding

Market Data Is Retrieved Over Plaintext HTTP and Embedded Without HTML Escaping

Content
View full analysis
${stock.code} ${stock.name} ${stock.applyDate || '-'} ¥${stock.issuePrice || '-'} ${stock.listingDate || '-'} ``` ### Technical Analysis The data feeds use plaintext HTTP, so the client does not authenticate the server and provides no transport integrity. A network attacker can alter the returned JSON or text. The resulting fields are interpolated into the generated HTML without entity encoding. An attacker able to modify a feed can inject arbitrary HTML into the outgoing report. Mail clients commonly restrict active content, but injected links, images, formatting, and deceptive text can still support phishing or tracking. The same transport weakness also permits manipulation of prices and stock-selection results without requiring markup injection. ### Attack Path 1. An attacker intercepts or redirects one of the plaintext HTTP requests. 2. The attacker returns syntactically valid modified market data. 3. A stock field contains attacker-selected financial information or HTML markup. 4. The Skill accepts the response and embeds the field into the report. 5. The g ...[truncated 501 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
package-lock.json:15
Finding

Dependency Lockfile Uses a Non-Default Package Mirror

Content
View full analysis
=6.0.0" } } ``` ### Technical Analysis The lockfile resolves Nodemailer from a non-default npm mirror. The integrity hash provides meaningful protection against an artifact that differs from the locked content, so this is not evidence that the dependency itself is malicious. However, installation relies on an additional distribution service and creates a broader supply-chain trust boundary. Risk increases if integrity enforcement is disabled, the lockfile is regenerated through the mirror, or the resolved artifact and hash are changed together in a future update. ### Attack Path 1. A user follows the documented `npm install` instruction. 2. npm retrieves the dependency from the mirror specified in the lockfile. 3. If the mirror, lockfile update process, or project maintenance account is compromised, a future artifact and matching lock entry may be substituted. 4. The substituted package executes within the Node.js process when required by the Skill. ### Impact Assessment A malicious mail dependency would execute with the same permissions as the Skill and could access SMTP credentials, local report data, and network resources. The currently pinned integrity value reduces immediate exploitability, so the present risk is rated Low. ]]>
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (84)

Credential Access

High
Category
Privilege Escalation
Confidence
89% confidence
Finding

The documentation instructs users to place SMTP credentials, including the mailbox username and password, into a .env file in plaintext. While common in development, this is dangerous because plaintext secrets are easily exposed through accidental commits, weak file permissions, shell history, backups, or local compromise.

Content

Scanner excerpt · CONFIG.md (reported line 10)May include surrounding context.

文件位置:.env

bash
# 编辑 .env 文件,将 YOUR_PASSWORD_HERE 替换为你的邮箱密码
SMTP_CONFIG={"host":"smtp.qiye.aliyun.com","port":465,"secure":true,"user":"8@batype.com","pass":"你的密码","from":"8@batype.com"}

Credential Access

High
Category
Privilege Escalation
Confidence
86% confidence
Finding

The instruction source .env && node index.js loads secrets into the shell environment, increasing exposure to subprocess inheritance, debugging output, and accidental leakage during interactive use. In a skill context, this also normalizes handling credentials in an unsafe way without discussing protections.

Content

Scanner excerpt · CONFIG.md (reported line 81)May include surrounding context.

cd /Users/batype/.openclaw/workspace-work/skills/astock-daily

加载环境变量并运行

source .env && node index.js

text

### 预期输出

Credential Access

High
Category
Privilege Escalation
Confidence
86% confidence
Finding

Repeating the source .env && node index.js pattern reinforces insecure credential handling and increases the chance that users will expose secrets in shell sessions or automation. The danger is amplified because the file specifically contains SMTP authentication material.

Content

Scanner excerpt · CONFIG.md (reported line 190)May include surrounding context.

测试运行:

bash
cd /Users/batype/.openclaw/workspace-work/skills/astock-daily
source .env && node index.js

Credential Access

High
Category
Privilege Escalation
Confidence
92% confidence
Finding

Sourcing .env imports all variables into the current shell session, which commonly includes credentials such as SMTP usernames, passwords, API keys, or tokens. In combination with running the application, this can expose secrets to logs, child processes, shell history patterns, or unintended code paths, making it more dangerous in an automation skill that users may trust and execute directly.

Content

Scanner excerpt · DNS-FIX.md (reported line 74)May include surrounding context.

测试 SMTP 发送

cd /Users/batype/.openclaw/workspace-work/skills/astock-daily source .env && node index.js

text

---

Credential Access

High
Category
Privilege Escalation
Confidence
97% confidence
Finding

This step explicitly instructs the user to edit a .env file and insert their actual email password in plaintext. In the context of a skill repository, that is sensitive credential material that can be leaked via source control, local file exposure, backups, or accidental sharing, making the issue more dangerous than a generic configuration example.

Content

Scanner excerpt · QUICKSTART.md (reported line 8)May include surrounding context.

编辑 .env 文件:

bash
cd /Users/batype/.openclaw/workspace-work/skills/astock-daily
vi .env

将 YOUR_PASSWORD_HERE 替换为你的邮箱密码:

Credential Access

High
Category
Privilege Escalation
Confidence
98% confidence
Finding

Using source .env && node index.js loads the secret into the current shell environment, which broadens exposure of the credential to child processes, shell debugging, process inspection in some environments, and user mistakes during troubleshooting. Combined with the prior instruction to store the password in plaintext, this creates a practical credential-handling weakness.

Content

Scanner excerpt · QUICKSTART.md (reported line 24)May include surrounding context.

bash
cd /Users/batype/.openclaw/workspace-work/skills/astock-daily
source .env && node index.js

检查邮箱是否收到邮件!

Credential Access

High
Category
Privilege Escalation
Confidence
95% confidence
Finding

The README instructs users to place an SMTP password directly into a .env file and even includes a real-looking corporate email account in the sample configuration. Storing credentials in plaintext increases the risk of accidental disclosure through local file compromise, shell history, backups, screenshots, or committing the file to version control.

Content

Scanner excerpt · README.md (reported line 31)May include surrounding context.

bash
# 编辑文件
vi .env

# 将 YOUR_PASSWORD_HERE 替换为你的邮箱密码
SMTP_CONFIG={"host":"smtp.qiye.aliyun.com","port":465,"secure":true,"user":"8@batype.com","pass":"你的密码","from":"8@batype.com"}

Credential Access

High
Category
Privilege Escalation
Confidence
98% confidence
Finding

At this point the script persists SMTP_CONFIG containing host, username, and password/auth code to a .env file in plaintext. Because these credentials enable authenticated access to an email-sending account, exposure can lead to account abuse, spam, phishing, mailbox-related compromise, and possible pivoting into other systems that trust that mailbox.

Content

Scanner excerpt · config.js (reported line 100)May include surrounding context.

js
console.log('\n或者添加到 ~/.zshrc 或 ~/.bashrc:');
    console.log(`  export SMTP_CONFIG='${JSON.stringify(smtpConfig)}'`);
    
    // 保存到 .env 文件
    const envPath = path.join(__dirname, '.env');
    fs.writeFileSync(envPath, `SMTP_CONFIG=${JSON.stringify(smtpConfig)}\n`);
    console.log(`\n💾 配置已保存到:${envPath}`);

Credential Access

High
Category
Privilege Escalation
Confidence
94% confidence
Finding

This finding is effectively the same underlying issue: the generated configuration string includes live SMTP credentials and is then written to a .env file. In the context of a skill setup helper, users may trust the wizard and store sensitive mail credentials locally without realizing the exposure risk, making credential theft more likely through routine development practices.

Content

Scanner excerpt · config.js (reported line 101)May include surrounding context.

js
console.log(`  export SMTP_CONFIG='${JSON.stringify(smtpConfig)}'`);
    
    // 保存到 .env 文件
    const envPath = path.join(__dirname, '.env');
    fs.writeFileSync(envPath, `SMTP_CONFIG=${JSON.stringify(smtpConfig)}\n`);
    console.log(`\n💾 配置已保存到:${envPath}`);
  }

Known Vulnerable Dependency: nodemailer==6.10.1 — 12 advisory(ies): CVE-2026-82661 (Nodemailer: CRLF injection in Nodemailer List-* header comments allows arbitrary); GHSA-2x7j-588g-ccc2 (Nodemailer: Quadratic (O(n²)) time complexity in addressparser allows remote den); GHSA-8m3c-c648-2xjj (Nodemailer: resolveContent() on a MailMessage bypasses disableFileAccess/disable) +9 more

High
Category
Supply Chain
Confidence
98% confidence
Finding

The lockfile pins nodemailer to version 6.10.1, and the finding indicates multiple published advisories affecting that version, including header injection, denial of service, and security-control bypass issues. Because this is a dependency manifest rather than dead code, the vulnerable package is very likely to be installed and used by the skill at runtime, making this a true supply-chain vulnerability unless mitigations are separately proven.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: nodemailer==6.10.1 — 12 advisory(ies): CVE-2026-82661 (Nodemailer: CRLF injection in Nodemailer List-* header comments allows arbitrary); GHSA-2x7j-588g-ccc2 (Nodemailer: Quadratic (O(n²)) time complexity in addressparser allows remote den); GHSA-8m3c-c648-2xjj (Nodemailer: resolveContent() on a MailMessage bypasses disableFileAccess/disable) +9 more

High
Category
Supply Chain
Confidence
97% confidence
Finding

The project depends on nodemailer in a version range that can include known vulnerable releases, and this skill's stated purpose includes sending email, making the dependency directly relevant to runtime behavior. If a vulnerable version is installed, issues such as header injection, denial of service, or file/content access bypasses could be exploitable through crafted mail inputs or message construction.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · CRON-JOB.md (reported line 98)May include surrounding context.

md
# 添加新任务
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
CRON_LINE="30 9 * * 1-5 cd $SCRIPT_DIR && source .env && /opt/homebrew/bin/node index.js >> /tmp/astock-daily.log 2>&1"

# 添加到 crontab
(echo "$CURRENT_CRON"; echo "$CRON_LINE") | crontab -

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · fix-hosts.sh (reported line 35)May include surrounding context.

sh
# 添加新任务
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
CRON_LINE="30 9 * * 1-5 cd $SCRIPT_DIR && source .env && /opt/homebrew/bin/node index.js >> /tmp/astock-daily.log 2>&1"

# 添加到 crontab
(echo "$CURRENT_CRON"; echo "$CRON_LINE") | crontab -

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · setup-cron.sh (reported line 28)May include surrounding context.

sh
# 添加新任务
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
CRON_LINE="30 9 * * 1-5 cd $SCRIPT_DIR && source .env && /opt/homebrew/bin/node index.js >> /tmp/astock-daily.log 2>&1"

# 添加到 crontab
(echo "$CURRENT_CRON"; echo "$CRON_LINE") | crontab -

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · setup.sh (reported line 148)May include surrounding context.

sh
# 添加新任务
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
CRON_LINE="30 9 * * 1-5 cd $SCRIPT_DIR && source .env && /opt/homebrew/bin/node index.js >> /tmp/astock-daily.log 2>&1"

# 添加到 crontab
(echo "$CURRENT_CRON"; echo "$CRON_LINE") | crontab -

Credential Access

High
Category
Privilege Escalation
Confidence
99% confidence
Finding

At this point the script writes SMTP credentials into a .env file in plaintext. Secrets stored this way are easy to exfiltrate by any local process with access to the working directory, may be accidentally committed to source control, and can persist long after the user expects.

Content

Scanner excerpt · setup.sh (reported line 85)May include surrounding context.

sh
echo ""
echo "⚙️  正在保存配置..."

# 保存到 .env 文件
cat > .env << EOF
SMTP_CONFIG='$SMTP_CONFIG'
EOF

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The script stores entered email credentials in plaintext in .env and may also append them to shell startup files without warning about the sensitivity of those actions. Plaintext secret storage makes credential theft easier through local compromise, backups, shell history exposure via sourced environments, or accidental inclusion in version control.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
99% confidence
Finding

This finding reflects the same credential-write operation into .env, which contains the SMTP username and password. Persisting mail credentials in plaintext unnecessarily creates a durable credential exposure point and increases the blast radius of any local compromise.

Content

Scanner excerpt · setup.sh (reported line 86)May include surrounding context.

sh
echo "⚙️  正在保存配置..."

# 保存到 .env 文件
cat > .env << EOF
SMTP_CONFIG='$SMTP_CONFIG'
EOF

Credential Access

High
Category
Privilege Escalation
Confidence
98% confidence
Finding

The script confirms that configuration has been saved to .env, reinforcing that credentials are intentionally persisted in plaintext. In the context of an automation/setup script, this is especially dangerous because users may run it in project directories that are shared, backed up, or version-controlled.

Content

Scanner excerpt · setup.sh (reported line 90)May include surrounding context.

sh
SMTP_CONFIG='$SMTP_CONFIG'
EOF

echo "✅ 配置已保存到 .env 文件"

# 添加到 shell 配置文件
SHELL_RC=""

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This markdown file instructs users to run crontab -r, which deletes all cron jobs for the user, but the surrounding guidance does not clearly warn about the irreversible impact beyond a brief parenthetical. Under the markdown warning criteria, destructive behavior affecting system configuration should be explicitly disclosed so users understand the risk before running it.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This is a markdown file, so SQP-2 applies to user-facing documentation. The instructions explicitly tell the user to delete the old task before adding a new one, but they do not warn that openclaw cron rm is a destructive action that removes the existing schedule and may interrupt automation if re-creation fails.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The document instructs users to append entries to /etc/hosts using sudo, which makes persistent system-level networking changes with elevated privileges. Even if the goal is legitimate troubleshooting, the guidance lacks warnings about privilege use, rollback steps, and the risk of hard-coding DNS results that may become stale or redirect traffic incorrectly.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
89% confidence
Finding

This command uses sudo to modify /etc/hosts, a privileged system configuration file controlling name resolution. If copied without scrutiny, users grant elevated privileges to a shell command that permanently alters network behavior and could enable traffic redirection or operational breakage.

Content

Scanner excerpt · DNS-FIX.md (reported line 31)May include surrounding context.

或手动执行:

bash
sudo sh -c 'echo "47.246.165.89 smtp.qiye.aliyun.com" >> /etc/hosts'
sudo sh -c 'echo "47.246.165.89 smtp.mxhichina.com" >> /etc/hosts'

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
89% confidence
Finding

This is a second privileged /etc/hosts modification for another mail domain, carrying the same risk of persistent DNS override under root privileges. Hard-coded mail server IPs can also age poorly and silently redirect mail traffic if infrastructure changes.

Content

Scanner excerpt · DNS-FIX.md (reported line 32)May include surrounding context.

bash
sudo sh -c 'echo "47.246.165.89 smtp.qiye.aliyun.com" >> /etc/hosts'
sudo sh -c 'echo "47.246.165.89 smtp.mxhichina.com" >> /etc/hosts'

方案二:FlClash 规则配置

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The validation step sources the local .env file and immediately runs the application, which can expose sensitive credentials into the current shell and execute behavior dependent on secrets without any cautionary note. In a skill context, this is risky because users may run it blindly and leak or misuse SMTP credentials stored in .env.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dangerous_exec, suspicious.insecure_tls_verification

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
index.js:335

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
send-mail-applescript.js:32

HTTPS certificate verification is disabled.

Warn
Code
suspicious.insecure_tls_verification
Location
index.js:280

HTTPS certificate verification is disabled.

Warn
Code
suspicious.insecure_tls_verification
Location
test-smtp.js:14