Siamo pronti per il codice generato dall’intelligenza artificiale? Intelligenza dei dati PlatoBlockchain. Ricerca verticale. Ai.

Siamo pronti per il codice generato dall'intelligenza artificiale?

Negli ultimi mesi ci siamo meravigliati della qualità dei volti, delle immagini di gatti, dei video, dei saggi e persino dei disegni generati dal computer. Anche l'intelligenza artificiale (AI) e l'apprendimento automatico (ML) sono entrati silenziosamente nello sviluppo di software, con strumenti come GitHub Copilot, Tabnine, Polycode, e altri fare il passo logico successivo di inserire la funzionalità di completamento automatico del codice esistente sugli steroidi AI. A differenza delle cat pics, però, l’origine, la qualità e la sicurezza del codice dell’applicazione possono avere implicazioni di vasta portata e, almeno per quanto riguarda la sicurezza, la ricerca mostra che il rischio è reale.

Precedente ricerca accademica ha già dimostrato che GitHub Copilot genera spesso codice con vulnerabilità di sicurezza. Più recentemente, l’analisi pratica dell’ingegnere della sicurezza di Invicti Kadir Arslan lo ha dimostrato suggerimenti di codice non sicuri sono ancora la regola piuttosto che l'eccezione con Copilot. Arslan ha scoperto che i suggerimenti per molte attività comuni includevano solo l'essenziale, spesso prendendo il percorso più elementare e meno sicuro, e che accettarli senza modifiche poteva portare a applicazioni funzionali ma vulnerabili.

Uno strumento come Copilot è (in base alla progettazione) il completamento automatico di un livello superiore, addestrato su codice open source per suggerire snippet che potrebbero essere rilevanti in un contesto simile. Ciò rende la qualità e la sicurezza dei suggerimenti strettamente legate alla qualità e alla sicurezza dell'insieme formativo. Quindi le domande più grandi non riguardano Copilot o qualsiasi altro strumento specifico, ma il codice software generato dall’intelligenza artificiale in generale.

È ragionevole supporre che Copilot sia solo la punta della lancia e che generatori simili diventeranno comuni negli anni a venire. Ciò significa che noi, l’industria tecnologica, dobbiamo iniziare a chiederci come viene generato tale codice, come viene utilizzato e chi si assumerà la responsabilità quando le cose vanno male.

Sindrome del navigatore satellitare

Il completamento automatico del codice tradizionale che cerca le definizioni delle funzioni per completare i nomi delle funzioni e ricordarti quali argomenti ti servono è un enorme risparmio di tempo. Poiché questi suggerimenti sono semplicemente una scorciatoia per cercare personalmente i documenti, abbiamo imparato a fidarci implicitamente di ciò che suggerisce l'IDE. Una volta che uno strumento basato sull’intelligenza artificiale arriva, non è più garantito che i suoi suggerimenti siano corretti, ma sembrano comunque amichevoli e affidabili, quindi è più probabile che vengano accettati.

Soprattutto per gli sviluppatori meno esperti, la comodità di ottenere un blocco di codice gratuito incoraggia un cambiamento di mentalità da "Questo codice è abbastanza vicino a quello che scriverei" a "Come posso modificare questo codice in modo che funzioni per me".

GitHub afferma molto chiaramente che i suggerimenti di Copilot dovrebbero sempre essere attentamente analizzati, rivisti e testati, ma la natura umana impone che anche il codice scadente venga occasionalmente messo in produzione. È un po’ come guidare guardando più il GPS che la strada.

Problemi di sicurezza della catena di fornitura

I Crisi di sicurezza di Log4j ha portato alla ribalta la sicurezza della catena di fornitura del software e, in particolare, la sicurezza open source, con un recente Nota della Casa Bianca sullo sviluppo di software sicuro e una nuova disegno di legge sul miglioramento della sicurezza open source. Con queste e altre iniziative, la presenza di codice open source nelle proprie applicazioni potrebbe presto dover essere scritto in una distinta base del software (SBOM), cosa possibile solo se si include consapevolmente una dipendenza specifica. Anche gli strumenti di analisi della composizione del software (SCA) si basano su tale conoscenza per rilevare e contrassegnare componenti open source obsoleti o vulnerabili.

Ma cosa succede se la tua applicazione include codice generato dall'intelligenza artificiale che, in definitiva, ha origine da un set di formazione open source? In teoria, se anche un solo suggerimento sostanziale è identico al codice esistente e accettato così com'è, potresti avere codice open source nel tuo software ma non nella tua SBOM. Ciò potrebbe portare a problemi di conformità, per non parlare della potenziale responsabilità se il codice risulta insicuro e provoca una violazione, e la SCA non ti aiuterà, poiché può solo trovare dipendenze vulnerabili, non vulnerabilità nel tuo codice .

