substrate-vulnerability-scanner
Scans Substrate/Polkadot pallets for 7 critical vulnerabilities including arithmetic overflow, panic DoS, incorrect weights, and bad origin checks. Use when auditing Substrate runtimes or FRAME pallets.
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Scans Substrate/Polkadot pallets for 7 critical vulnerabilities including arithmetic overflow, panic DoS, incorrect weights, and bad origin checks. Use when auditing Substrate runtimes or FRAME pallets.
How to use
Przygotuj kod Substrate do skanowania — upewnij się, że masz dostęp do plików palet (zwykle w katalogu pallets//lib.rs) i pliku konfiguracji runtime (runtime/lib.rs). Narzędzie automatycznie rozpoznaje projekty Substrate po markerach FRAME, takich jak #[pallet], use frame_support::pallet_prelude:: i DispatchResult.
Uruchom skaner na wybranym pliku lub katalogu palet. Narzędzie przeskanuje kod Rust w poszukiwaniu 7 krytycznych wzorców: przepełnienia arytmetycznego, paniki DoS, nieprawidłowych wag, błędnych kontroli origin, niezabezpieczonych transakcji bez podpisu i innych luk specyficznych dla Substrate.
Przejrzyj raport z wynikami — dla każdej znalezionej luki otrzymasz lokalizację w kodzie, typ podatności i opis zagrożenia. Skoncentruj się najpierw na funkcjach dispatchable (oznaczonych #[pallet::call]) i logice walidacji wag.
Sprawdź funkcje walidacji wag (weight calculation functions) — narzędzie flaguje niedokładne lub brakujące wagi, które mogą prowadzić do DoS. Porównaj wagi z benchmarkami w pliku benchmarking.rs.
Zweryfikuj logikę kontroli uprawnień w funkcjach dispatchable — upewnij się, że ensure_signed, ensure_root i inne makra walidacji origin są prawidłowo zastosowane. Przejrzyj też logikę #[pallet::validate_unsigned] dla transakcji bez podpisu.
Przed uruchomieniem łańcucha (szczególnie parachaina Polkadot) uruchom skaner ponownie na finalnym kodzie runtime — to ostatnia linia obrony przed wdrożeniem podatności na produkcję.