Přejít na hlavní obsah

Kontrolní seznam bezpečnosti chytrých kontraktů

chytré kontrakty
bezpečnost
Solidity
Středně pokročilý
Trailofbits
7. září 2020
2 minut čtení

Kontrolní seznam pro vývoj chytrých kontraktů

Zde je obecný postup, který doporučujeme dodržovat při psaní vašich chytrých kontraktů.

Zkontrolujte známé bezpečnostní problémy:

  • Zkontrolujte své kontrakty pomocí nástroje Slither (opens in a new tab). Má více než 40 vestavěných detektorů běžných zranitelností. Spouštějte jej při každém odevzdání nového kódu a ujistěte se, že získáte čistý report (nebo použijte režim třídění k potlačení určitých problémů).
  • Zkontrolujte své kontrakty pomocí nástroje Crytic (opens in a new tab). Kontroluje 50 problémů, které Slither neřeší. Crytic může také pomoci vašemu týmu udržet si přehled tím, že snadno zobrazuje bezpečnostní problémy v Pull Requestech na GitHubu.

Zvažte speciální funkce vašeho kontraktu:

Vizuálně zkontrolujte kritické bezpečnostní prvky vašeho kódu:

Zdokumentujte kritické bezpečnostní vlastnosti a k jejich vyhodnocení použijte automatické generátory testů:

  • Naučte se dokumentovat bezpečnostní vlastnosti vašeho kódu. Zpočátku je to těžké, ale je to ta nejdůležitější činnost pro dosažení dobrého výsledku. Je to také předpoklad pro použití jakýchkoli pokročilých technik v tomto tutoriálu.
  • Definujte bezpečnostní vlastnosti v jazyce Solidity pro použití s nástroji Echidna (opens in a new tab) a Manticore (opens in a new tab). Zaměřte se na váš stavový automat, řízení přístupu, aritmetické operace, externí interakce a shodu se standardy.
  • Definujte bezpečnostní vlastnosti pomocí Python API nástroje Slither. Zaměřte se na dědičnost, závislosti proměnných, řízení přístupu a další strukturální problémy.
  • Spouštějte testy vlastností při každém commitu pomocí nástroje Crytic (opens in a new tab). Crytic dokáže zpracovat a vyhodnotit testy bezpečnostních vlastností, takže každý ve vašem týmu snadno uvidí, že na GitHubu procházejí. Selhávající testy mohou zablokovat commity.

Nakonec mějte na paměti problémy, které automatizované nástroje nemohou snadno odhalit:

  • Nedostatek soukromí: všichni ostatní mohou vidět vaše transakce, zatímco čekají ve frontě v poolu
  • Předbíhání transakcí (front-running)
  • Kryptografické operace
  • Rizikové interakce s externími komponentami decentralizovaných financí (DeFi)

Požádejte o pomoc

Konzultační hodiny Etherea (opens in a new tab) probíhají každé úterní odpoledne. Tyto hodinové individuální schůzky jsou příležitostí zeptat se nás na jakékoli otázky ohledně bezpečnosti, řešit problémy pomocí našich nástrojů a získat zpětnou vazbu od odborníků na váš současný přístup. Pomůžeme vám projít tímto průvodcem.

Připojte se na náš Slack: Empire Hacking (opens in a new tab). Pokud máte nějaké dotazy, jsme vždy k dispozici v kanálech #crytic a #ethereum.