Insidie ​​di licenza e attribuzione

Continuando su questa linea di pensiero, per utilizzare il codice open source è necessario rispettare i termini di licenza. A seconda della specifica licenza open source, dovrai almeno fornire l'attribuzione o talvolta rilasciare il tuo codice come open source. Alcune licenze vietano del tutto l'uso commerciale. Qualunque sia la licenza, devi sapere da dove proviene il codice e come viene concesso in licenza.

Ancora una volta, cosa succede se nella tua applicazione è presente un codice generato dall'intelligenza artificiale che risulta essere identico al codice open source esistente? Se effettuassi un audit, scopriresti che stai utilizzando il codice senza l'attribuzione richiesta? O forse hai bisogno di rendere open source parte del tuo codice commerciale per rimanere conforme? Forse questo non è ancora un rischio realistico con gli strumenti attuali, ma questo è il tipo di domande che dovremmo porci tutti oggi, non tra 10 anni. (E per essere chiari, GitHub Copilot ha un filtro opzionale per bloccare i suggerimenti che corrispondono al codice esistente per ridurre al minimo i rischi della catena di fornitura.)

Implicazioni più profonde sulla sicurezza

Tornando alla sicurezza, un modello AI/ML è buono (e altrettanto cattivo) quanto il suo set di addestramento. Lo abbiamo visto in passato - ad esempio, nei casi di algoritmi di riconoscimento facciale che mostrano pregiudizi razziali a causa dei dati su cui sono stati addestrati. Quindi, se abbiamo ricerche che dimostrano che un generatore di codice produce spesso suggerimenti senza considerare la sicurezza, possiamo dedurre che questo è ciò che il suo set di apprendimento (cioè il codice disponibile al pubblico) era simile. E cosa succederebbe se il codice insicuro generato dall’intelligenza artificiale si ripercuotesse poi su quella base di codice? I suggerimenti potranno mai essere sicuri?

Le domande di sicurezza non si fermano qui. Se i generatori di codici basati sull’intelligenza artificiale guadagnassero popolarità e iniziassero a rappresentare una percentuale significativa del nuovo codice, è probabile che qualcuno tenterà di attaccarli. È già possibile ingannare il riconoscimento delle immagini dell’IA avvelenandone il set di apprendimento. Prima o poi, gli autori malintenzionati proveranno a inserire codice univoco vulnerabile nei repository pubblici nella speranza che venga fornito in suggerimenti e alla fine finisca in un'applicazione di produzione, esponendola a un facile attacco.

E che dire della monocultura? Se più applicazioni finiscono per utilizzare lo stesso suggerimento altamente vulnerabile, qualunque sia la sua origine, potremmo assistere a epidemie di vulnerabilità o forse anche a vulnerabilità specifiche dell’intelligenza artificiale.

Tenere d'occhio l'intelligenza artificiale

Alcuni di questi scenari possono sembrare inverosimili oggi, ma sono tutte cose di cui noi del settore tecnologico dobbiamo discutere. Ancora una volta, GitHub Copilot è sotto i riflettori solo perché attualmente è all’avanguardia e GitHub fornisce chiari avvertimenti sugli avvertimenti relativi ai suggerimenti generati dall’intelligenza artificiale. Come il completamento automatico del telefono o i suggerimenti di percorso nel navigatore, sono solo suggerimenti per semplificarci la vita e sta a noi prenderli o lasciarli.

Con il loro potenziale di migliorare esponenzialmente l’efficienza dello sviluppo, i generatori di codice basati sull’intelligenza artificiale diventeranno probabilmente una parte permanente del mondo del software. In termini di sicurezza delle applicazioni, tuttavia, questa è un’altra fonte di codice potenzialmente vulnerabile che deve superare rigorosi test di sicurezza prima di poter essere messo in produzione. Stiamo cercando un modo completamente nuovo per inserire le vulnerabilità (e le dipendenze potenzialmente non controllate) direttamente nel tuo codice proprietario, quindi ha senso trattare le basi di codice potenziate dall'intelligenza artificiale come non attendibili finché non vengono testate, e questo significa testare tutto tutte le volte che vuoi. Potere.

Anche soluzioni ML relativamente trasparenti come Copilot sollevano già alcune questioni legali ed etiche, per non parlare dei problemi di sicurezza. Ma immagina che un giorno qualche nuovo strumento inizi a generare codice che funziona perfettamente e supera i test di sicurezza, tranne che per un piccolo dettaglio: nessuno sa come funziona. È allora che è il momento di farsi prendere dal panico.

Timestamp:

Di più da Lettura oscura