{"data":{"skill":{"slug":"nomadamas-han-river-water-level","name":"han-river-water-level","icon":"📦","repo":"https://github.com/nomadamas/k-skill/tree/9766d20fb1fe1a5eb1d10ef5ff9872c8d6fc4985/han-river-water-level","status":"approved","author":"nomadamas","authorVersion":null,"skillstoreRevision":1,"license":"MIT"},"licenseCorrection":null,"audit":{"id":"8cfb8c6e-8f7f-4f9a-884f-355a7911781e","skill_id":"cb728a54-8944-4aa1-8265-29ef78fd1825","version":1,"content_hash":"v3:c993c6abcbffafea2683d7748b53b3dfaf438415:681820504bfd58a845d55eeb7ccb26bd7c8a528eedfb8ea76eac7940f237c349:e3cd72ab637d7a4d159fbae4922550a9da326c1488e90c3de075643d77051ed4:736b696c6c732f6e6f6d6164616d61732f68616e2d72697665722d77617465722d6c6576656c:7c6084e4c9aff22601fd1f7436f17e3c","risk_level":"high","is_blocked":false,"safe_to_publish":false,"analysis_status":"ok","agent_auto_install_policy":"confirmation_required","manual_install_policy":"allowed","summary":"All 12 static findings are false positives: documented lookup URLs, a server-side key reference, Markdown fences, and readable multilingual text. Separate semantic risks involve automatically executing a mutable npm package and requesting updates beyond this skill. No evidence found of credential theft, hidden payloads, or explicit audit manipulation in the supplied files; external package behavior was not inspected.","remediation":[{"issue":"The required bootstrap executes a mutable npm package and treats its output as primary instructions.","severity":"high","suggestion":"Bundle the instructions locally, or require approval before executing a reviewed, exact package version with verified integrity."},{"issue":"The update instruction extends to the CLI and other coding-agent skill installations.","severity":"medium","suggestion":"Remove automatic update guidance from the lookup workflow; require explicit approval and clearly scoped targets for any updates."}],"risk_factor_evidence":[{"factor":"network","evidence":[{"file":"instruction.md","line_end":33,"line_start":33},{"file":"instruction.md","line_end":40,"line_start":40},{"file":"instruction.md","line_end":59,"line_start":59},{"file":"SKILL.md","line_end":35,"line_start":35}]},{"factor":"env_access","evidence":[{"file":"instruction.md","line_end":76,"line_start":76}]},{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":21,"line_start":19},{"file":"SKILL.md","line_end":25,"line_start":21},{"file":"SKILL.md","line_end":27,"line_start":25},{"file":"SKILL.md","line_end":31,"line_start":27},{"file":"SKILL.md","line_end":33,"line_start":31},{"file":"SKILL.md","line_end":35,"line_start":33}]}],"critical_findings":[],"high_findings":[{"title":"Automatic Execution of a Mutable Remote Package","locations":[{"file":"SKILL.md","line_end":26,"line_start":15}],"confidence":0.96,"description":"The required first step runs 'npx -y @nomadamas/k-skill@0 instruct han-river-water-level' and prioritizes its output. The mutable version selector and automatic acceptance permit unreviewed package code and instructions to run with the agent's local permissions.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"The command and trust directive are explicit, and @0 does not pin an exact release. External package contents were not inspected."}],"medium_findings":[{"title":"Update Directive Exceeds the Lookup Task","locations":[{"file":"SKILL.md","line_end":33,"line_start":29}],"confidence":0.91,"description":"The instruction says to keep 'every coding-agent skill install current' and supplies an npm update command. Following it could modify unrelated installations without task-specific approval.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The stated update scope explicitly includes other skill installations. Actual filesystem changes depend on the external CLI, which was not executed."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":3,"total_lines":136,"audit_model":"codex","audited_at":"2026-11-08T14:42:37.147+00:00","created_at":"2026-11-09T15:35:19.348626+00:00","static_findings":[{"id":"network:instruction.md:33:hardcoded-url","file":"instruction.md","pattern":"Hardcoded URL","snippet":"curl -fsS --get 'https://k-skill-proxy.nomadamas.org/v1/han-river/water-level' \\","category":"network","line_end":33,"severity":"low","line_start":33},{"id":"network:instruction.md:40:hardcoded-url","file":"instruction.md","pattern":"Hardcoded URL","snippet":"curl -fsS --get 'https://k-skill-proxy.nomadamas.org/v1/han-river/water-level' \\","category":"network","line_end":40,"severity":"low","line_start":40},{"id":"network:instruction.md:59:hardcoded-url","file":"instruction.md","pattern":"Hardcoded URL","snippet":"curl -fsS --get 'https://k-skill-proxy.nomadamas.org/v1/han-river/water-level' \\","category":"network","line_end":59,"severity":"low","line_start":59},{"id":"env_access:instruction.md:76:generic-api-secret-keys","file":"instruction.md","pattern":"Generic API/secret keys","snippet":"- 프록시 서버에 `HRFCO_OPEN_API_KEY` 가 비어 있는 경우","category":"env_access","line_end":76,"severity":"high","line_start":76},{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":21,"severity":"medium","line_start":19},{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":25,"severity":"medium","line_start":21},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":27,"severity":"medium","line_start":25},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":31,"severity":"medium","line_start":27},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":33,"severity":"medium","line_start":31},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":35,"severity":"medium","line_start":33},{"id":"network:SKILL.md:35:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"If `npx` is unavailable, install Node.js 18+ or follow https://github.com/NomaDamas/k-skill#readme, ","category":"network","line_end":35,"severity":"low","line_start":35},{"id":"obfuscation:instruction.md:1:heuristic-high-file-entropy-6-15-bits-possible-b","file":"instruction.md","pattern":"[HEURISTIC] High file entropy (6.15 bits) - possible binary/encrypted content","snippet":"File: instruction.md","category":"obfuscation","line_end":1,"severity":"high","line_start":1}],"finding_verdicts":[{"id":"network:instruction.md:33:hardcoded-url","reason":"The HTTPS GET example sends only an encoded station name to the disclosed water-level proxy. No credentials or unrelated local data are included.","verdict":"false_positive","confidence":0.98},{"id":"network:instruction.md:40:hardcoded-url","reason":"The HTTPS GET example sends a public station code to the same documented lookup endpoint. This is the stated lookup workflow, not secret exfiltration.","verdict":"false_positive","confidence":0.98},{"id":"network:instruction.md:59:hardcoded-url","reason":"The example queries a broad station name to demonstrate ambiguity handling. It contains no sensitive payload or unexpected destination.","verdict":"false_positive","confidence":0.98},{"id":"env_access:instruction.md:76:generic-api-secret-keys","reason":"This bullet describes a missing proxy-server key as a failure mode, not a client environment read. The documentation states upstream credentials remain server-side.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","reason":"The matched backticks delimit a Markdown bash block, not shell substitution or Ruby execution. The enclosed npm command has a separate semantic finding.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","reason":"These backticks close and open Markdown code blocks; they do not execute a command. Remote package execution is evaluated separately.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","reason":"The matched span is a fenced bash example, not executable backtick syntax. Its npm dependency risk is covered by a semantic finding.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","reason":"The matched backticks are Markdown delimiters surrounding ordinary documentation. The broad update directive is assessed separately as a scope risk.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","reason":"The matched syntax opens a Markdown bash block rather than performing shell substitution. The enclosed update command has a separate semantic finding.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"This is the closing Markdown fence followed by fallback documentation. It is not Ruby or shell backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:35:hardcoded-url","reason":"These GitHub links point to installation documentation and source instructions. They contain no upload action, credentials, or executable download command.","verdict":"false_positive","confidence":0.98},{"id":"obfuscation:instruction.md:1:heuristic-high-file-entropy-6-15-bits-possible-b","reason":"The complete file is readable Korean and English Markdown with short curl examples. No evidence found of binary data, encryption, or an encoded payload.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[{"title":"Automatic Execution of a Mutable Remote Package","severity":"high","locations":[{"file":"SKILL.md","line_end":26,"line_start":15}],"confidence":0.96,"description":"The required first step runs 'npx -y @nomadamas/k-skill@0 instruct han-river-water-level' and prioritizes its output. The mutable version selector and automatic acceptance permit unreviewed package code and instructions to run with the agent's local permissions.","confidence_reasoning":"The command and trust directive are explicit, and @0 does not pin an exact release. External package contents were not inspected."},{"title":"Update Directive Exceeds the Lookup Task","severity":"medium","locations":[{"file":"SKILL.md","line_end":33,"line_start":29}],"confidence":0.91,"description":"The instruction says to keep 'every coding-agent skill install current' and supplies an npm update command. Following it could modify unrelated installations without task-specific approval.","confidence_reasoning":"The stated update scope explicitly includes other skill installations. Actual filesystem changes depend on the external CLI, which was not executed."}],"subject_marketplace_commit_sha":"c993c6abcbffafea2683d7748b53b3dfaf438415","subject_content_hash":"681820504bfd58a845d55eeb7ccb26bd7c8a528eedfb8ea76eac7940f237c349","subject_tree_hash":"e3cd72ab637d7a4d159fbae4922550a9da326c1488e90c3de075643d77051ed4","subject_plugin_path":"skills/nomadamas/han-river-water-level","audit_payload_hash":"7c6084e4c9aff22601fd1f7436f17e3c","confirmed_risk_level":"high","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"c993c6abcbffafea2683d7748b53b3dfaf438415","contentHash":"681820504bfd58a845d55eeb7ccb26bd7c8a528eedfb8ea76eac7940f237c349","treeHash":"e3cd72ab637d7a4d159fbae4922550a9da326c1488e90c3de075643d77051ed4","pluginPath":"skills/nomadamas/han-river-water-level","auditPayloadHash":"7c6084e4c9aff22601fd1f7436f17e3c"},"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/nomadamas-han-river-water-level/audits/1/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"high","confirmedFindingCount":2,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"confirmation_required","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}