Nightshade porta l'analisi di sicurezza ai contratti Compact di Midnight

Lo sviluppatore Dickson Wu ha testato lo strumento open source contro bug inseriti deliberatamente e 300 contratti pubblicamente disponibili.

By SongMarketCap

Midnight News - Nightshade porta l'analisi di sicurezza ai contratti Compact di Midnight

Nightshade è uno strumento di analisi statica progettato per aiutare gli sviluppatori a esaminare smart contract scritti in Compact, il linguaggio di programmazione usato per creare applicazioni su Midnight.

Presentato da Wu sul Midnight Forum il 29 ottobre, lo strumento verifica il codice sorgente rispetto a 96 regole e segnala schemi che possono richiedere un esame più approfondito. I risultati indicano la riga di codice pertinente e includono informazioni pensate per aiutare gli sviluppatori a indagare il problema.

Nightshade verifica il codice Compact alla ricerca di modelli di sicurezza

L'analisi statica esamina il codice sorgente senza richiedere l'esecuzione del contratto. Nightshade usa questo approccio per cercare modelli relativi a privacy, autorizzazioni e ad altre parti della logica di un contratto.

Un esempio individuato da Wu riguarda un segreto privato pubblicato nel registro dopo che è stato usato in un controllo di autorizzazione. Uno sviluppatore potrebbe voler usare il segreto per confermare i permessi di un utente mantenendo privato il valore sottostante. Pubblicarlo in seguito potrebbe esporre informazioni che avrebbero dovuto rimanere protette.

Altri controlli cercano risultati di verifica della firma scartati e casi in cui valori witness sono trattati come prova di identità. Lo strumento segnala anche modelli che coinvolgono un tempo fornito dal chiamante senza un vincolo basato sul tempo della chain, così come prove di Merkle che non vengono verificate per l'appartenenza.

Per ogni riscontro, Nightshade fornisce la riga di sorgente pertinente, il percorso seguito dai dati e un suggerimento di correzione, secondo Wu. Questo offre allo sviluppatore un punto di partenza per esaminare come un valore si muove attraverso il contratto e dove si verifica il comportamento segnalato.

Un avviso, da solo, non stabilisce che un contratto sia stato sfruttato o che informazioni siano state esposte. Allo stesso modo, un'analisi completata non è garanzia che un contratto sia sicuro.

Dickson Wu condivide i risultati dei test di Nightshade

Wu ha valutato Nightshade su casi di test contenenti bug inseriti deliberatamente. Ha riferito che lo strumento ha rilevato 263 su 266 casi positivi coperti dalla valutazione.

Lo sviluppatore ha anche testato versioni corrette di quei casi. Nightshade non ha prodotto avvisi per 240 su 242 versioni corrette, mentre ha emesso riscontri per le altre due. I risultati descrivono i casi di test usati in quella valutazione e non stabiliscono un tasso di rilevamento per ogni possibile problema di sicurezza.

Wu ha poi eseguito lo strumento su 300 contratti Compact pubblici provenienti da 144 repository. Ha riferito di non aver riscontrato crash durante l'esercizio e ha identificato 258 contratti che hanno ricevuto un'analisi completa.

La distinzione è importante perché completare una scansione e non trovare problemi sono risultati distinti. Secondo Wu, i contratti che non hanno ricevuto un'analisi completa sono stati segnalati come incompleti invece di essere considerati puliti.

Lo sviluppatore ha pubblicato il metodo di valutazione e i conteggi dei test insieme allo strumento, consentendo ad altri di esaminare come sono stati ottenuti i risultati riportati.

[NEWSBREAK]

Analisi offline e integrazione per sviluppatori

Nightshade viene eseguito in locale e non richiede una connessione internet o un compilatore Compact per analizzare il codice sorgente, secondo Wu. Lo strumento supporta le versioni del compilatore Compact dalla 0.28 alla 0.35.

Gli sviluppatori possono visualizzare i riscontri come testo o esportarli nei formati JSON e SARIF. È inoltre disponibile una GitHub Action per mostrare i risultati durante la revisione delle modifiche al codice proposte, inserendo i riscontri in un workflow che gli sviluppatori potrebbero già usare per esaminare gli aggiornamenti.

Lo strumento è rilasciato sotto la licenza open source Apache 2.0. Wu ha presentato la versione 0.1.1 e ha invitato gli sviluppatori a condividere feedback, segnalare falsi positivi e suggerire regole aggiuntive.