Un singolo bug in uno smart contract può costare milioni in pochi secondi e non può essere corretto dopo il deploy. Il nostro servizio di audit individua ogni vulnerabilità prima che lo faccia qualcun altro.
$ domus-audit scan --contract MyToken.sol --chain ethereum ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ DOMUS COIN — Smart Contract Security Audit Engine: Slither + Mythril + Manual Review ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [*] Compiling contract... ✓ OK [*] Building CFG & call graph... ✓ OK [*] Running static analysis... ✓ OK [*] Symbolic execution (Mythril)... ✓ OK [*] Checking SWC registry... ✓ OK ────────────────────────────────────────────────── [CRITICAL] Reentrancy vulnerability — line 87 withdraw() calls external before updating state. SWC-107 [HIGH] Integer overflow in _mint() — L.42 Missing SafeMath. SWC-101 [MEDIUM] tx.origin used for auth — L.103 Phishing risk. Use msg.sender. SWC-115 [LOW] Unlocked pragma ^0.8.0 — L.1 Pin to exact version. SWC-103 ────────────────────────────────────────────────── Issues: 1 critical 2 high 1 medium 1 low Score: 38/100 ▓▓▓▓░░░░░░░░░░░░ FAIL $ domus-audit generate-report --format pdf Generating report... ✓ report.pdf $
Sottratti tramite exploit nel 2022
Degli hack sfrutta bug nei contratti
Il codice è immutabile dopo il deploy
Possibilità di rollback on-chain
Il nostro team analizza ogni vettore d'attacco noto e sconosciuto, seguendo il registro SWC (Smart Contract Weakness Classification) e i pattern OWASP for Blockchain.
Una funzione esterna viene chiamata prima che lo stato del contratto venga aggiornato. L'attaccante può re-invocare la funzione ricorsivamente e drenare i fondi.
Operazioni aritmetiche che superano i limiti del tipo uint causano overflow silenzioso. Un saldo che dovrebbe essere 0 diventa il valore massimo possibile.
La funzione selfdestruct() è accessibile senza controllo di accesso adeguato. Chiunque può distruggere il contratto e trasferire tutti i fondi a un indirizzo arbitrario.
Il contratto usa block.timestamp come sorgente di casualità o per decisioni critiche. I miner possono manipolarlo entro ~15 secondi, influenzando il risultato.
L'uso di block.number, blockhash o block.difficulty come fonte di entropia è predicibile e manipolabile dai miner, rendendo le funzioni "random" completamente prevedibili.
Usare tx.origin invece di msg.sender per l'autenticazione espone a attacchi phishing: un contratto malevolo può impersonare l'utente chiamando il contratto target.
Condizioni di assert o require mal configurate possono essere sfruttate per bloccare il contratto in stati irrecuperabili o per bypassare controlli di accesso.
Loop su array non limitati o operazioni costose in funzioni critiche possono superare il gas limit del blocco, rendendo il contratto inutilizzabile permanentemente.
Proxy pattern e meccanismi di upgrade non protetti adeguatamente permettono a un attaccante di sostituire l'implementazione con codice malevolo.
Una versione di Solidity non fissata (^0.8.0) può portare il contratto a essere compilato con versioni diverse che introducono comportamenti non previsti o bug noti.
Variabili di stato senza visibilità esplicita espongono dati che dovrebbero essere privati. Anche le variabili private sono leggibili on-chain da chiunque.
Segnalazioni di pattern di codice non ottimali, eventi mancanti, funzioni non usate, ottimizzazione del gas e conformità agli standard OpenZeppelin e EIP più recenti.
Un approccio a quattro livelli che combina analisi automatizzata, revisione manuale approfondita e un ciclo di fix & re-audit per garantire la massima copertura.
Raccogliamo il codice sorgente, la documentazione tecnica e definiamo lo scope dell'audit: quali contratti, quale versione di Solidity, quale chain. Valutiamo anche la dipendenza da librerie esterne (OpenZeppelin, ecc.).
Eseguiamo tool di analisi statica e simbolica (Slither, Mythril, Echidna) per identificare automaticamente vulnerabilità note, pattern insicuri e deviazioni dagli standard. È la prima rete di sicurezza.
I nostri senior auditor analizzano il codice riga per riga: logica di business, flussi di controllo, gestione degli accessi, interazioni tra contratti e pattern di attacco non rilevabili in modo automatico.
Sviluppiamo exploit proof-of-concept per le vulnerabilità trovate, verificando la reale sfruttabilità in un ambiente di test (fork della mainnet con Foundry/Hardhat). Solo vulnerabilità reali nel report.
Consegniamo un report dettagliato per ogni vulnerabilità: severity, descrizione tecnica, prova di sfruttabilità (PoC), impatto economico stimato e raccomandazione specifica di fix con codice corretto.
Il team del progetto implementa i fix. Effettuiamo un re-audit mirato per verificare che le vulnerabilità siano state risolte correttamente e che i fix non abbiano introdotto nuovi problemi. Rilasciamo il certificato finale.
Non consegniamo output automatizzati dei tool. Il nostro report è scritto da auditor senior: ogni issue è spiegata in linguaggio chiaro, con PoC dimostrativi e fix specifici pronti all'implementazione.
Esempio illustrativo. I valori variano per ogni progetto.
Nessun tool da solo copre tutto. Combiniamo analisi automatizzata e revisione manuale per una copertura superiore al 95%.
Framework di analisi statica sviluppato da Trail of Bits. Rileva vulnerabilità note, ottimizzazioni del gas e deviazioni dalle best practice Solidity con 80+ detector predefiniti.
Analisi con esecuzione simbolica (SMT solver) che esplora tutti i possibili percorsi di esecuzione del contratto. Rileva reentrancy, overflow e dipendenza da timestamp in modo formale.
Fuzzer sviluppato da Trail of Bits. Genera input casuali per trovare condizioni limite che violano le invarianti del contratto. Particolarmente efficace per logiche di business complesse.
Ambienti di sviluppo per replicare exploit su fork della mainnet. Permette di dimostrare concretamente la sfruttabilità delle vulnerabilità trovate con test ripetibili.
Il 40% delle vulnerabilità critiche non è rilevabile automaticamente. La revisione manuale da parte di senior auditor è la componente più preziosa del processo.
Ogni vulnerabilità è mappata al registro SWC (Smart Contract Weakness Classification) e ai pattern OWASP for Blockchain per una classificazione standardizzata e confrontabile.
Risposta breve: chiunque abbia uno smart contract che gestisce valore reale.
DEX, lending protocol, yield aggregator, stablecoin: qualsiasi protocollo che gestisce liquidità degli utenti è un bersaglio primario. L'audit è prerequisito per il lancio.
Prima del lancio di un token, l'audit è spesso richiesto dai launchpad e dagli exchange come condizione per il listing. Aumenta la fiducia degli investitori.
Contratti ERC-721/1155 con logiche di minting, royalties e whitelist. Vulnerabilità nel minting possono permettere di coniare infiniti NFT o rubare royalties.
Contratti di governance mal progettati possono permettere attacchi di flash-loan voting o takeover malevoli della DAO. L'audit analizza ogni meccanismo di voto.
Aziende che integrano smart contract nei propri processi (supply chain, loyalty, tokenizzazione) necessitano di audit per garanzie legali e assicurative.
Ogni upgrade di un contratto tramite proxy pattern introduce nuovi rischi. L'audit pre-upgrade verifica che la migrazione non apra nuove vulnerabilità.
Risposta alle domande più comuni sull\'audit di smart contract.
Richiedi un auditContattaci prima del deploy. Una vulnerabilità non trovata da noi verrà trovata da qualcun altro — e il costo sarà molto più alto di un audit preventivo.