Najpoužívanejší útržok kódu Java v Stack Overflow obsahuje chybu

Jáva

Štúdia publikovaná v Októbra 2018 v časopise Empirical Software Engineering akademici Sebastian Baltes a Stephan Diehl odhalil, že útržok kódu uvedený v odpoveď na otázku od Prepad zásobníka v septembri 2010, Andreas Lundblad, Java developer v spoločnosti Palantir, Je to najbežnejšie používaný fragment kódu Java na komunitnej platforme.

Avšak, v príspevku minulý týždeň, Lundblad vysvetlil, že kód bol chybný a že nesprávne prevádza počet bajtov v ľudsky čitateľných formátoch. Predmetný kód nahromadil viac ako tisíc odporúčaní a bol tiež zahrnutý do mnohých projektov a je v úložiskách na GitHub približne 7 tisíckrát.

Je pozoruhodné, že chyba sa nenašla používateľom ktorí tento kód použili vo svojich projektoch, ale pôvodným autorom tipu.

Uvažovaný kód previedol veľkosť bytu v čitateľnej podobe, napríklad na 110592 prevedenú na „110.6 kB“ alebo „108.0 KiB“. Kód bol navrhnutý ako variant predtým navrhovaného odporúčania optimalizovaný pomocou logaritmov, v ktorých bola hodnota určená vydelením počiatočnej hodnoty v cykle znakom «10 18, 10 15, 10 12, 10 19, 10 6, 10 3 a 10 0 ″ , aj keď je deliteľ väčší ako pôvodná hodnota v bajtoch.

Z dôvodu nepresných výpočtov v optimalizovanej verzii (dlhý prepad hodnoty), výsledok spracovania veľmi veľkého počtu (exabajty) nezodpovedali realite.

Lundblad vysvetlil, že kód obsahoval triviálnu chybu konverzie, ktorá viedla iba k mierne nepresným odhadom veľkosti súboru. Preto sa odhaduje, že by to bolo oveľa horšie.

Kód mohol obsahovať chybu zabezpečenia, napríklad. Ak by to tak bolo, oprava všetkých zraniteľných aplikácií by vyžadovala mesiace alebo roky, čo by používateľov vystavilo útokom.

Na problém sa pokúsil upozorniť aj autor rady používať príklady bez uvedenia zdroja a bez uvedenia licencie.

„V rámci spoločných stretnutí zahŕňajúcich viac ľudských kódovačov sme manuálne vyhodnotili každý kúsok kódu z hľadiska bezpečnostných chýb podľa pokynov CWE (Common Weakness Enumeration).

Zo 72,483 69 naskenovaných úryvkov kódu použitých aspoň v jednom projekte hostenom na GitHub sme našli celkovo 29 zraniteľných útržkov kódu klasifikovaných do XNUMX typov. Mnoho zo študovaných úryvkov kódu ešte nie je opravených, “uviedli vedci vo svojej správe.

69 zraniteľných úryvkov kódu nájdené na Stack Overflow opätovne použité v celkovo 2859 projektoch GitHub. Na zlepšenie kvality útržkov zdieľaného kódu v Stack Overflow vyvinuli rozšírenie prehliadača, ktoré používateľom Stack Overflow umožňuje vyhľadávať v úryvkoch zraniteľnosti pri ich sťahovaní na platformu.

Napriek výhradám výskumníkov však vývojári stále kopírujú kód Stack Overflow do svojich projektov bez vykonania analýzy.

Ashkan Sami, docent IT, strojárstvo a informačné technológie na iránskej univerzite Shiraz to uviedol

„Výskum bol pokusom preskúmať, ako sa chybný kód migruje zo Stack Overflow na GitHub. V podstate sme sa snažili ukázať, že použitie kódu Stack Overflow bez toho, aby sme sa na neho pozorne dívali, môže viesť k zraniteľnostiam aplikácií, “uviedol Sami. Štúdia odkazuje aj na akademický článok z roku 2017.

Podľa tohto článku sa v 1161 miliónoch aplikácií pre Android dostupných v službe Google Play použilo 1.3 XNUMX neistých úryvkov kódu zverejnených na serveri Stack Overflow.

Okrem predchádzajúcej štúdie 46% vývojárov, ktorí použili kód StackOverflow bez uvedenia autora, 75% nevedelo, že kód má licenciu podľa CC BY-SA, a 67% nevedelo, že to znamená potrebu uvedenia zdroja.

Podľa údajov z iných štúdií je použitie vzorového kódu spojené nielen s rizikom chýb v kóde, ale aj so zraniteľnosťou.

Napríklad po analýze 72483 69 vzoriek kódu C ++ v aplikácii StackOverflow identifikovali vedci závažné chyby v 0.09 vzorkách (čo je XNUMX%), ktoré sú uvedené v zozname najpopulárnejších odporúčaní.

Fuente: https://programming.guide


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.