Най-често използваният кодов фрагмент на Java в Stack Overflow съдържа грешка

Ява

Изследване, публикувано в Октомври 2018 г. в списание Empirical Software Engineering от учените Себастиан Балтес и Стефан Дил разкри, че кодов фрагмент, предоставен в отговор на въпрос от Преливане на стека през септември 2010 г. от Андреас Лундблад, Java разработчик в Palantir, това е най-широко използваният кодов фрагмент на Java на платформата на общността.

Въпреки това, в публикация миналата седмица, Lundblad обясни, че кодът е дефектен и че неправилно преобразува броя на байтовете в разбираеми от човека формати. Въпросният код е натрупал повече от хиляда препоръки и е бил включен в много проекти и е в хранилища на GitHub приблизително 7 хиляди пъти.

Забележително е, че грешката не е намерена от потребители които са използвали този код в своите проекти, но от оригиналния автор на съвета.

Разглежданият код преобразува размера на байта в четлива форма, например 110592, преобразуван в "110.6 kB" или "108.0 KiB". Кодът беше предложен като вариант на предложения по-рано съвет, оптимизиран с помощта на логаритми, в който стойността беше определена чрез разделяне на първоначалната стойност в цикъл на «10 18, 10 15, 10 12, 10 19, 10 6, 10 3 и 10 0 ″ , дори докато делителят е по-голям от първоначалната стойност в байтове.

Поради неточни изчисления в оптимизираната версия (препълване на дълга стойност), резултатът от обработката на много големи числа (екзабайти) не отговаряха на реалността.

Lundblad обясни, че кодът съдържа тривиална грешка при преобразуване, която само води до леко неточни оценки на размера на файла. Въпреки това се смята, че би било много по-лошо от това.

Кодът може да съдържа уязвимост в сигурността, например. Ако случаят беше такъв, щеше да отнеме месеци или години, за да се поправят всички уязвими приложения, излагайки потребителите на атаки.

Авторът на съвета също се опита да привлече вниманието към проблема да се използват примери без препратка към източника и без посочване на лиценз.

„По време на съвместни сесии, включващи множество човешки кодери, ние ръчно оценяваме всяка част от кода за уязвимости в сигурността съгласно инструкциите на CWE (Common Weakness Enumeration).

От 72,483 69 сканирани кодови фрагмента, използвани в поне един хостван от GitHub проект, открихме общо 29 уязвими кодови фрагмента, класифицирани в XNUMX типа. Много от изучените кодови фрагменти все още не са фиксирани “, казват изследователите в своя доклад.

69-те уязвими кодови фрагмента намерен в Stack Overflow повторно използвани в общо 2859 проекта на GitHub. За да подобрят качеството на споделените кодови фрагменти в Stack Overflow, те са разработили разширение за браузър, което позволява на потребителите на Stack Overflow да търсят уязвимости във фрагментите, когато ги изтеглят на платформата.

Въпреки предупрежденията на изследователите, разработчиците все още копират кода на Stack Overflow в своите проекти, без да извършват анализ.

Ашкан Сами, доцент по ИТ, инженеринг и информационни технологии от университета Шираз в Иран, каза това

„Изследването беше опит да се изследва как дефектен код се мигрира от Stack Overflow към GitHub. По принцип това, което се опитваме да покажем, е, че използването на кода на Stack Overflow, без да го разглеждаме отблизо, може да доведе до уязвимости на приложенията “, каза Сами. Изследването се позовава и на академична статия от 2017 г.

Според тази статия 1161 несигурни кодови фрагмента, публикувани в Stack Overflow, са използвани в 1.3 милиона приложения за Android, налични в Google Play.

В допълнение към предишно проучване, 46% от разработчиците, които са използвали код на StackOverflow, без да посочат автора, 75% не са знаели, че кодът е лицензиран под CC BY-SA, а 67% не са знаели, че това предполага необходимостта от приписване.

Според данни от други проучвания използването на примерния код е свързано не само с риска от грешки в кода, но и с уязвимости.

Например, след анализ на 72483 69 мостри на C ++ кодове на StackOverflow, изследователите идентифицираха сериозни уязвимости в 0.09 проби (което е XNUMX%), включени в списъка с най-популярните препоръки.

Fuente: https://programming.guide


Съдържанието на статията се придържа към нашите принципи на редакторска етика. За да съобщите за грешка, щракнете върху тук.

Бъдете първите, които коментират

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван.

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.