{"data":{"skill":{"slug":"apeworx-uniswap","name":"uniswap","icon":"📦","repo":"https://github.com/ApeWorX/skills/tree/main/protocols/uniswap","status":"approved","author":"ApeWorX","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"a9272b64-49b6-4450-9513-c1f6dbd4b36d","skill_id":"94414f83-a31d-44d5-bdae-3b70658f4b69","version":10,"content_hash":"v3:89edfdc710d0846129dcee6a929477b04f08052c:8b481e6439c7768aa19300a2a9ffcb12121b3406d042705efc481be810eb5d85:84c5187a5cc48c8fc5a23eef6c37c47ef72a0a573ff19d3bb8003c2cc56add34:736b696c6c732f617065776f72782f756e6973776170:bafad2e301c58b8d6c41accd5574c832","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 17 static findings are false positives: backticks mark inline code, URLs reference relevant public documentation, and token symbols are not reconnaissance. The skill still presents contextual risks because it relies on mutable remote documentation and can generate workflows that trade real assets through configured accounts. Publication should require transaction confirmation and remote-content safeguards.","remediation":[{"issue":"Generated workflows can submit real token swaps through configured Ape accounts.","severity":"high","suggestion":"Require explicit approval before signing or broadcasting. Show the network, token addresses, amounts, route, slippage, fees, recipient, and minimum output."},{"issue":"The required documentation sources use mutable branches and stable channels.","severity":"medium","suggestion":"Pin vetted versions where possible. Treat fetched content as untrusted data, restrict domains, and ignore instructions embedded in remote pages."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":4,"line_start":4},{"file":"SKILL.md","line_end":7,"line_start":7},{"file":"SKILL.md","line_end":15,"line_start":15},{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":17,"line_start":17},{"file":"SKILL.md","line_end":20,"line_start":20},{"file":"SKILL.md","line_end":29,"line_start":29},{"file":"SKILL.md","line_end":32,"line_start":32},{"file":"SKILL.md","line_end":36,"line_start":36}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":15,"line_start":15},{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":17,"line_start":17},{"file":"SKILL.md","line_end":19,"line_start":19},{"file":"SKILL.md","line_end":20,"line_start":20},{"file":"SKILL.md","line_end":21,"line_start":21},{"file":"SKILL.md","line_end":43,"line_start":43}]}],"critical_findings":[],"high_findings":[{"title":"Real-Asset Transaction Execution Risk","locations":[{"file":"SKILL.md","line_end":4,"line_start":3},{"file":"SKILL.md","line_end":39,"line_start":36},{"file":"SKILL.md","line_end":48,"line_start":43}],"confidence":0.94,"description":"The skill supports swaps through configured Ape accounts and automated bot workflows. Generated code may sign or broadcast transactions that cause irreversible financial loss.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"The skill explicitly covers trading, requires configured Ape accounts, and recommends bot integration, so real-asset transaction capability is clear."}],"medium_findings":[{"title":"Mutable Remote Documentation Trust","locations":[{"file":"SKILL.md","line_end":23,"line_start":14}],"confidence":0.92,"description":"The skill requires fetching documentation from mutable branch and stable-channel URLs before coding. Compromised or injected content could influence generated transaction logic.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The instructions explicitly require retrieving unpinned remote pages before implementation, creating a clear external-content trust dependency."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":50,"audit_model":"codex","audited_at":"2026-07-23T05:04:26.466+00:00","created_at":"2026-07-24T07:14:32.229748+00:00","static_findings":[{"id":"external_commands:SKILL.md:4:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"compatibility: Requires Python, ape installed (with configured `ape accounts`), and tokenlist instal","category":"external_commands","line_end":4,"severity":"medium","line_start":4},{"id":"external_commands:SKILL.md:7:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"This skill describes when and how to the `uniswap-sdk` to interact and trade with the Uniswap protoc","category":"external_commands","line_end":7,"severity":"medium","line_start":7},{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. Use `web_fetch` to retrieve the latest documentation from https://github.com/ApeWorX/uniswap-sdk/","category":"external_commands","line_end":15,"severity":"medium","line_start":15},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. Use `web_fetch` to retrieve the latest Ape documentation from https://docs.apeworx.io/ape/stable","category":"external_commands","line_end":16,"severity":"medium","line_start":16},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. Use `web_fetch` to retrieve the latest `ape-tokens` documentation from https://github.com/ApeWorX","category":"external_commands","line_end":17,"severity":"medium","line_start":17},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Installing a tokenlist using `ape-tokens`: https://github.com/ApeWorX/ape-tokens/blob/main/README.","category":"external_commands","line_end":20,"severity":"medium","line_start":20},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Typically, native token wrappers like `WETH`, and highly liquid stablecoins like `USDC` and `USDT` a","category":"external_commands","line_end":29,"severity":"medium","line_start":29},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**CRITICAL**: Ensure the `Uniswap` class has indexed the proper pairs using either `uni.index` or `u","category":"external_commands","line_end":32,"severity":"medium","line_start":32},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Overall, while performing a trade with the `uniswap-sdk` can potentially be risky,","category":"external_commands","line_end":36,"severity":"medium","line_start":36},{"id":"network:SKILL.md:15:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"1. Use `web_fetch` to retrieve the latest documentation from https://github.com/ApeWorX/uniswap-sdk/","category":"network","line_end":15,"severity":"low","line_start":15},{"id":"network:SKILL.md:16:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"2. Use `web_fetch` to retrieve the latest Ape documentation from https://docs.apeworx.io/ape/stable","category":"network","line_end":16,"severity":"low","line_start":16},{"id":"network:SKILL.md:17:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"3. Use `web_fetch` to retrieve the latest `ape-tokens` documentation from https://github.com/ApeWorX","category":"network","line_end":17,"severity":"low","line_start":17},{"id":"network:SKILL.md:19:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- Usage guide: https://github.com/ApeWorX/uniswap-sdk/blob/main/README.md#quick-usage","category":"network","line_end":19,"severity":"low","line_start":19},{"id":"network:SKILL.md:20:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- Installing a tokenlist using `ape-tokens`: https://github.com/ApeWorX/ape-tokens/blob/main/README.","category":"network","line_end":20,"severity":"low","line_start":20},{"id":"network:SKILL.md:21:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- Setting up an account with Ape: https://docs.apeworx.io/ape/stable/userguides/accounts#live-networ","category":"network","line_end":21,"severity":"low","line_start":21},{"id":"network:SKILL.md:43:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"This SDK was specifically designed for use within a bot: https://github.com/ApeWorX/uniswap-sdk/blob","category":"network","line_end":43,"severity":"low","line_start":43},{"id":"blocker:SKILL.md:29:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"Typically, native token wrappers like `WETH`, and highly liquid stablecoins like `USDC` and `USDT` a","category":"blocker","line_end":29,"severity":"low","line_start":29}],"finding_verdicts":[{"id":"external_commands:SKILL.md:4:ruby-shell-backtick-execution","reason":"Line 4 uses Markdown backticks to format Ape command names in compatibility text. It does not invoke a shell or define executable logic.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:7:ruby-shell-backtick-execution","reason":"Line 7 formats the uniswap-sdk package name as inline Markdown. No command execution syntax or runtime call is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","reason":"Line 15 formats the web_fetch tool name with Markdown backticks. It requests documentation retrieval and does not execute a shell command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","reason":"Line 16 uses backticks only around the web_fetch tool name. The surrounding text describes an HTTPS documentation request, not shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","reason":"Line 17 uses inline Markdown for web_fetch and ape-tokens names. There is no executable shell expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","reason":"Line 20 formats the ape-tokens package name as inline code within a documentation link. It contains no command invocation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","reason":"Line 29 formats token symbols such as WETH, USDC, and USDT with Markdown backticks. These are asset names, not commands.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","reason":"Line 32 formats Python class and method identifiers as inline code. It describes SDK usage without running an external process.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"Line 36 formats the uniswap-sdk package name with Markdown backticks. No shell command or dynamic execution is present.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:15:hardcoded-url","reason":"The URL is an HTTPS link to the public ApeWorX uniswap-sdk repository and is relevant to the skill. The request does not send credentials or user data.","verdict":"false_positive","confidence":0.96},{"id":"network:SKILL.md:16:hardcoded-url","reason":"The URL targets the public ApeWorX documentation site over HTTPS. It is a relevant documentation source with no indicated data exfiltration.","verdict":"false_positive","confidence":0.96},{"id":"network:SKILL.md:17:hardcoded-url","reason":"The URL is an HTTPS link to the public ApeWorX ape-tokens repository. No secrets or local data are included in the request.","verdict":"false_positive","confidence":0.96},{"id":"network:SKILL.md:19:hardcoded-url","reason":"Line 19 provides a relevant public HTTPS documentation reference. It does not define an outbound data transfer.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:20:hardcoded-url","reason":"Line 20 links to the public ape-tokens usage guide over HTTPS. The link is documentation context and contains no sensitive parameters.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:21:hardcoded-url","reason":"Line 21 links to the public Ape account setup guide over HTTPS. It is relevant documentation and does not transmit account material.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:43:hardcoded-url","reason":"Line 43 is a public HTTPS link to the SDK's Silverback documentation. It is a reference, not an exfiltration endpoint.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:29:system-reconnaissance","reason":"Line 29 discusses WETH, USDC, and USDT as routing assets. It does not inspect the host, network configuration, files, or running processes.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[{"title":"Real-Asset Transaction Execution Risk","severity":"high","locations":[{"file":"SKILL.md","line_end":4,"line_start":3},{"file":"SKILL.md","line_end":39,"line_start":36},{"file":"SKILL.md","line_end":48,"line_start":43}],"confidence":0.94,"description":"The skill supports swaps through configured Ape accounts and automated bot workflows. Generated code may sign or broadcast transactions that cause irreversible financial loss.","confidence_reasoning":"The skill explicitly covers trading, requires configured Ape accounts, and recommends bot integration, so real-asset transaction capability is clear."},{"title":"Mutable Remote Documentation Trust","severity":"medium","locations":[{"file":"SKILL.md","line_end":23,"line_start":14}],"confidence":0.92,"description":"The skill requires fetching documentation from mutable branch and stable-channel URLs before coding. Compromised or injected content could influence generated transaction logic.","confidence_reasoning":"The instructions explicitly require retrieving unpinned remote pages before implementation, creating a clear external-content trust dependency."}],"subject_marketplace_commit_sha":"89edfdc710d0846129dcee6a929477b04f08052c","subject_content_hash":"8b481e6439c7768aa19300a2a9ffcb12121b3406d042705efc481be810eb5d85","subject_tree_hash":"84c5187a5cc48c8fc5a23eef6c37c47ef72a0a573ff19d3bb8003c2cc56add34","subject_plugin_path":"skills/apeworx/uniswap","audit_payload_hash":"bafad2e301c58b8d6c41accd5574c832","confirmed_risk_level":"high","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"89edfdc710d0846129dcee6a929477b04f08052c","contentHash":"8b481e6439c7768aa19300a2a9ffcb12121b3406d042705efc481be810eb5d85","treeHash":"84c5187a5cc48c8fc5a23eef6c37c47ef72a0a573ff19d3bb8003c2cc56add34","pluginPath":"skills/apeworx/uniswap","auditPayloadHash":"bafad2e301c58b8d6c41accd5574c832"},"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/apeworx-uniswap/audits/10/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}}