ChatGPT e la sicurezza degli smart contract

a robot holding a wine

Mentre i copywriter e gli artisti digitali tremano all’idea che GPT3 possa lasciarli tutti senza lavoro, un’altra categoria di lavoratori digitali, ovvero gli sviluppatori, cominciano a rendersi conto che l’IA può scrivere codice a partire da requisiti in inglese puro. Nel 2016 ho scritto questo post I computer del futuro non si programmano, si addestrano che riassume i miei pensieri sull’argomento.

Una caratteristica di ChatGPT è senz’altro la capacità di produrre o analizzare codice di programmazione. Sembra che i progettisti abbiano proprio voluto mettersi alla prova con la capacità di muoversi al confine tra il linguaggio formale della macchina a quello informale dell’utente.

Infatti è possibile da un lato inserire dei requisiti in linguaggio umano ed ottenere il corrispondente codice solidity che li implementa e dall’altro è possibile chiedere a ChatGPT di analizzare uno snippet di codice.

Questo si presta ovviamente all’utilizzo dello strumento in ambito sviluppo o perfino in ambito audit del codice degli smart contract.

Ma fino a che punto possiamo spingerci?

E’ sicuro utilizzare ChatGPT per generare il codice dei nostri smart contract?

E’ sufficiente chiedere e la chat genera il codice, come nell’esempio qui sotto in cui faccio generare un codice per un token ERC20

Naturalmente fin qui niente di ché, in fondo avrei potuto ottenere di più e meglio attraverso un qualunque wizard online per generare un token standard. Le cose si fanno più interessanti se aggiungo requisiti non standard.

E al codice precedente Chat aggiunge alcune funzioni e strutture dati

Come ad esempio una modifica a transfer

E la definizione del mapping che indica chi può spendere i propri token.

Purtroppo non esegue esattamente quello che intendevo in quanto tutto il balance dell’utente resta bloccato e non solo quello in eccesso che deriva dall’interesse del 10%. Ma in fondo non mi sono proprio speso per farmi capire. Un programmatore umano mi avrebbe capito senza commettere lo stesso errore?

Analisi del codice da parte di ChatGPT


Vediamo come se la cava con l’analisi del codice

Il risultato è sorprendente, riesce ad interpretare in linguaggio umano la logica implementata dal codice

Se poi ci spingiamo alla richiesta di un’analisi di eventuali bug o vulnerabilità (notare che il codice è volutamente vulnerabile ad un reentrancy attack, ovvero la call ad un contratto esterno potrebbe causare un rientro dell’esecuzione con ulteriore call senza mai azzerare il balance)

Quindi in pratica, Chat non è in grado di individuare in questo caso la code reentrancy e si limita a suggerire delle best practice.

Inserimento di codice vulnerabile

E se provassimo a far creare a lui un codice inclusivo di una data vulnerabilità? (credits Mauro Pili per l’idea)

In realtà è una domanda a trabocchetto in quanto solidity se eseguito nel contesto di uno smart contract non è vulnerabile a race conditions, dato che ogni transazione viene eseguita separatamente dalle altre ed in sequenza in modo atomico dai nodi minatori. La sua risposta pertanto è imprecisa, ma in fondo anche la domanda era mal posta.

Conclusioni

Forse il lavoro degli sviluppatori e degli auditor di smart contract non è ancora a rischio di venire AI-fied. Tutto sommato anzi, direi che strumenti come ChatGPT possono arricchire il toolkit dei professionisti ed avere dei continui confronti fra le proprie conoscenze e quelle distillate dall’algoritmo. In un certo senso potrà essere usato come gli altri code checker e static analyzer, ma con un’interfaccia conversazionale molto più interessante.

Rispondi

, ,

Blog at WordPress.com.

%d blogger hanno fatto clic su Mi Piace per questo: