Lo snippet di codice Java più utilizzato su Stack Overflow contiene un errore

Java

Uno studio pubblicato in Ottobre 2018 nella rivista Empirical Software Engineering dagli accademici Sebastian Baltes e Stephan Diehl ha rivelato che uno snippet di codice fornito in rispondere a una domanda da Stack Overflow nel settembre 2010 di Andreas Lundblad, Sviluppatore Java presso Palantir, è lo snippet di codice Java più utilizzato sulla piattaforma della community.

Tuttavia, in un post della scorsa settimana, Lundblad ha spiegato che il codice era difettoso e che stava convertendo in modo errato il numero di byte in formati leggibili dall'uomo. Il codice in questione ha accumulato più di mille consigli ed è stato incluso anche in molti progetti ed è nei repository su GitHub circa 7mila volte.

E 'degno di nota l'errore non è stato trovato dagli utenti chi ha utilizzato questo codice nei propri progetti, ma dall'autore originale della punta.

Il codice considerato ha convertito la dimensione in byte in formato leggibile, ad esempio 110592 convertito in "110.6 kB" o "108.0 KiB". Il codice è stato proposto come una variante del consiglio precedentemente proposto, ottimizzato utilizzando i logaritmi, in cui il valore è stato determinato dividendo il valore iniziale in un ciclo per «10 18, 10 15, 10 12, 10 19, 10 6, 10 3 e 10 0 " , anche se il divisore è maggiore del valore originale in byte.

A causa di calcoli imprecisi nella versione ottimizzata (overflow valore lungo), il risultato dell'elaborazione di numeri molto grandi (exabyte) non corrispondevano alla realtà.

Lundblad ha spiegato che il codice conteneva un banale errore di conversione che ha portato solo a stime delle dimensioni del file leggermente imprecise. Detto questo, si stima che sarebbe stato molto peggio di così.

Il codice potrebbe aver contenuto una vulnerabilità di sicurezza, per esempio. In tal caso, ci sarebbero voluti mesi o anni per riparare tutte le applicazioni vulnerabili, esponendo gli utenti ad attacchi.

L'autore del consiglio ha anche cercato di attirare l'attenzione sul problema utilizzare esempi senza riferimento alla fonte e senza specificare una licenza.

"In sessioni collaborative che coinvolgono più programmatori umani, abbiamo valutato manualmente ogni parte di codice per le vulnerabilità di sicurezza secondo le istruzioni CWE (Common Weakness Enumeration).

Su 72,483 snippet di codice esaminati utilizzati in almeno un progetto ospitato su GitHub, abbiamo trovato un totale di 69 frammenti di codice vulnerabili classificati in 29 tipi. Molti degli snippet di codice studiati non sono ancora stati risolti ", hanno detto i ricercatori nel loro rapporto.

I 69 frammenti di codice vulnerabili trovato su Stack Overflow riutilizzato in un totale di 2859 progetti GitHub. Per migliorare la qualità degli snippet di codice condivisi su Stack Overflow, hanno sviluppato un'estensione del browser che consente agli utenti di Stack Overflow di cercare le vulnerabilità negli snippet quando li scaricano sulla piattaforma.

Tuttavia, nonostante gli avvertimenti dei ricercatori, gli sviluppatori copiano ancora il codice Stack Overflow nei loro progetti senza eseguire un'analisi.

Ashkan Sami, professore associato di informatica, ingegneria e tecnologia dell'informazione all'Università di Shiraz in Iran, ha detto questo

"La ricerca è stata un tentativo di esaminare in che modo il codice difettoso viene migrato da Stack Overflow a GitHub. Fondamentalmente quello che abbiamo cercato di dimostrare è che l'utilizzo del codice Stack Overflow senza esaminarlo da vicino può portare a vulnerabilità delle applicazioni ", ha affermato Sami. Lo studio fa anche riferimento a un articolo accademico del 2017.

Secondo questo articolo, 1161 snippet di codice non sicuri pubblicati su Stack Overflow sono stati utilizzati in 1.3 milioni di app Android disponibili su Google Play.

Oltre a uno studio precedente, il 46% degli sviluppatori che hanno utilizzato il codice StackOverflow senza specificare l'autore, il 75% non sapeva che il codice è concesso in licenza con CC BY-SA e il 67% non sapeva che ciò implica la necessità di attribuzione.

Secondo i dati di altri studi, l'utilizzo del codice di esempio è associato non solo al rischio di bug nel codice, ma anche a vulnerabilità.

Ad esempio, dopo aver analizzato 72483 campioni di codice C ++ su StackOverflow, i ricercatori hanno identificato gravi vulnerabilità in 69 campioni (pari allo 0.09%), inclusi nell'elenco delle raccomandazioni più popolari.

fonte: https://programming.guide


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.