{"data":{"skill":{"slug":"okx-okx-defi","name":"okx-defi","icon":"📦","repo":"https://github.com/okx/onchainos-skills/tree/35a8c41cc6516844ae7dbedf02616bf4ea97d6ed/skills/okx-defi","status":"approved","author":"okx","authorVersion":"4.6.6","skillstoreRevision":1},"audit":{"id":"bede5d53-b3d0-49af-b318-6d2116369ccf","skill_id":"55d0b8c7-7c70-41e4-8d4c-1e59064945a7","version":1,"content_hash":"v3:71b1d31f7a159583057137e2a844a17a1c060b43:f785791e5655f89bfcc9f4c2ca036e544f2fe67946fcf5e1cc3abaa18a128def:dbff5060c8340a42808fe1e81ca019da980d50dccce276b4118910b5e59586bd:736b696c6c732f6f6b782f6f6b782d64656669:5bce4f0c570535a0e6762b8b51035237","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 84 static matches are benign Markdown, DeFi parameters, documentation links, or explicit private-key noncustody language. Two semantic risks remain: automatic unpinned installer execution and signing opaque transaction responses without documented semantic verification. User confirmation and sequential execution mitigate some risk; no evidence found of credential exfiltration or audit-targeted prompt injection.","remediation":[{"issue":"Mandatory preflight runs an automatically approved, unpinned registry installer.","severity":"medium","suggestion":"Require installation consent, pin a reviewed installer version, verify package provenance, and skip installation when an acceptable CLI is already present."},{"issue":"Opaque transaction fields are passed to signing without documented checks of their financial effects.","severity":"high","suggestion":"Preserve payload bytes, but decode or simulate separately; verify chain, sender, target, approval spender, limits, and amounts before requesting explicit signing consent."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":13,"line_start":13},{"file":"SKILL.md","line_end":17,"line_start":17},{"file":"SKILL.md","line_end":41,"line_start":41},{"file":"SKILL.md","line_end":43,"line_start":43},{"file":"SKILL.md","line_end":45,"line_start":45},{"file":"SKILL.md","line_end":49,"line_start":49},{"file":"SKILL.md","line_end":67,"line_start":57},{"file":"SKILL.md","line_end":71,"line_start":67},{"file":"SKILL.md","line_end":72,"line_start":71},{"file":"SKILL.md","line_end":72,"line_start":72},{"file":"SKILL.md","line_end":77,"line_start":77},{"file":"SKILL.md","line_end":79,"line_start":79},{"file":"SKILL.md","line_end":81,"line_start":80},{"file":"SKILL.md","line_end":81,"line_start":81},{"file":"SKILL.md","line_end":87,"line_start":86},{"file":"SKILL.md","line_end":87,"line_start":87}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":8,"line_start":8}]},{"factor":"filesystem","evidence":[{"file":"SKILL.md","line_end":17,"line_start":17}]}],"critical_findings":[],"high_findings":[{"title":"Opaque Transaction Signing Without Documented Semantic Verification","locations":[{"file":"references/invest.md","line_end":182,"line_start":147},{"file":"references/invest-troubleshooting.md","line_end":22,"line_start":22},{"file":"references/invest.md","line_end":245,"line_start":244}],"confidence":0.92,"description":"The wallet flow passes returned targets, payloads, and values directly into signing and forbids inspecting rejected payloads. User confirmation is required, but no documented decoding or simulation verifies approval scope or intended asset movements before signing.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"Direct wallet signing and the inspection prohibition are explicit. External wallet safeguards may reduce exposure, but their implementation is outside these files."}],"medium_findings":[{"title":"Automatic Unpinned Installer Execution","locations":[{"file":"SKILL.md","line_end":17,"line_start":15}],"confidence":0.98,"description":"The mandatory preflight delegates to a bundled fallback that runs npx -y @okxweb3/onchainos-installer without a package version pin. This permits mutable registry code to execute before ordinary queries, without a separate installation-consent step.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The entry point requires preflight each thread, and the reviewed fallback specifies the unpinned npx command. No evidence found of malicious package contents."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":8,"total_lines":1347,"audit_model":"codex","audited_at":"2026-10-28T14:47:49.762+00:00","created_at":"2026-10-28T16:03:35.019427+00:00","static_findings":[{"id":"blocker:references/invest-cli-reference.md:133:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos defi detail --investment-id <id>","category":"blocker","line_end":133,"severity":"low","line_start":133},{"id":"blocker:references/invest-cli-reference.md:185:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos defi prepare --investment-id <id>","category":"blocker","line_end":185,"severity":"low","line_start":185},{"id":"blocker:references/invest-cli-reference.md:230:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"--investment-id <id> \\","category":"blocker","line_end":230,"severity":"low","line_start":230},{"id":"blocker:references/invest-cli-reference.md:234:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"[--token-id <nft-id>] \\","category":"blocker","line_end":234,"severity":"low","line_start":234},{"id":"blocker:references/invest-cli-reference.md:299:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"--id <id> \\","category":"blocker","line_end":299,"severity":"low","line_start":299},{"id":"blocker:references/invest-cli-reference.md:307:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"[--token-id <nft-id>] \\","category":"blocker","line_end":307,"severity":"low","line_start":307},{"id":"blocker:references/invest-cli-reference.md:323:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"| `--user-input` | No | — | Input tokens as JSON array — required for liquid staking exits (Jito/Jit","category":"blocker","line_end":323,"severity":"low","line_start":323},{"id":"blocker:references/invest-cli-reference.md:354:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"[--id <id>] \\","category":"blocker","line_end":354,"severity":"low","line_start":354},{"id":"blocker:references/invest-cli-reference.md:355:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"[--platform-id <id>] \\","category":"blocker","line_end":355,"severity":"low","line_start":355},{"id":"blocker:references/invest-cli-reference.md:356:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"[--token-id <nft-id>] \\","category":"blocker","line_end":356,"severity":"low","line_start":356},{"id":"blocker:references/invest-cli-reference.md:393:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"--id <id> \\","category":"blocker","line_end":393,"severity":"low","line_start":393},{"id":"blocker:references/invest-cli-reference.md:431:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos defi rate-chart --investment-id <id> [--time-range <range>]","category":"blocker","line_end":431,"severity":"low","line_start":431},{"id":"blocker:references/invest-cli-reference.md:452:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos defi rate-chart --investment-id 9502 --time-range MONTH","category":"blocker","line_end":452,"severity":"low","line_start":452},{"id":"blocker:references/invest-cli-reference.md:469:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos defi tvl-chart --investment-id <id> [--time-range <range>]","category":"blocker","line_end":469,"severity":"low","line_start":469},{"id":"blocker:references/invest-cli-reference.md:490:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos defi tvl-chart --investment-id 124 --time-range YEAR","category":"blocker","line_end":490,"severity":"low","line_start":490},{"id":"blocker:references/invest-cli-reference.md:511:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos defi depth-price-chart --investment-id <id> [--chart-type <type>] [--time-range <range>]","category":"blocker","line_end":511,"severity":"low","line_start":511},{"id":"blocker:references/invest-cli-reference.md:544:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos defi depth-price-chart --investment-id 1589649169","category":"blocker","line_end":544,"severity":"low","line_start":544},{"id":"blocker:references/invest-cli-reference.md:547:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos defi depth-price-chart --investment-id 1589649169 --chart-type PRICE --time-range WEEK","category":"blocker","line_end":547,"severity":"low","line_start":547},{"id":"blocker:references/invest-cli-reference.md:589:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos defi detail --investment-id 9502","category":"blocker","line_end":589,"severity":"low","line_start":589},{"id":"blocker:references/invest-cli-reference.md:593:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos defi prepare --investment-id 9502","category":"blocker","line_end":593,"severity":"low","line_start":593},{"id":"blocker:references/invest-cli-reference.md:598:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"--investment-id 9502 \\","category":"blocker","line_end":598,"severity":"low","line_start":598},{"id":"blocker:references/invest-cli-reference.md:612:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"onchainos defi prepare --investment-id <id>","category":"blocker","line_end":612,"severity":"low","line_start":612},{"id":"blocker:references/invest-cli-reference.md:617:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"--id <id> \\","category":"blocker","line_end":617,"severity":"low","line_start":617},{"id":"blocker:references/invest-cli-reference.md:628:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"--investment-id <id> \\","category":"blocker","line_end":628,"severity":"low","line_start":628},{"id":"blocker:references/invest-cli-reference.md:646:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"--platform-id 44","category":"blocker","line_end":646,"severity":"low","line_start":646},{"id":"blocker:references/invest-cli-reference.md:651:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"--id 9502 \\","category":"blocker","line_end":651,"severity":"low","line_start":651},{"id":"blocker:references/invest-cli-reference.md:667:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"--platform-id 44","category":"blocker","line_end":667,"severity":"low","line_start":667},{"id":"blocker:references/invest-cli-reference.md:675:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"--id 9502 \\","category":"blocker","line_end":675,"severity":"low","line_start":675},{"id":"blocker:references/invest-cli-reference.md:676:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"--platform-id 44 \\","category":"blocker","line_end":676,"severity":"low","line_start":676},{"id":"blocker:references/invest-cli-reference.md:687:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"--platform-id 55","category":"blocker","line_end":687,"severity":"low","line_start":687},{"id":"blocker:references/invest-cli-reference.md:695:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"--id 67890 \\","category":"blocker","line_end":695,"severity":"low","line_start":695},{"id":"blocker:references/invest-cli-reference.md:696:system-reconnaissance","file":"references/invest-cli-reference.md","pattern":"System reconnaissance","snippet":"--token-id 99999","category":"blocker","line_end":696,"severity":"low","line_start":696},{"id":"blocker:references/invest-cli-reference.md:660:network-reconnaissance","file":"references/invest-cli-reference.md","pattern":"Network reconnaissance","snippet":"### Claim rewards (REWARD_INVESTMENT — pass --expect-output directly)","category":"blocker","line_end":660,"severity":"low","line_start":660},{"id":"blocker:references/invest-cli-reference.md:670:network-reconnaissance","file":"references/invest-cli-reference.md","pattern":"Network reconnaissance","snippet":"# 2. Claim — pass --expect-output directly using rewardDefiTokenInfo (preferred over auto-fetch)","category":"blocker","line_end":670,"severity":"low","line_start":670},{"id":"blocker:references/invest-troubleshooting.md:11:system-reconnaissance","file":"references/invest-troubleshooting.md","pattern":"System reconnaissance","snippet":"| 84023 | Invalid expectOutputList | CLI auto-constructs from position-detail; retry or pass `--plat","category":"blocker","line_end":11,"severity":"low","line_start":11},{"id":"blocker:references/invest-troubleshooting.md:17:system-reconnaissance","file":"references/invest-troubleshooting.md","pattern":"System reconnaissance","snippet":"| 84019 | Address format mismatch | Address format invalid for this chain |","category":"blocker","line_end":17,"severity":"low","line_start":17},{"id":"blocker:references/invest-troubleshooting.md:22:system-reconnaissance","file":"references/invest-troubleshooting.md","pattern":"System reconnaissance","snippet":"- **CLI-generated payload rejected before submission**: if `wallet contract-call` returns `-32602 In","category":"blocker","line_end":22,"severity":"low","line_start":22},{"id":"sensitive:references/invest.md:191:crypto-seed-private-key-mention","file":"references/invest.md","pattern":"Crypto seed/private key mention","snippet":"> `invest`/`withdraw`/`collect` only return **unsigned calldata** — they do NOT broadcast. The CLI n","category":"sensitive","line_end":191,"severity":"high","line_start":191},{"id":"blocker:references/invest.md:17:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"| 5 | `defi detail --investment-id <id>` | Get full product details |","category":"blocker","line_end":17,"severity":"low","line_start":17},{"id":"blocker:references/invest.md:18:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"| 6 | `defi invest --investment-id <id> --address <addr> --token <symbol_or_addr> --amount <minimal_","category":"blocker","line_end":18,"severity":"low","line_start":18},{"id":"blocker:references/invest.md:19:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"| 7 | `defi withdraw --investment-id <id> --address <addr> --chain <chain> [--ratio <0-1>] [--amount","category":"blocker","line_end":19,"severity":"low","line_start":19},{"id":"blocker:references/invest.md:20:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"| 8 | `defi collect --address <addr> --chain <chain> --reward-type <type> [--investment-id <id>] [--","category":"blocker","line_end":20,"severity":"low","line_start":20},{"id":"blocker:references/invest.md:21:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"| 9 | `defi rate-chart --investment-id <id> [--time-range <range>]` | Historical APY chart data |","category":"blocker","line_end":21,"severity":"low","line_start":21},{"id":"blocker:references/invest.md:22:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"| 10 | `defi tvl-chart --investment-id <id> [--time-range <range>]` | Historical TVL chart data |","category":"blocker","line_end":22,"severity":"low","line_start":22},{"id":"blocker:references/invest.md:23:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"| 11 | `defi depth-price-chart --investment-id <id> [--chart-type <type>] [--time-range <range>]` | ","category":"blocker","line_end":23,"severity":"low","line_start":23},{"id":"blocker:references/invest.md:41:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"2. defi detail --investment-id <id>                 → confirm APY/TVL, get underlyingToken[].tokenAd","category":"blocker","line_end":41,"severity":"low","line_start":41},{"id":"blocker:references/invest.md:45:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"6. defi invest --investment-id <id> --address <addr> --token USDC --amount 100000000","category":"blocker","line_end":45,"severity":"low","line_start":45},{"id":"blocker:references/invest.md:60:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"2. defi position-detail --address <addr> --chain ethereum --platform-id <pid>","category":"blocker","line_end":60,"severity":"low","line_start":60},{"id":"blocker:references/invest.md:63:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"defi withdraw --investment-id <id> --address <addr> --chain ethereum --ratio 1 --platform-id <pid>","category":"blocker","line_end":63,"severity":"low","line_start":63},{"id":"blocker:references/invest.md:65:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"defi withdraw --investment-id <id> --address <addr> --chain ethereum --amount <minimal_units> --plat","category":"blocker","line_end":65,"severity":"low","line_start":65},{"id":"blocker:references/invest.md:77:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"2. defi position-detail --address <addr> --chain ethereum --platform-id <pid>","category":"blocker","line_end":77,"severity":"low","line_start":77},{"id":"blocker:references/invest.md:79:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"3. defi collect --address <addr> --chain ethereum --reward-type REWARD_INVESTMENT --investment-id <i","category":"blocker","line_end":79,"severity":"low","line_start":79},{"id":"blocker:references/invest.md:88:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"2. defi detail --investment-id <id>","category":"blocker","line_end":88,"severity":"low","line_start":88},{"id":"blocker:references/invest.md:89:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"3. (Optional) defi depth-price-chart --investment-id <id>","category":"blocker","line_end":89,"severity":"low","line_start":89},{"id":"blocker:references/invest.md:93:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"6. defi invest --investment-id <id> --address <addr> --token USDT --amount 100000000 --range 5","category":"blocker","line_end":93,"severity":"low","line_start":93},{"id":"blocker:references/invest.md:104:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"defi rate-chart --investment-id <id> --time-range MONTH","category":"blocker","line_end":104,"severity":"low","line_start":104},{"id":"blocker:references/invest.md:111:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"defi tvl-chart --investment-id <id> --time-range SEASON","category":"blocker","line_end":111,"severity":"low","line_start":111},{"id":"blocker:references/invest.md:118:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"defi depth-price-chart --investment-id <id>","category":"blocker","line_end":118,"severity":"low","line_start":118},{"id":"blocker:references/invest.md:126:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"defi depth-price-chart --investment-id <id> --chart-type PRICE --time-range WEEK","category":"blocker","line_end":126,"severity":"low","line_start":126},{"id":"blocker:references/invest.md:143:system-reconnaissance","file":"references/invest.md","pattern":"System reconnaissance","snippet":"onchainos gateway orders --address <addr> --chain <chain> --order-id <orderId>","category":"blocker","line_end":143,"severity":"low","line_start":143},{"id":"blocker:references/portfolio-cli-reference.md:44:system-reconnaissance","file":"references/portfolio-cli-reference.md","pattern":"System reconnaissance","snippet":"--platform-id <id>","category":"blocker","line_end":44,"severity":"low","line_start":44},{"id":"blocker:references/portfolio.md:19:system-reconnaissance","file":"references/portfolio.md","pattern":"System reconnaissance","snippet":"--platform-id 67890","category":"blocker","line_end":19,"severity":"low","line_start":19},{"id":"blocker:references/portfolio.md:29:system-reconnaissance","file":"references/portfolio.md","pattern":"System reconnaissance","snippet":"| 4 | `onchainos defi position-detail --address <addr> --chain <chain> --platform-id <id>` | Get det","category":"blocker","line_end":29,"severity":"low","line_start":29},{"id":"blocker:references/portfolio.md:144:system-reconnaissance","file":"references/portfolio.md","pattern":"System reconnaissance","snippet":"| `defi position-detail` (V3 Pool) | 1. View depth chart → `defi depth-price-chart --investment-id <","category":"blocker","line_end":144,"severity":"low","line_start":144},{"id":"external_commands:SKILL.md:13:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Discover and manage multi-chain, OKX-aggregated DeFi products and positions through the `onchainos d","category":"external_commands","line_end":13,"severity":"medium","line_start":13},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Preflight checks: At the start of each thread, complete the checks in `../okx-agentic-wallet/_shared","category":"external_commands","line_end":17,"severity":"medium","line_start":17},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"volume, history, or timeframe analysis—to `okx-dapp-discovery`. Generic","category":"external_commands","line_end":41,"severity":"medium","line_start":41},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"search/price/chart requests to `okx-dex-market`, and spot swaps, wallet","category":"external_commands","line_end":43,"severity":"medium","line_start":43},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`okx-agentic-wallet`.","category":"external_commands","line_end":45,"severity":"medium","line_start":45},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"The CLI resolves chain names automatically (for example, `ethereum` → `1`, `bsc` → `56`, `solana` → ","category":"external_commands","line_end":49,"severity":"medium","line_start":49},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":67,"severity":"medium","line_start":57},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":71,"severity":"medium","line_start":67},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- If wallet is not logged in, ask the user to log in first (→ `okx-agentic-wallet`) or provide an ad","category":"external_commands","line_end":72,"severity":"medium","line_start":71},{"id":"external_commands:SKILL.md:72:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- If the user says \"check all accounts\" or \"all wallets\", use `wallet balance --all` to get all acco","category":"external_commands","line_end":72,"severity":"medium","line_start":72},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"The `--address` and chain parameters must be compatible. EVM addresses (`0x...`) can only query EVM ","category":"external_commands","line_end":77,"severity":"medium","line_start":77},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `0x...` address → only pass EVM chains: `ethereum,bsc,polygon,arbitrum,base,xlayer,avalanche,optim","category":"external_commands","line_end":79,"severity":"medium","line_start":79},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- base58 address → only pass `solana`","category":"external_commands","line_end":81,"severity":"medium","line_start":80},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Sui address → only pass `sui`; Tron address (`T...`) → only pass `tron`; TON address → only pass `","category":"external_commands","line_end":81,"severity":"medium","line_start":81},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- The wallet address parameter for ALL defi commands is `--address`","category":"external_commands","line_end":87,"severity":"medium","line_start":86},{"id":"external_commands:SKILL.md:87:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `defi positions` uses `--chains` (plural, comma-separated); `defi position-detail` uses `--chain` ","category":"external_commands","line_end":87,"severity":"medium","line_start":87},{"id":"network:SKILL.md:8:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"homepage: \"https://web3.okx.com\"","category":"network","line_end":8,"severity":"low","line_start":8},{"id":"filesystem:SKILL.md:17:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"Preflight checks: At the start of each thread, complete the checks in `../okx-agentic-wallet/_shared","category":"filesystem","line_end":17,"severity":"high","line_start":17},{"id":"blocker:SKILL.md:64:network-reconnaissance","file":"SKILL.md","pattern":"Network reconnaissance","snippet":"- EVM chains → use EVM address","category":"blocker","line_end":65,"severity":"low","line_start":64},{"id":"blocker:SKILL.md:65:network-reconnaissance","file":"SKILL.md","pattern":"Network reconnaissance","snippet":"- Solana     → use Solana address","category":"blocker","line_end":66,"severity":"low","line_start":65}],"finding_verdicts":[{"id":"blocker:references/invest-cli-reference.md:133:system-reconnaissance","reason":"The command retrieves DeFi product details using an investment identifier. The id placeholder is not a host identity command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:185:system-reconnaissance","reason":"The prepare example requests accepted tokens and pool parameters for a product. It does not enumerate operating-system information.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:230:system-reconnaissance","reason":"The investment-id flag selects a DeFi product when generating unsigned deposit calldata. It is not system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:234:system-reconnaissance","reason":"The token-id placeholder selects an existing liquidity-position NFT. It does not invoke the operating-system id command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:299:system-reconnaissance","reason":"The redeem command uses id as a product-selection argument. The surrounding reference documents unsigned withdrawal preparation, not host inspection.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:307:system-reconnaissance","reason":"The optional token-id identifies a V3 pool NFT for redemption. No system identity lookup is present.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:323:system-reconnaissance","reason":"The table describes structured token input, including a chainIndex placeholder. That identifier is transaction metadata, not a reconnaissance command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:354:system-reconnaissance","reason":"The optional id flag identifies the investment whose rewards are claimed. It does not query host identity.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:355:system-reconnaissance","reason":"The platform-id flag selects a DeFi protocol for reward preparation. Its id placeholder is not executable system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:356:system-reconnaissance","reason":"The token-id flag identifies a liquidity-position NFT when preparing a claim. No host enumeration occurs.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:393:system-reconnaissance","reason":"The calculate-entry command uses id to select a pool for token-amount calculations. It is unrelated to operating-system identity.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:431:system-reconnaissance","reason":"The rate-chart example retrieves historical APY for an investment identifier. It performs no system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:452:system-reconnaissance","reason":"The numeric investment-id selects product 9502 for monthly APY history. This is documented financial data retrieval.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:469:system-reconnaissance","reason":"The tvl-chart command retrieves product TVL history by investment identifier. It does not inspect the local system.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:490:system-reconnaissance","reason":"The example requests yearly TVL data for product 124. The identifier is a DeFi API parameter, not a system command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:511:system-reconnaissance","reason":"The depth-price-chart example selects a V3 investment for liquidity or price data. It does not collect host information.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:544:system-reconnaissance","reason":"The numeric investment-id selects a pool for a current depth snapshot. No operating-system reconnaissance is present.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:547:system-reconnaissance","reason":"The command requests weekly relative-price history for a specified pool. Its product identifier is not a host identity query.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:589:system-reconnaissance","reason":"The example reads details for investment 9502 after a yield search. This is normal DeFi product discovery.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:593:system-reconnaissance","reason":"The prepare example gets accepted-token information for product 9502. It does not enumerate system attributes.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:598:system-reconnaissance","reason":"The investment-id argument selects the deposit product in a documented example. The line contains no reconnaissance command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:612:system-reconnaissance","reason":"The command prepares V3 pool token and tick information using a product identifier. It does not inspect the operating system.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:617:system-reconnaissance","reason":"The id argument selects the V3 investment for entry calculations. It is a CLI flag value, not execution of id.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:628:system-reconnaissance","reason":"The investment-id flag selects the pool for deposit calldata generation. No system enumeration is requested.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:646:system-reconnaissance","reason":"Platform identifier 44 selects a protocol for a wallet-position query. It does not expose operating-system identity.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:651:system-reconnaissance","reason":"The id value 9502 identifies the product to redeem in the example. It is not a system reconnaissance operation.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:667:system-reconnaissance","reason":"The platform-id value selects the protocol whose current reward details are retrieved. No local host information is requested.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:675:system-reconnaissance","reason":"The claim example supplies investment identifier 9502 as a CLI argument. This is reward selection, not system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:676:system-reconnaissance","reason":"The platform-id argument scopes a reward claim to protocol 44. It does not invoke any identity-discovery utility.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:687:system-reconnaissance","reason":"The position-detail example selects protocol 55 before a V3 fee claim. The platform identifier is ordinary API input.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:695:system-reconnaissance","reason":"The id value 67890 identifies a V3 product for a fee claim. No host identity command is present.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:696:system-reconnaissance","reason":"The token-id value 99999 selects a position NFT. This is financial position metadata, not system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:660:network-reconnaissance","reason":"This heading describes passing expected reward tokens directly to a claim command. It contains no network scanning instruction.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-cli-reference.md:670:network-reconnaissance","reason":"The comment prefers existing reward metadata over automatic fetching. It does not request network enumeration or probing.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-troubleshooting.md:11:system-reconnaissance","reason":"The error table recommends a platform-id argument to repair missing expected-token data. It does not instruct system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-troubleshooting.md:17:system-reconnaissance","reason":"This table row explains a blockchain address-format mismatch. It contains no host inspection command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest-troubleshooting.md:22:system-reconnaissance","reason":"The recovery rule discards rejected transaction payloads and regenerates calldata. It contains no system reconnaissance; payload-verification concerns are assessed separately.","verdict":"false_positive","confidence":0.99},{"id":"sensitive:references/invest.md:191:crypto-seed-private-key-mention","reason":"The sentence explicitly says transaction preparation returns unsigned calldata and the CLI never holds private keys. It neither requests nor exposes keys.","verdict":"false_positive","confidence":1},{"id":"blocker:references/invest.md:17:system-reconnaissance","reason":"The command index documents retrieving product details by investment-id. The placeholder is not a host identity command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:18:system-reconnaissance","reason":"The invest synopsis lists product and NFT identifiers for unsigned deposit preparation. It does not enumerate operating-system data.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:19:system-reconnaissance","reason":"The withdraw synopsis lists product, position, and platform selectors. These identifiers are DeFi parameters, not host reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:20:system-reconnaissance","reason":"The collect synopsis uses identifiers to select rewards and positions. It does not execute the operating-system id utility.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:21:system-reconnaissance","reason":"The command index documents APY history retrieval for a product. No local system information is collected.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:22:system-reconnaissance","reason":"The command retrieves historical TVL using a product identifier. This is read-only financial data access, not system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:23:system-reconnaissance","reason":"The depth-price-chart synopsis selects a V3 pool by investment identifier. It does not inspect the host.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:41:system-reconnaissance","reason":"The deposit workflow reads product APY, TVL, and token addresses. The investment identifier is normal API input.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:45:system-reconnaissance","reason":"The example prepares a USDC deposit after amount and balance checks. Its investment-id argument is not host reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:60:system-reconnaissance","reason":"The command refreshes blockchain position details before a withdrawal. Platform-id selects the protocol, not a local system identity.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:63:system-reconnaissance","reason":"The full-exit example uses investment and platform identifiers to prepare a withdrawal. It does not enumerate host information.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:65:system-reconnaissance","reason":"The partial-exit example specifies a product, protocol, and token amount. No system reconnaissance command is present.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:77:system-reconnaissance","reason":"The claim workflow refreshes position details using a platform selector. This is blockchain account data, not operating-system enumeration.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:79:system-reconnaissance","reason":"The collect command uses investment and platform identifiers for reward calldata preparation. It does not query local identity.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:88:system-reconnaissance","reason":"The V3 deposit workflow reads details for a selected product. The id placeholder is not an executable reconnaissance command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:89:system-reconnaissance","reason":"The optional command retrieves pool liquidity depth to inform a tick range. It does not inspect system configuration.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:93:system-reconnaissance","reason":"The example prepares a V3 pool deposit for a selected investment. Product identification is not system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:104:system-reconnaissance","reason":"The command requests monthly APY history for an investment. It has no host-inspection behavior.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:111:system-reconnaissance","reason":"The command requests seasonal TVL history for a product. It does not enumerate the local system.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:118:system-reconnaissance","reason":"The command fetches a V3 pool depth snapshot using investment-id. It is not a system identity lookup.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:126:system-reconnaissance","reason":"The command retrieves weekly pool price history by product identifier. No host reconnaissance is documented.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/invest.md:143:system-reconnaissance","reason":"The gateway orders command polls a previously broadcast transaction using its order-id. It does not invoke a system identity command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/portfolio-cli-reference.md:44:system-reconnaissance","reason":"The platform-id placeholder selects a protocol for read-only position details. It is not host reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/portfolio.md:19:system-reconnaissance","reason":"The numeric platform-id selects a protocol in a holdings-query example. No operating-system identity is queried.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/portfolio.md:29:system-reconnaissance","reason":"The command index documents read-only protocol holdings retrieval. Its id placeholder is a platform selector, not an executable command.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/portfolio.md:144:system-reconnaissance","reason":"The suggestions link V3 positions to depth and price-history queries. Investment identifiers do not indicate system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:13:ruby-shell-backtick-execution","reason":"Backticks format the onchainos defi command-group name in Markdown prose. They are not Ruby or shell command substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","reason":"The backticks delimit documentation paths, not executable shell expressions. The delegated installation workflow is assessed separately.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","reason":"The backticks mark a companion skill name in intent-routing prose. They do not execute a command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","reason":"The backticks format a routing destination skill name. There is no Ruby code or shell command substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","reason":"The inline code span names the wallet companion skill. It is documentation, not an executable backtick expression.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","reason":"Backticks format chain aliases and their numeric mappings. No shell or Ruby evaluation occurs.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","reason":"The triple backticks open a Markdown example of wallet lookup and address matching. They are not shell command-substitution syntax.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","reason":"The triple backticks close the Markdown address-resolution example. The following inline skill reference is also documentation.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","reason":"The backticks format a wallet skill reference and documented commands. They are not executable command-substitution expressions.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:72:ruby-shell-backtick-execution","reason":"Inline Markdown describes wallet commands only when the user requests all accounts. The matched backticks are not shell or Ruby evaluation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","reason":"The code spans format an address flag, address prefix, and chain name. They contain no executable backtick expression.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","reason":"The backticks delimit an address prefix and a list of allowed chains. These are Markdown literals, not shell code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","reason":"The inline spans format chain names and address examples in a compatibility list. They do not trigger command execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","reason":"The backticks mark literal Sui, Tron, and TON identifiers. There is no Ruby or shell command substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","reason":"The backticks format CLI command names and flag spellings. They are ordinary Markdown syntax, not executable code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:87:ruby-shell-backtick-execution","reason":"The note contrasts singular and plural chain flags using inline Markdown. No command substitution is present.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:8:hardcoded-url","reason":"The HTTPS URL is homepage metadata for OKX Web3. The line does not transmit data or define an exfiltration destination.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:SKILL.md:17:path-traversal-sequence","reason":"The parent-relative path intentionally references a companion skill document with a bundled fallback. No attacker-controlled traversal or arbitrary filesystem access is shown.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:64:network-reconnaissance","reason":"The example maps EVM and Solana chain categories to compatible wallet addresses. It does not scan networks or probe hosts.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:65:network-reconnaissance","reason":"The list maps Solana and XLayer to their corresponding address categories. It contains no network reconnaissance operation.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[{"title":"Automatic Unpinned Installer Execution","severity":"medium","locations":[{"file":"SKILL.md","line_end":17,"line_start":15}],"confidence":0.98,"description":"The mandatory preflight delegates to a bundled fallback that runs npx -y @okxweb3/onchainos-installer without a package version pin. This permits mutable registry code to execute before ordinary queries, without a separate installation-consent step.","confidence_reasoning":"The entry point requires preflight each thread, and the reviewed fallback specifies the unpinned npx command. No evidence found of malicious package contents."},{"title":"Opaque Transaction Signing Without Documented Semantic Verification","severity":"high","locations":[{"file":"references/invest.md","line_end":182,"line_start":147},{"file":"references/invest-troubleshooting.md","line_end":22,"line_start":22},{"file":"references/invest.md","line_end":245,"line_start":244}],"confidence":0.92,"description":"The wallet flow passes returned targets, payloads, and values directly into signing and forbids inspecting rejected payloads. User confirmation is required, but no documented decoding or simulation verifies approval scope or intended asset movements before signing.","confidence_reasoning":"Direct wallet signing and the inspection prohibition are explicit. External wallet safeguards may reduce exposure, but their implementation is outside these files."}],"subject_marketplace_commit_sha":"71b1d31f7a159583057137e2a844a17a1c060b43","subject_content_hash":"f785791e5655f89bfcc9f4c2ca036e544f2fe67946fcf5e1cc3abaa18a128def","subject_tree_hash":"dbff5060c8340a42808fe1e81ca019da980d50dccce276b4118910b5e59586bd","subject_plugin_path":"skills/okx/okx-defi","audit_payload_hash":"5bce4f0c570535a0e6762b8b51035237","confirmed_risk_level":"high","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"71b1d31f7a159583057137e2a844a17a1c060b43","contentHash":"f785791e5655f89bfcc9f4c2ca036e544f2fe67946fcf5e1cc3abaa18a128def","treeHash":"dbff5060c8340a42808fe1e81ca019da980d50dccce276b4118910b5e59586bd","pluginPath":"skills/okx/okx-defi","auditPayloadHash":"5bce4f0c570535a0e6762b8b51035237"},"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/okx-okx-defi/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}}