algorand-vulnerability-scanner

其他 社区
解读按原文结构重写,命令、链接、术语均保留;右侧可核对作者原始 SKILL.md

方法与流程

  • 7. Scanning Workflow:原文以此为独立章节。
  • Step 1: Platform Identification:Confirm file extensions (.teal, .py) Identify framework (PyTeal, Beaker, pure TEAL) Determine contract type (stateful application vs smart signature)
  • Step 2: Static Analysis with Tealer:原文以此为独立章节。

适用与边界

  • 2. When to Use This Skill:Auditing Algorand smart contracts (stateful applications or smart signatures) Reviewing TEAL assembly or PyTeal code Pre-audit security assessment of Algorand projects
  • Step 4: Transaction Field Validation Matrix:Create checklist for all transaction types used: Payment Transactions: [ ] RekeyTo validated
  • [SEVERITY] Vulnerability Name (e.g., Missing RekeyTo Validation):Location: contract.teal:45-50 or approvalprogram.py:withdraw() Description: The contract approves payment transactions without validating the RekeyTo field, allowing an attacker to rekey the account and bypass future authorization checks.

原文中的明确线索

  • 要点:「TEAL files」、「PyTeal files」、「Tealer」、「Search your codebase」、「Analyze each file」、「Report findings」、「Provide fixes」、「Run Tealer」
  • 文件与命令.teal.pyapprovalprogram.pyclearprogram.pycontract.tealsignature.tealuv tool install tealertealer contract.teal --detect all

流狐整理:以上内容来自当前 SKILL.md 的章节与原词;未补写作者没有声明的工具、兼容性或能力。

流狐档案 作者与许可取自来源;运行、权限和网络为流狐检测或估算
流狐分类
通用
作者声明 Agent
未找到明确声明;不据此推断已兼容或已测试
静态检查
88 / 100 · 启发式扫描,不代表运行安全
作者 / 版本 / 许可
@trailofbits · 未声明 license
流狐 Token 估算
低消耗
流狐接入估算
即装即用
是否需要外部 API Key
未发现要求
检测到的系统要求
未声明
底层运行要求
Python
检测到的文件与系统行为
  • 只读
  • 允许写入 / 修改
检测到的网络行为
仅限本地
安装命令数
无(仅作为资料)

档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。

需要注意: 未限定 allowed-tools,默认拥有全部工具权限。

输出预览 algorand-vulnerability-scanner.preview
# 5. Example Output

=== ALGORAND VULNERABILITY SCAN RESULTS ===

Project: my-algorand-dapp
Files Scanned: 3 (.teal, .py)
Vulnerabilities Found: 2

---

[CRITICAL] Rekeying Attack
File: contracts/approval.py:45
Pattern: Missing RekeyTo validation

Code:
    If(Txn.type_enum() == TxnType.Payment,
        Seq([
            # Missing: Assert(Txn.rekey_to() == Global.zero_address())
            App.globalPut(Bytes("balance"), balance + Txn.amount()),
            Approve()
        ])
    )

Issue: The contract doesn't validate the RekeyTo field, allowing attackers
to change account authorization and bypass restrictions.

讨论

基于 GitHub Discussions。登录 GitHub 即可参与讨论、点赞、订阅更新。