CMCC Digital Credential
Security checks across static analysis, malware telemetry, and agentic risk
Overview
The skill mostly matches its CMCC authorization purpose, but it persistently stores and can print the secret appKey, so its credential handling needs review before use.
Before installing, confirm you trust the CMCC endpoint and fixed template/appName, use a dedicated limited-scope appId/appKey, protect or delete memory/cmcc-digital-credential.json after use, do not print the appKey in chats or logs, and only configure notifyUrl callbacks to endpoints you control.
Static analysis
No static analysis findings were reported for this release.
VirusTotal
VirusTotal findings are pending for this skill version.
Risk analysis
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
Your CMCC appKey could remain on disk or be revealed in outputs; anyone who obtains it may be able to generate signed CMCC requests.
The code persists the credential dictionary, including appKey, to a local memory file and can print the full credential object, so the secret may enter agent context, logs, or remain reusable across tasks.
MEMORY_PATH = "memory/cmcc-digital-credential.json" ... json.dump(credentials, f, indent=2, ensure_ascii=False) ... print(json.dumps(credentials, indent=2, ensure_ascii=False))
Use a dedicated least-privilege credential, restrict file permissions, avoid printing appKey, add a delete/rotation path, and prefer a managed secret store over plaintext memory.
Installing and using the skill gives the agent access to credentials that can bind an app and authorize CMCC credential operations.
The skill requires delegated CMCC application credentials to request authorization. This is expected for the integration, but it is a real permission boundary users should recognize.
parser.add_argument('--appId', required=True, help='Application ID') ... parser.add_argument('--appKey', required=True, help='Application secret key')Use credentials created specifically for this skill, verify their scope with CMCC, rotate them if exposed, and avoid reusing production-wide secrets.
If a notifyUrl is supplied, authorization results may be sent to that callback endpoint.
The optional notifyUrl is sent to the CMCC authorization API as a callback destination. This is user-controlled and purpose-aligned, but it creates a webhook data boundary.
if notify_url:
body["notifyUrl"] = notify_urlOnly use notifyUrl values you control and trust, and avoid sending authorization callbacks to shared or third-party endpoints unless required.
Users may need to install a crypto package manually, and installing the wrong or unpinned package can create reliability or supply-chain risk.
The script depends on a Crypto/AES package, but the provided install specifications declare no dependency or pinned package source, which creates setup ambiguity.
from Crypto.Cipher import AES
Declare and pin the intended dependency, such as PyCryptodome, and document the trusted installation source.
