{"slug": "aro-network-security-review-summary", "title": "ARO Network Security Review Summary", "summary": "A security review of the ARO Network testnet repositories found a high-severity agent permission bypass in the `lumii-harness` that could allow autonomous agents to run commands without approval controls. Additional medium-severity issues include a bug in `MerkleDistributor.withdraw` that ignores the recipient parameter and potential secret exposure through Next.js build variables. The review recommends fixes such as not using `bypassPermissions` by default and auditing secret usage.", "body_md": "Quick static security review summary for public ARO Network testnet repositories.\n\nNote: This is not a full formal audit. Findings are based on public files sampled during a quick review.\n\n| No | Severity | Finding | Repository | File / Location | Risk / Impact | Recommended Fix | Priority |\n\n|---:|---|---|---|---|---|---|---|\n\n| 1 | HIGH | Agent permission bypass in `lumii-harness`\n\n| `aro-network/lumii-harness`\n\n| `client.py:35`\n\n; `security.py`\n\n| If used operationally, autonomous agent may run commands with reduced/disabled approval controls. Dangerous with untrusted prompts/files; may allow file modification, data exfiltration, or unsafe shell/network commands. | Do not use `bypassPermissions`\n\nby default. Register `bash_security_hook`\n\n. Run agent in sandbox/container with limited filesystem/network. Add tests for blocked commands. | P1 |\n\n| 2 | MEDIUM | `MerkleDistributor.withdraw`\n\nignores `recipient`\n\nparameter | `aro-network/aro-evm-contract`\n\n| `contracts/rewards/MerkleDistributor.sol:54-63`\n\n| Owner cannot withdraw to intended treasury/recipient. Event may be misleading and accounting can be wrong. Important before mainnet. | Transfer to `recipient`\n\ninstead of `_msgSender()`\n\n. Add unit tests for recipient withdrawal. | P1 |\n\n| 3 | MEDIUM | Withdraw emits success event even when transfer does not occur | `aro-network/aro-evm-contract`\n\n| `RewardsDistributor.sol:104-113`\n\n; `MerkleDistributor.sol:54-63`\n\n| Monitoring/accounting may think funds were withdrawn although no transfer occurred when amount exceeds balance. | Use `require(amount <= balance, \"Insufficient balance\")`\n\nbefore transfer. Emit event only after successful transfer. Add negative tests. | P1/P2 |\n\n| 4 | MEDIUM | Potential secret exposure through `NEXT_PUBLIC_*`\n\nbuild variable | `aro-network/aro-official-website`\n\n| `.github/workflows/static.yml:61-63`\n\n| Any `NEXT_PUBLIC_*`\n\nvalue in Next.js may be bundled client-side and visible publicly. Risk depends on whether `secrets.PUBLIC_KEY`\n\nis truly public or sensitive. | Audit the secret value. If sensitive, rotate immediately and remove `NEXT_PUBLIC_`\n\nexposure. If public config, store as non-secret repo variable. | P2 |\n\n| 5 | MEDIUM | Next.js `15.0.3`\n\nmay be affected by known advisories | `aro-network/aro-official-website`\n\n; `aro-network/aro-official-shop`\n\n| `package.json`\n\n| Potential exposure to Next.js vulnerabilities depending on deployment features like middleware/auth. Risk lower if static export, but should be upgraded before production/mainnet. | Upgrade Next.js to patched/latest version. Run dependency audit/Dependabot. Confirm middleware/auth usage. | P2 |\n\n| 6 | MEDIUM | GitHub Actions supply-chain hardening gaps | `aro-network/aro-official-website`\n\n| `.github/workflows/static.yml`\n\n| Avoidable build/deploy supply-chain risk. Compromised action or dependency change could affect deployed site. | Apply least privilege per job. Pin third-party actions to commit SHA. Use `pnpm install --frozen-lockfile`\n\n. Add dependency review/code scanning. | P2/P3 |\n\n| 7 | LOW | `window.open(..., \"_blank\")`\n\nwithout `noopener,noreferrer`\n\n| `aro-network/aro-official-website`\n\n| `src/app/components/AJoinWaitlist.tsx`\n\n| Reverse tabnabbing/phishing risk in some browser conditions. Easy to fix. | Use `window.open(url, \"_blank\", \"noopener,noreferrer\")`\n\nor `<a target=\"_blank\" rel=\"noopener noreferrer\">`\n\n. | P3 |\n\n| 8 | INFO | No obvious leaked private secrets found in quick public scan | Public repos sampled | Public GitHub code/files | Positive note. No immediate exposed `.env`\n\nor private key patterns found in quick review, but not a complete secret audit. | Enable GitHub secret scanning/push protection. Run full repo history scan before mainnet. | Info |\n\n- Fix\n`lumii-harness`\n\npermission bypass / hook enforcement. - Fix\n`MerkleDistributor.withdraw()`\n\nrecipient bug. - Add insufficient-balance\n`require`\n\nto withdraw flows. - Audit\n`NEXT_PUBLIC_PUBLIC_KEY`\n\n/ GitHub Secret usage. - Upgrade Next.js.\n- Harden GitHub Actions.\n- Add tests and full audit before mainnet.", "url": "https://wpnews.pro/news/aro-network-security-review-summary", "canonical_source": "https://gist.github.com/Mamat9q/543b0bae7c5930004d3328b8463bd0b7", "published_at": "2026-07-25 18:17:04+00:00", "updated_at": "2026-07-25 18:29:37.374767+00:00", "lang": "en", "topics": ["ai-safety", "developer-tools"], "entities": ["ARO Network", "lumii-harness", "MerkleDistributor", "Next.js", "GitHub Actions"], "alternates": {"html": "https://wpnews.pro/news/aro-network-security-review-summary", "markdown": "https://wpnews.pro/news/aro-network-security-review-summary.md", "text": "https://wpnews.pro/news/aro-network-security-review-summary.txt", "jsonld": "https://wpnews.pro/news/aro-network-security-review-summary.jsonld"}}