T09 · Insecure Skill Coding Practices
- Location
scanner.py:790- Finding
Default scanning omits and suppresses security findings in Skill instruction files
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The package appears to be a security scanner rather than malware, but it has serious review-worthy gaps that can understate risk and may expose scanned source in optional LLM use.
Install only after reviewing the scanner limitations. Use it as a heuristic aid, not as a final security gate; explicitly include SKILL.md and other instruction files in scans, avoid relying on context-based downgrades, and do not enable or import LLM analysis on private code unless you accept third-party disclosure of scanned snippets.
scanner.py:790Default scanning omits and suppresses security findings in Skill instruction files
context_aware_filter.py:46Attacker-controlled context can downgrade confirmed malicious behavior
scanner.py:174Broken optional LLM integration converts analysis errors into undetected results
src/engines/llm_engine.py:42LLM engine can transmit scanned source code and embedded secrets to a third party without adequate safeguards
The scanner is presented as broad protection for prompt injection, credential theft, exfiltration, and attack chains, but the indicated behavior primarily suppresses or filters detections with only narrow heuristics. This creates a false sense of assurance in a security context, which is more dangerous than an ordinary product-description mismatch.
The scanner is presented as broad protection for prompt injection, credential theft, exfiltration, and attack chains, but the indicated behavior primarily suppresses or filters detections with only narrow heuristics. This creates a false sense of assurance in a security context, which is more dangerous than an ordinary product-description mismatch.
The scanner is presented as broad protection for prompt injection, credential theft, exfiltration, and attack chains, but the indicated behavior primarily suppresses or filters detections with only narrow heuristics. This creates a false sense of assurance in a security context, which is more dangerous than an ordinary product-description mismatch.
The scanner is presented as broad protection for prompt injection, credential theft, exfiltration, and attack chains, but the indicated behavior primarily suppresses or filters detections with only narrow heuristics. This creates a false sense of assurance in a security context, which is more dangerous than an ordinary product-description mismatch.
The scanner is presented as broad protection for prompt injection, credential theft, exfiltration, and attack chains, but the indicated behavior primarily suppresses or filters detections with only narrow heuristics. This creates a false sense of assurance in a security context, which is more dangerous than an ordinary product-description mismatch.
The scanner is presented as broad protection for prompt injection, credential theft, exfiltration, and attack chains, but the indicated behavior primarily suppresses or filters detections with only narrow heuristics. This creates a false sense of assurance in a security context, which is more dangerous than an ordinary product-description mismatch.
The scanner is presented as broad protection for prompt injection, credential theft, exfiltration, and attack chains, but the indicated behavior primarily suppresses or filters detections with only narrow heuristics. This creates a false sense of assurance in a security context, which is more dangerous than an ordinary product-description mismatch.
The scanner is presented as broad protection for prompt injection, credential theft, exfiltration, and attack chains, but the indicated behavior primarily suppresses or filters detections with only narrow heuristics. This creates a false sense of assurance in a security context, which is more dangerous than an ordinary product-description mismatch.
The scanner is presented as broad protection for prompt injection, credential theft, exfiltration, and attack chains, but the indicated behavior primarily suppresses or filters detections with only narrow heuristics. This creates a false sense of assurance in a security context, which is more dangerous than an ordinary product-description mismatch.
The scanner is presented as broad protection for prompt injection, credential theft, exfiltration, and attack chains, but the indicated behavior primarily suppresses or filters detections with only narrow heuristics. This creates a false sense of assurance in a security context, which is more dangerous than an ordinary product-description mismatch.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# 敏感路径/文件 (高风险)
SENSITIVE_PATHS = [
# SSH 凭据
r'\.ssh/id_rsa', r'\.ssh/id_ed25519', r'\.ssh/authorized_keys',
r'\.ssh/known_hosts',
# 云凭据
r'\.aws/credentials', r'\.aws/config', r'aws_access_key', r'aws_secret',
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# 敏感路径/文件 (高风险)
SENSITIVE_PATHS = [
# SSH 凭据
r'\.ssh/id_rsa', r'\.ssh/id_ed25519', r'\.ssh/authorized_keys',
r'\.ssh/known_hosts',
# 云凭据
r'\.aws/credentials', r'\.aws/config', r'aws_access_key', r'aws_secret',
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# 敏感路径/文件 (高风险)
SENSITIVE_PATHS = [
# SSH 凭据
r'\.ssh/id_rsa', r'\.ssh/id_ed25519', r'\.ssh/authorized_keys',
r'\.ssh/known_hosts',
# 云凭据
r'\.aws/credentials', r'\.aws/config', r'aws_access_key', r'aws_secret',
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
SENSITIVE_PATHS = [
# SSH 凭据
r'\.ssh/id_rsa', r'\.ssh/id_ed25519', r'\.ssh/authorized_keys',
r'\.ssh/known_hosts',
# 云凭据
r'\.aws/credentials', r'\.aws/config', r'aws_access_key', r'aws_secret',
r'\.azure/', r'azure_credentials',
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
r'\.ssh/id_rsa', r'\.ssh/id_ed25519', r'\.ssh/authorized_keys',
r'\.ssh/known_hosts',
# 云凭据
r'\.aws/credentials', r'\.aws/config', r'aws_access_key', r'aws_secret',
r'\.azure/', r'azure_credentials',
r'\.gcloud/', r'google_credentials',
# Git/Docker 凭据
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
r'\.ssh/id_rsa', r'\.ssh/id_ed25519', r'\.ssh/authorized_keys',
r'\.ssh/known_hosts',
# 云凭据
r'\.aws/credentials', r'\.aws/config', r'aws_access_key', r'aws_secret',
r'\.azure/', r'azure_credentials',
r'\.gcloud/', r'google_credentials',
# Git/Docker 凭据
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
r'\.ssh/known_hosts',
# 云凭据
r'\.aws/credentials', r'\.aws/config', r'aws_access_key', r'aws_secret',
r'\.azure/', r'azure_credentials',
r'\.gcloud/', r'google_credentials',
# Git/Docker 凭据
r'\.git-credentials', r'\.netrc', r'\.docker/config.json',
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
r'\.azure/', r'azure_credentials',
r'\.gcloud/', r'google_credentials',
# Git/Docker 凭据
r'\.git-credentials', r'\.netrc', r'\.docker/config.json',
# 配置文件中的凭据
r'\.env', r'\.env\.\w+', r'config.*\.json', r'credentials\.json',
r'apikey', r'api_key', r'secret', r'token',
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
r'\.azure/', r'azure_credentials',
r'\.gcloud/', r'google_credentials',
# Git/Docker 凭据
r'\.git-credentials', r'\.netrc', r'\.docker/config.json',
# 配置文件中的凭据
r'\.env', r'\.env\.\w+', r'config.*\.json', r'credentials\.json',
r'apikey', r'api_key', r'secret', r'token',
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
r'\.azure/', r'azure_credentials',
r'\.gcloud/', r'google_credentials',
# Git/Docker 凭据
r'\.git-credentials', r'\.netrc', r'\.docker/config.json',
# 配置文件中的凭据
r'\.env', r'\.env\.\w+', r'config.*\.json', r'credentials\.json',
r'apikey', r'api_key', r'secret', r'token',
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
r'\.azure/', r'azure_credentials',
r'\.gcloud/', r'google_credentials',
# Git/Docker 凭据
r'\.git-credentials', r'\.netrc', r'\.docker/config.json',
# 配置文件中的凭据
r'\.env', r'\.env\.\w+', r'config.*\.json', r'credentials\.json',
r'apikey', r'api_key', r'secret', r'token',
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
r'\.azure/', r'azure_credentials',
r'\.gcloud/', r'google_credentials',
# Git/Docker 凭据
r'\.git-credentials', r'\.netrc', r'\.docker/config.json',
# 配置文件中的凭据
r'\.env', r'\.env\.\w+', r'config.*\.json', r'credentials\.json',
r'apikey', r'api_key', r'secret', r'token',
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
r'\.azure/', r'azure_credentials',
r'\.gcloud/', r'google_credentials',
# Git/Docker 凭据
r'\.git-credentials', r'\.netrc', r'\.docker/config.json',
# 配置文件中的凭据
r'\.env', r'\.env\.\w+', r'config.*\.json', r'credentials\.json',
r'apikey', r'api_key', r'secret', r'token',
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
(r'cat\s+.*\.(json|env|yaml|yml|cfg|conf)', '读取配置文件'),
(r'cat\s+.*\$HOME', '读取用户目录文件'),
(r'getenv\(|os\.environ', '读取环境变量'),
(r'keyring\.|keyring\.get_password', '读取系统密钥环'),
(r'passlib|pysftp|paramiko', '凭据使用库'),
]
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
(r'cat\s+.*\.(json|env|yaml|yml|cfg|conf)', '读取配置文件'),
(r'cat\s+.*\$HOME', '读取用户目录文件'),
(r'getenv\(|os\.environ', '读取环境变量'),
(r'keyring\.|keyring\.get_password', '读取系统密钥环'),
(r'passlib|pysftp|paramiko', '凭据使用库'),
]
Detected: suspicious.dangerous_exec, suspicious.dynamic_code_execution