T09 · Insecure Skill Coding Practices
- Location
analyzer.py:111- Finding
TLS certificate verification is explicitly disabled for security advisory requests
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a plausible skill-safety scanner, but its install and network-check behavior can make its security results untrustworthy.
Review this carefully before installing. The core idea is legitimate, but do not rely on its verdicts until TLS verification is fixed, scan failures are reported as incomplete instead of clean, and installation paths are pinned or checksum-verified. Run it in a constrained environment and avoid following the direct-download execution instructions from a mutable branch.
analyzer.py:111TLS certificate verification is explicitly disabled for security advisory requests
README.md:68Documentation creates an unpinned remote payload retrieval and execution path
analyzer.py:201Security scan failures are suppressed and converted into incomplete or zero-risk findings
requirements.txt:2Third-party dependency is unbounded and is not covered by the analyzer’s dependency checks
The skill's stated purpose is safety vetting, but the documented behavior includes undeclared outbound network access, filesystem traversal/cache writes, and the finding notes insecure TLS handling not reflected in the description or permissions. Description-behavior mismatch is dangerous because users may trust a 'security' skill more than normal, while hidden or under-disclosed capabilities expand attack surface and can enable data leakage or tampered scan results.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
],
'data': [
r'os\.environ',
r'process\.env',
r'os\.getenv\(',
r'os\.putenv\(',
],
Skill grants unrestricted tool access without appropriate constraints. An agent with unfettered tool access can perform arbitrary actions including file modification, network requests, and code execution.
## Why This Matters
AI agents run with elevated permissions and can:
- Execute arbitrary commands
- Access file systems
- Make network requests
- Read environment variables
Skill grants unrestricted tool access without appropriate constraints. An agent with unfettered tool access can perform arbitrary actions including file modification, network requests, and code execution.
## Why This Matters
AI agents run with elevated permissions and can:
- Execute arbitrary commands
- Access file systems
- Make network requests
- Read environment variables
The README states that SSL verification can be disabled, which normalizes an unsafe troubleshooting step for a security-focused tool. Even though it says 'not recommended for production,' encouraging this without strong guidance can lead users to disable TLS checks and become vulnerable to man-in-the-middle attacks or tampered advisory responses.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
## 相关链接
- ClawdHub (https://clawhub.com) - Skill 市场
- GitHub Advisory API (https://api.github.com/advisories)
- OpenClaw 文档 (https://docs.openclaw.ai)
---
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
## 相关链接
- ClawdHub (https://clawhub.com) - Skill 市场
- GitHub Advisory API (https://api.github.com/advisories)
- OpenClaw 文档 (https://docs.openclaw.ai)
---
The skill describes behaviors that imply file reads, file writes, network access, and shell usage, but it does not declare any explicit tool scope such as permissions or allowed-tools. This creates a transparency and governance gap: an installer or orchestrator cannot reliably enforce least privilege, and users may authorize a skill without understanding its effective capabilities.
The trigger regex is broad and can match common installation or safety-related phrasing outside the narrow context of deliberate skill vetting. Over-broad automatic activation is risky for a skill with network, filesystem, or shell-related behavior because it may run unexpectedly on unrelated user requests and perform side effects without clear intent.
This skill intentionally contacts an external service (GitHub Advisory API), which is consistent with vulnerability lookups, but it still represents external transmission and should be treated as a real security-relevant behavior. In a security-vetting context this is less suspicious than arbitrary exfiltration, yet it can still leak metadata about what is being scanned and creates dependency on remote responses.
使用 GitHub Advisory API 获取真实漏洞数据,不阻塞安装流程。
**API**: `https://api.github.com/advisories`
**认证**: 无需 Token(匿名 60次/小时)
**TTL**: 本地缓存 24 小时
Referencing 'npx skills' without a pinned version allows the latest published package to be resolved at install time, which introduces supply-chain risk. If the upstream package is compromised or a breaking change is introduced, the verifier workflow could execute unreviewed code unexpectedly.
The top-level description states in Chinese that the skill automatically analyzes skill safety, while the rest of the program and CLI are in English. This mixed-language presentation creates a locale/language policy concern because it imposes a specific language in user-facing natural language without any opt-in or documented regional justification.
The hardcoded GitHub API endpoint confirms external transmission behavior in a tool that primarily analyzes local content. This can leak usage patterns, create network dependency during security review, and allow remote influence over results, especially because the implementation later disables TLS certificate validation.
def __init__(self, cache_manager: CacheManager):
self.cache = cache_manager
self.api_url = 'https://api.github.com/advisories'
self.advisories = None
def fetch_advisories(self, timeout: int = 5) -> List[Dict]:
The analyzer makes live outbound requests to GitHub's Advisory API during local skill analysis, which introduces unnecessary external communication and metadata leakage about user activity or analyzed packages. In a security-vetting tool, unexpected network access expands the trust boundary and creates privacy, availability, and supply-chain concerns if the remote source is unavailable or manipulated.
该文件内容明确为中文版本,且顶部导航仅在文档层面区分中英文,没有说明技能是否会根据用户偏好选择语言。若该 README 被用作技能说明的一部分,可能构成未获用户明确选择的语言/区域偏好约束。
The document presents user-facing content in both English and Chinese, but does not state whether the skill will respond in the user's preferred language or provide an opt-in for locale selection. This can conflict with language/locale policy expectations when a skill implicitly forces or assumes a language presentation style.
The top-level documentation says the analyzer performs 'Socket 扫描' alongside advisory and code-pattern analysis. The implementation only scans files with regexes, reads package manifests, and fetches GitHub advisories; there is no socket enumeration or connection scanning logic anywhere in the file.
The dependency is specified as requests>=2.28.0 rather than being pinned to an exact version, which makes builds non-reproducible and can allow installation of an unexpected or newly vulnerable release. In a security-focused skill, this weakens supply-chain assurance because reviewers cannot reliably determine which version will be installed in different environments.
# Requirements
requests>=2.28.0
Because the manifest does not pin requests to a specific reviewed version, it is impossible to verify whether the installed package includes fixes for known advisories. This creates avoidable uncertainty in dependency risk and could expose deployments to known requests flaws depending on resolver behavior and installation time.
No suspicious patterns detected.