Back to skill

Security audit

Ssl Certificate Monitor

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent SSL certificate checker, but its validation and compliance claims are materially stronger than what the code actually verifies.

Review before installing if you need real TLS security validation or compliance evidence. This tool is suitable only for basic certificate retrieval, metadata, and expiration checks unless the validation logic is fixed to verify hostname and trust chain.

Vulnerability Patterns
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/main.py:18
Finding

TLS certificate verification is disabled while the command reports successful validation

Content
View full analysis
Optional[bytes]: """Get SSL certificate from host.""" try: context = ssl.create_default_context() context.check_hostname = False context.verify_mode = ssl.CERT_NONE with socket.create_connection((hostname, port), timeout=timeout) as sock: with context.wrap_socket(sock, server_hostname=hostname) as ssock: cert_der = ssock.getpeercert(binary_form=True) return cert_der except Exception as e: return None ``` The unauthenticated certificate retrieval is subsequently presented as validation: ```python def validate_command(args): """Handle validate command (basic chain validation).""" # Note: This is a simplified validation result = check_certificate(args.domain, args.port) if result['status'] not in ['valid', 'expiring_soon']: print(f"❌ Cannot validate: {result['error']}") return print(f"🔒 Basic validation for {result['domain']}:{result['port']}") print(f"✓ Certificate retrieved successfully") print(f"✓ Certificate is {'expired' if result['status'] == 'expired' else 'currently valid'}") print(f"✓ Issuer: {result['issuer']}") if result['days_remaining'] is not None: if result['days_remaining'] > 30: print(f"✓ Expiration: {result['days_remaining']} days remaining (good)") elif result['days_remaining'] > 0: print(f"⚠ Expiration: {result['days_remaining']} days remaining (renew soon)") else: print(f"✗ Expiration: Certificate expired {abs(result['days_remaining'])} days ago") if not CRYPTOGRAPHY_AVAILABLE: print("⚠ Advanced val ...[truncated 2761 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
SKILL.md:164
Finding

Third-party dependency installation is unpinned and lacks integrity verification

Content
View full analysis
Remediation
View remediation
\ --hash=sha256: ``` 3. Generate hashes for every supported distribution artifact and install with hash enforcement: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` 4. Review and update pinned versions through a controlled dependency-update process that includes vulnerability scanning and regression testing. 5. Recommend installation in an isolated virtual environment rather than into the system Python environment. 6. Where operationally appropriate, document the approved package index and use a trusted internal mirror or repository policy. 7. Avoid presenting `pip3 install cryptography` as the primary production installation method once a locked dependency file is available. ]]>
Vulnerability Patterns
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The skill materially overstates its security and compliance capabilities, especially by presenting 'validate' functionality as certificate validation while the underlying behavior reportedly disables SSL verification and performs only superficial checks. This can create false assurance, causing users to trust invalid, misissued, or hostname-mismatched certificates and to miss real security issues during monitoring or audits.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill description claims monitoring for SSL/TLS security issues and compliance, but the implementation primarily fetches certificates and reports expiration metadata. This mismatch can mislead operators into believing broader certificate security and compliance checks are being performed when they are not, creating a false sense of assurance and leaving hostname validation, trust validation, weak algorithm detection, and policy/compliance failures unnoticed.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
99% confidence
Finding

The validate command is presented as certificate validation, but get_certificate() explicitly disables hostname checking and certificate verification via check_hostname=False and verify_mode=ssl.CERT_NONE. As a result, the tool may report successful 'validation' for untrusted, self-signed, mismatched, or attacker-supplied certificates, which is dangerous if users rely on this output for security decisions.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.