{"data":{"skill":{"slug":"carbonstop-ccdb","name":"ccdb","icon":"📦","repo":"https://github.com/carbonstop/skills/tree/31e3661682bf6a179696bf80f5cec96214464e3d/skills/ccdb","status":"approved","author":"carbonstop","authorVersion":null,"skillstoreRevision":1},"audit":{"id":"8edee9ca-621e-4f91-9452-269228064d18","skill_id":"da0eae07-c9f8-4aa6-a319-651840f194a1","version":1,"content_hash":"v3:bce955595725177a570e87abdb3a4ceaa589ccf5:2e2defc2098257dba105bfabe7006d4d9f7ab59ed58c5edcf234ea6c5efbb0c9:c7b958fccf7f5c1afaffa9f5025a607b435701d9eafe5731ab1ae1205c913cc4:736b696c6c732f636172626f6e73746f702f63636462:7db3b25ba89cdd38901691d9c0e35ee1","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"The Ruby execution, hardcoded URL, API secret, and obfuscation alerts are false positives caused by Markdown notation, official documentation links, secure credential guidance, and Chinese text. Contextual review found two medium risks: an unpinned global package installation and unrestricted display of API-provided links.","remediation":[{"issue":"The installation command uses the mutable ccdb-cli@latest package reference with global scope.","severity":"medium","suggestion":"Pin a reviewed CLI version, verify its published integrity, avoid global installation when practical, and retain explicit user approval."},{"issue":"API-provided detailUrl and actionUrl values may become clickable links without a trusted-host restriction.","severity":"medium","suggestion":"Allow only documented CCDB and Carbon Agent hosts, reject unexpected hosts, and omit unsafe links from responses."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":12,"line_start":12},{"file":"SKILL.md","line_end":14,"line_start":14},{"file":"SKILL.md","line_end":19,"line_start":16},{"file":"SKILL.md","line_end":27,"line_start":19},{"file":"SKILL.md","line_end":27,"line_start":27},{"file":"SKILL.md","line_end":29,"line_start":29},{"file":"SKILL.md","line_end":31,"line_start":31},{"file":"SKILL.md","line_end":34,"line_start":34},{"file":"SKILL.md","line_end":43,"line_start":40},{"file":"SKILL.md","line_end":47,"line_start":43},{"file":"SKILL.md","line_end":47,"line_start":47},{"file":"SKILL.md","line_end":59,"line_start":57},{"file":"SKILL.md","line_end":59,"line_start":59},{"file":"SKILL.md","line_end":65,"line_start":65},{"file":"SKILL.md","line_end":66,"line_start":66},{"file":"SKILL.md","line_end":70,"line_start":67},{"file":"SKILL.md","line_end":71,"line_start":70},{"file":"SKILL.md","line_end":72,"line_start":71}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":21,"line_start":21},{"file":"SKILL.md","line_end":27,"line_start":27},{"file":"SKILL.md","line_end":71,"line_start":71}]},{"factor":"env_access","evidence":[{"file":"SKILL.md","line_end":31,"line_start":31}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Unpinned Global Package Installation","locations":[{"file":"SKILL.md","line_end":18,"line_start":14}],"confidence":0.96,"description":"The skill directs installation of ccdb-cli@latest with global scope. A mutable package release or lifecycle script can execute with the installer user's permissions.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The exact global installation command and mutable latest tag are explicit on line 17, although line 14 requires user approval."},{"title":"Unrestricted API-Provided Links","locations":[{"file":"SKILL.md","line_end":60,"line_start":57}],"confidence":0.91,"description":"The skill renders detailUrl and actionUrl values as clickable HTTP(S) links without a trusted-host restriction. A compromised response could direct users to phishing content.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"Lines 57 through 60 require displaying returned links and validate only the HTTP(S) scheme, while no expected-host check is specified."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":74,"audit_model":"codex","audited_at":"2026-09-10T08:50:56.375+00:00","created_at":"2026-09-10T09:04:16.025274+00:00","static_findings":[{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"通过 `ccdb-cli` 完成查询。宿主需要本地命令执行能力、网络访问和有效 CCDB 授权;安装 Skill 不会自动安装 CLI 或登录。","category":"external_commands","line_end":12,"severity":"medium","line_start":12},{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"先执行 `ccdb-cli --version` 检查是否已安装,可用时复用,不重复安装或登录。命令不存在且用户同意安装时执行:","category":"external_commands","line_end":14,"severity":"medium","line_start":14},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```sh","category":"external_commands","line_end":19,"severity":"medium","line_start":16},{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":27,"severity":"medium","line_start":19},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"默认环境为 production;只有用户明确使用测试环境时,使用 `--profile test` 或 `CCDB_PROFILE=test`。标准环境使用 CLI 预设;显式环境变量仍可覆盖地址和","category":"external_commands","line_end":27,"severity":"medium","line_start":27},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- 默认推荐 device OAuth。缺少有效凭证且用户同意登录后,执行 `ccdb-cli auth login`;由用户在浏览器打开显示的授权 URL 并同意授权。无浏览器终端加 `--no-b","category":"external_commands","line_end":29,"severity":"medium","line_start":29},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- API Key 是用户主动选择的备选。通过宿主的安全配置向 CLI 注入 `CCDB_API_KEY`,或使用 `ccdb-cli auth login --method api-key` 的不回","category":"external_commands","line_end":31,"severity":"medium","line_start":31},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"状态和诊断:`ccdb-cli auth status --json` 检查本地凭证,`ccdb-cli doctor --json` 检查发现端点,都不证明业务权限。按需执行,不为安装验收额外查询;","category":"external_commands","line_end":34,"severity":"medium","line_start":34},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```sh","category":"external_commands","line_end":43,"severity":"medium","line_start":40},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":47,"severity":"medium","line_start":43},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- 搜索默认 5 条,按需要调整(1~10),不遍历全库。CLI 支持 `--language zh|en`、`--accounting-type product|enterprise`、`--cou","category":"external_commands","line_end":47,"severity":"medium","line_start":47},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- 搜索结果:每个展示的因子名称使用可点击的 Markdown 链接,目标取自该因子的 `detailUrl`,不要只输出 ID 或把链接放在代码块里。","category":"external_commands","line_end":59,"severity":"medium","line_start":57},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- 受限数值:说明限制,并使用返回的 `guidance.actionUrl` 或该因子的 `detailUrl` 提供查看入口;不承诺登录、注册或付费后一定解锁。","category":"external_commands","line_end":59,"severity":"medium","line_start":59},{"id":"external_commands:SKILL.md:65:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `factorId` 始终按字符串原样传递,不转 Number。`******`、null、缺失值不是 0,不能用于计算或猜测;仅比较公开元数据,不调用旧免授权接口反查。","category":"external_commands","line_end":65,"severity":"medium","line_start":65},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- 返回 `guidance.code=ECOINVENT_VALUE_RESTRICTED` 时,说明当前接口不提供 ecoinvent 明文,引导前往 Carbon Agent 查看来源和适用范围","category":"external_commands","line_end":66,"severity":"medium","line_start":66},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- 保留原始数值、单位、来源及 `verified=false` 等限制。区分 CCDB 数据、用户给定值、估算值和外部来源;无 CCDB ID 的外部资料不能生成 CCDB 链接。","category":"external_commands","line_end":70,"severity":"medium","line_start":67},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `invalid_client` 请管理员核对所选环境的客户端登记与启用状态,不自行生成/猜测 client ID。刷新中断时可能已发生 Token 轮换,应重新登录,不重放旧 Refresh T","category":"external_commands","line_end":71,"severity":"medium","line_start":70},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- 当前 CLI 在系统凭证服务不可用且符合自动后备条件时使用本地加密文件,并记住该身份的选择;主密钥也在本机,保护弱于系统钥匙串。后备提示本身不是登录失败。仍报 `CREDENTIAL_STORE_","category":"external_commands","line_end":72,"severity":"medium","line_start":71},{"id":"network:SKILL.md:21:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"npm 版需要 Node.js 22+;不使用 Node.js 时,从 [官方最新 Release](https://github.com/carbonstop/ccdb-cli/releases/l","category":"network","line_end":21,"severity":"low","line_start":21},{"id":"network:SKILL.md:27:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"默认环境为 production;只有用户明确使用测试环境时,使用 `--profile test` 或 `CCDB_PROFILE=test`。标准环境使用 CLI 预设;显式环境变量仍可覆盖地址和","category":"network","line_end":27,"severity":"low","line_start":27},{"id":"network:SKILL.md:71:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- 当前 CLI 在系统凭证服务不可用且符合自动后备条件时使用本地加密文件,并记住该身份的选择;主密钥也在本机,保护弱于系统钥匙串。后备提示本身不是登录失败。仍报 `CREDENTIAL_STORE_","category":"network","line_end":71,"severity":"low","line_start":71},{"id":"env_access:SKILL.md:31:generic-api-secret-keys","file":"SKILL.md","pattern":"Generic API/secret keys","snippet":"- API Key 是用户主动选择的备选。通过宿主的安全配置向 CLI 注入 `CCDB_API_KEY`,或使用 `ccdb-cli auth login --method api-key` 的不回","category":"env_access","line_end":31,"severity":"high","line_start":31},{"id":"obfuscation:SKILL.md:1:heuristic-high-file-entropy-7-72-bits-possible-b","file":"SKILL.md","pattern":"[HEURISTIC] High file entropy (7.72 bits) - possible binary/encrypted content","snippet":"File: SKILL.md","category":"obfuscation","line_end":1,"severity":"high","line_start":1}],"finding_verdicts":[{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","reason":"Line 12 uses Markdown inline code to name ccdb-cli and describes required capabilities; it contains no Ruby backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","reason":"Line 14 formats a fixed version-check command as inline documentation; no Ruby expression or dynamic shell construction appears.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","reason":"Lines 16 through 19 are a Markdown shell fence, not Ruby backtick syntax; the package-installation risk is assessed separately as a semantic finding.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","reason":"Line 19 closes a Markdown code fence and does not execute a shell or Ruby expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","reason":"Line 27 uses inline code for fixed profile and environment configuration names; it does not contain executable backtick syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","reason":"Line 29 documents fixed OAuth login options with explicit user consent and contains no dynamic shell evaluation.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","reason":"Line 31 names a credential variable and a fixed login method in Markdown while requiring secure, non-echoed input.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"Line 34 documents fixed read-only status and diagnostic commands; Markdown backticks do not perform execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","reason":"Lines 40 through 43 form an illustrative shell code block using a fixed CLI, not Ruby backtick execution.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","reason":"Line 43 is only the closing delimiter of a Markdown code fence.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","reason":"Line 47 presents supported CLI option names as inline code and does not evaluate them through Ruby or a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","reason":"Line 57 marks the detailUrl response field as inline code; no command execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","reason":"Line 59 names API response fields in Markdown and contains no executable command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:65:ruby-shell-backtick-execution","reason":"Line 65 formats field names and sentinel values for data-handling guidance; it does not execute code.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","reason":"Line 66 formats an API error code and response fields as inline code, with no shell or Ruby execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","reason":"Line 67 uses inline code for the verified field and provides provenance guidance rather than executable instructions.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","reason":"Line 70 formats an error code and token term as documentation; no command or dynamic evaluation exists.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","reason":"Lines 71 and 72 use inline code for an error and a fixed logout command; they do not contain Ruby backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:21:hardcoded-url","reason":"Line 21 links to the official carbonstop ccdb-cli GitHub repository and release page for documented installation resources.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:27:hardcoded-url","reason":"Line 27 links to the official repository configuration document and does not send data to the URL.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:71:hardcoded-url","reason":"Line 71 links to official ccdb-cli documentation for troubleshooting and does not initiate a network request.","verdict":"false_positive","confidence":0.99},{"id":"env_access:SKILL.md:31:generic-api-secret-keys","reason":"Line 31 only documents secure injection or non-echoed entry of a user-selected API key; it neither reads nor exposes a secret.","verdict":"false_positive","confidence":0.99},{"id":"obfuscation:SKILL.md:1:heuristic-high-file-entropy-7-72-bits-possible-b","reason":"SKILL.md is readable Chinese Markdown throughout; its character distribution explains the entropy score, with no binary or encrypted payload.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[{"title":"Unpinned Global Package Installation","severity":"medium","locations":[{"file":"SKILL.md","line_end":18,"line_start":14}],"confidence":0.96,"description":"The skill directs installation of ccdb-cli@latest with global scope. A mutable package release or lifecycle script can execute with the installer user's permissions.","confidence_reasoning":"The exact global installation command and mutable latest tag are explicit on line 17, although line 14 requires user approval."},{"title":"Unrestricted API-Provided Links","severity":"medium","locations":[{"file":"SKILL.md","line_end":60,"line_start":57}],"confidence":0.91,"description":"The skill renders detailUrl and actionUrl values as clickable HTTP(S) links without a trusted-host restriction. A compromised response could direct users to phishing content.","confidence_reasoning":"Lines 57 through 60 require displaying returned links and validate only the HTTP(S) scheme, while no expected-host check is specified."}],"subject_marketplace_commit_sha":"bce955595725177a570e87abdb3a4ceaa589ccf5","subject_content_hash":"2e2defc2098257dba105bfabe7006d4d9f7ab59ed58c5edcf234ea6c5efbb0c9","subject_tree_hash":"c7b958fccf7f5c1afaffa9f5025a607b435701d9eafe5731ab1ae1205c913cc4","subject_plugin_path":"skills/carbonstop/ccdb","audit_payload_hash":"7db3b25ba89cdd38901691d9c0e35ee1","confirmed_risk_level":"medium","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"bce955595725177a570e87abdb3a4ceaa589ccf5","contentHash":"2e2defc2098257dba105bfabe7006d4d9f7ab59ed58c5edcf234ea6c5efbb0c9","treeHash":"c7b958fccf7f5c1afaffa9f5025a607b435701d9eafe5731ab1ae1205c913cc4","pluginPath":"skills/carbonstop/ccdb","auditPayloadHash":"7db3b25ba89cdd38901691d9c0e35ee1"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/carbonstop-ccdb/audits/1/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":2,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}