Back to skill

Security audit

CertainLogic QM Timechain

Security checks for vulnerabilities and agentic risk

Overview

The skill is a disclosed external data-source integration, but it exposes broad production agent-trace access and makes under-supported cryptographic trust claims without enough scoping or privacy safeguards.

Review before installing in a shared QM deployment. Treat this as a third-party production-trace data source: restrict who can use the API key, confirm the corpus is sanitized and lawfully shareable, require admin approval for workspace-wide access, and do not rely on the documented hash-link check as full cryptographic authenticity proof without an independently specified verification scheme.

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 (1)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:72
Finding

Incomplete Cryptographic Verification Allows Fabricated Records to Be Trusted

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 72-80
Vulnerability Type: Incomplete integrity and authenticity verification
Risk Level: Medium

Vulnerable Code

python
import requests, hashlib, json

# Verify chain integrity
API = "https://certainlogic.ai/api"
HEADERS = {"X-API-Key": "***"}

ring = requests.get(f"{API}/ring/{hash}", headers=HEADERS).json()
prev = requests.get(f"{API}/ring/{ring['metadata']['prev_hash']}", headers=HEADERS).json()

assert prev['metadata']['ring_hash'] == ring['metadata']['prev_hash']

Technical Analysis

The documented procedure claims to verify HMAC-SHA256 chain integrity, but it only compares two metadata values returned by the same remote API. It does not:

  • Recompute an HMAC over the ring payload.
  • Compare the result using a trusted verification key.
  • Verify that the payload corresponds to its declared ring hash.
  • Authenticate the requested ring identifier.
  • Anchor the chain to a separately trusted root or checkpoint.
  • Validate the complete chain or the canonical serialization of signed data.

The imported hashlib module is not used, and no HMAC operation is performed. Consequently, the equality assertion proves only that two API responses are internally consistent. It does not prove that either response is authentic or untampered.

Because both compared values originate from the same trust domain, a compromised or malicious API can manufacture a ring and predecessor whose fields satisfy the assertion. Transport security protects the connection to the configured endpoint but does not establish the historical authenticity of records returned by that endpoint.

Attack Path

  1. An attacker compromises the configured API, its backend data, or another component capable of controlling API responses.
  2. The attacker creates a fabricated execution ring containing manipulated agent inputs, outputs, tool calls, or audit metadata.
  3. T ...[truncated 1064 chars]
Remediation
View remediation

Remediation Suggestions

  1. Define and publish a canonical serialization format for every field covered by the cryptographic proof.
  2. Recompute the payload hash locally and verify that it matches the declared ring hash.
  3. Perform actual authenticity verification using a separately trusted key. If clients must verify records without possessing a shared HMAC secret, use a suitable digital-signature scheme and distribute the public verification key through a trusted channel.
  4. Compare signatures or MAC values with a constant-time comparison function.
  5. Anchor verification to a trusted chain root, signed checkpoint, or independently distributed head value rather than trusting all linkage values returned by the same API.
  6. Validate the requested ring identifier, predecessor relationship, response schema, hash format, and all required fields before accepting a record.
  7. Fail closed on malformed responses, missing proofs, network errors, unexpected redirects, or verification failures.
  8. Avoid describing predecessor-field equality as HMAC-SHA256 verification. Clearly document the distinction between structural linkage checks and cryptographic authenticity verification.
  9. Keep API requests restricted to an approved HTTPS endpoint so URL misconfiguration cannot disclose the API key or search data to an unintended server.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (2)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill explicitly advertises broad access to 75K+ real agent execution traces across QM workspaces, but provides no guardrails around sensitive data, tenant isolation, consent, redaction, or privacy review. In the context of agent traces—which commonly contain prompts, outputs, tool inputs, internal reasoning artifacts, and potentially credentials or regulated data—this creates a credible risk of unauthorized exposure or misuse of sensitive operational data.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

The skill instructs agents to send user queries and authentication material to an external API endpoint, which is an external data transmission path. While external API use is not inherently malicious, here it is paired with access to production execution traces, so prompts or retrieved data may leave the local QM environment and be processed by a third party without any mention of minimization, approval, or egress controls.

Content

Scanner excerpt · SKILL.md (reported line 63)May include surrounding context.

Your agent runs:

bash
curl -fsS -X POST \
  -H "X-API-Key: $CERTAINLOGIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"error recovery in multi-tool code generation","limit":3}' \