access-control

Detects access control vulnerabilities in Solidity smart contracts using permission matrices and grep patterns.

66|17|Updated Jan 21, 2026
One-click install
npx skills add https://github.com/BitterSecurity/Vigilo --skill access-control-bittersecurity
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: access-control
Source: https://github.com/BitterSecurity/Vigilo/tree/main/packages/claude/skills/vulnerability-patterns/access-control
Command: npx skills add https://github.com/BitterSecurity/Vigilo --skill access-control-bittersecurity

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Access control flaws are the leading cause of smart contract exploits, yet they are easy to miss during manual review because visibility keywords like public are often mistaken for permission checks. This Skill gives auditors a systematic method to find missing modifiers, privilege escalation paths, and broken role hierarchies before attackers do. ## Core Features & Use Cases - Permission Matrix Construction: Maps every external/public function to its required role, actual check, and sensitivity level to expose authorization gaps. - Six Detection Patterns: Covers missing access control, privilege escalation, tx.origin phishing, OR/AND logic errors, missing two-step ownership transfer, and OpenZeppelin AccessControl role exploitation. - Centralization Risk Assessment: Flags undocumented admin powers such as unlimited minting, fee manipulation, and upgrade rights that lack timelocks or multisig protection. - Use Case: During a DeFi vault audit, run the provided grep queries to enumerate all state-changing functions, build the Permission Matrix, and discover that withdrawAll() has no modifier, allowing any caller to drain the contract. ## Quick Start Audit the Solidity contracts in this repository for access control vulnerabilities and build a permission matrix of all privileged functions.

Frequently Asked Questions about access-control

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I find missing access control in Solidity contracts?▼

Search for all external and public functions that modify state, then check each one for modifiers or require statements. Build a permission matrix comparing the intended caller against the actual check to expose gaps.

What are the most common smart contract access control vulnerabilities?▼

The most common patterns are missing modifiers on state-changing functions, privilege escalation through self-granting roles, tx.origin authentication, incorrect OR/AND logic in require statements, and single-step ownership transfers.

Why is tx.origin dangerous for authorization in Solidity?▼

tx.origin identifies the original externally owned account, not the immediate caller, so a malicious contract can trick an owner into calling it and then forward calls to protected functions. Always use msg.sender for authorization checks.

Does OpenZeppelin AccessControl prevent privilege escalation?▼

Not automatically. DEFAULT_ADMIN_ROLE can grant any role, so a single compromised admin key controls the entire system. Auditors should verify role admin assignments, two-step transfers, and renunciation paths.

When should a finding be reported as centralization risk instead of a bug?▼

Report centralization risk when admin powers like pausing withdrawals, setting fees to 100%, or upgrading implementations are undocumented, lack timelocks, or are controlled by a single key rather than a multisig.