Nejpoužívanější fragment kódu Java pro přetečení zásobníku obsahuje chybu

Jáva

Studie publikovaná v Říjen 2018 v časopise Empirical Software Engineering akademici Sebastian Baltes a Stephan Diehl odhalil, že fragment kódu poskytnutý v odpověď na otázku od Přetečení zásobníku v září 2010, Andreas Lundblad, Java developer ve společnosti Palantir, Je to nejpoužívanější fragment kódu Java na komunitní platformě.

Nicméně, v příspěvku minulý týden, Lundblad vysvětlil, že kód byl vadný a že nesprávně převádí počet bajtů v lidsky čitelných formátech. Dotčený kód nashromáždil více než tisíc doporučení a byl také zahrnut do mnoha projektů a je v úložištích na GitHubu přibližně 7 tisíckrát.

Je pozoruhodné, že chyba nebyla uživateli nalezena kdo použil tento kód ve svých projektech, ale původním autorem tipu.

Uvažovaný kód převedl velikost bajtu ve čitelné formě, například na 110592 převedenou na „110.6 kB“ nebo „108.0 KiB“. Kód byl navržen jako varianta dříve navrženého doporučení, optimalizovaného pomocí logaritmů, ve kterých byla hodnota určena vydělením počáteční hodnoty ve smyčce «10 18, 10 15, 10 12, 10 19, 10 6, 10 3 a 10 0 " , i když je dělitel větší než původní hodnota v bajtech.

Kvůli nepřesným výpočtům v optimalizované verzi (dlouhý přetečení hodnoty), výsledek zpracování velmi velkých čísel (exabajty) neodpovídaly realitě.

Lundblad vysvětlil, že kód obsahoval triviální chybu převodu, která vedla pouze k mírně nepřesným odhadům velikosti souboru. To znamená, že se odhaduje, že by to bylo mnohem horší.

Kód mohl obsahovat chybu zabezpečení, například. Pokud by tomu tak bylo, oprava všech zranitelných aplikací by trvala měsíce nebo roky a uživatelé by byli vystaveni útokům.

Autor doporučení se také pokusil na problém upozornit používat příklady bez odkazu na zdroj a bez zadání licence.

"V relacích spolupráce zahrnujících více lidských kodérů jsme ručně vyhodnotili každou část kódu z hlediska zranitelnosti zabezpečení podle pokynů CWE (Common Weakness Enumeration).

Z 72,483 69 naskenovaných fragmentů kódu použitých alespoň v jednom projektu hostovaném na GitHubu jsme našli celkem 29 zranitelných fragmentů kódu klasifikovaných do XNUMX typů. Mnoho ze studovaných úryvků kódu ještě není opraveno, “uvedli vědci ve své zprávě.

69 zranitelných fragmentů kódu nalezeno na přetečení zásobníku znovu použito v celkem 2859 projektech GitHub. Aby zlepšili kvalitu sdílených fragmentů kódu na Stack Overflow, vyvinuli rozšíření prohlížeče, které umožňuje uživatelům Stack Overflow vyhledávat zranitelnosti ve fragmentech, když si je stáhnou na platformu.

Navzdory výhradám výzkumníků však vývojáři stále kopírují kód přetečení zásobníku do svých projektů bez provedení analýzy.

Ashkan Sami, docent IT, strojírenství a informační technologie na Shirazské univerzitě v Íránu to řekl

"Výzkum byl pokusem prozkoumat, jak se vadný kód migruje ze Stack Overflow na GitHub." V zásadě se snažíme ukázat, že používání kódu Stack Overflow bez bližšího zkoumání může vést k zranitelnosti aplikace, “uvedl Sami. Studie také odkazuje na akademický článek z roku 2017.

Podle tohoto článku bylo v 1161 milionu aplikací pro Android dostupných na Google Play použito 1.3 XNUMX nezabezpečených fragmentů kódu zveřejněných na Stack Overflow.

Kromě předchozí studie 46% vývojářů, kteří používali kód StackOverflow bez uvedení autora, 75% nevědělo, že kód je licencován pod CC BY-SA a 67% nevědělo, že to znamená potřebu atribuce.

Podle údajů z jiných studií je použití ukázkového kódu spojeno nejen s rizikem chyb v kódu, ale také s chybami zabezpečení.

Například po analýze 72483 69 vzorků kódu C ++ na StackOverflow identifikovali vědci závažné chyby zabezpečení u 0.09 vzorků (což je XNUMX%), které jsou zahrnuty v seznamu nejoblíbenějších doporučení.

zdroj: https://programming.guide


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.