Найбільш використовуваний фрагмент коду Java у Stack Overflow містить помилку

Java

Дослідження, опубліковане в Жовтень 2018 в журналі Empirical Software Engineering академіками Себастьяном Бальтесом та Стефаном Ділем виявив, що фрагмент коду, наданий в відповідь на запитання від Переповнення стеку у вересні 2010 року Андреасом Лундбладом, Розробник Java у Palantir, Це найпоширеніший фрагмент коду Java на платформі спільноти.

Проте, у дописі минулого тижня, Лундблад пояснив, що код був несправним і що він неправильно перетворював кількість байт у зручних для читання форматах. Код, про який йде мова, накопичив понад тисячу рекомендацій, а також був включений у багато проектів і знаходиться у сховищах на GitHub приблизно 7 тисяч разів.

Примітно, що користувачі не знайшли помилки хто використовував цей код у своїх проектах, але оригінальним автором підказки.

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

Через неточні розрахунки в оптимізованій версії (довге переповнення значення), результат обробки дуже великих чисел (екзабайти) не відповідали дійсності.

Лундблад пояснив, що код містив тривіальну помилку перетворення, що призвела лише до дещо неточних оцінок розміру файлу. Однак, за оцінками, це було б набагато гірше, ніж це.

Код міг містити вразливість системи безпеки, наприклад. Якби це було так, на відновлення всіх вразливих програм, піддаючи користувачів атакам, зайняли б місяці чи роки.

Автор поради також намагався привернути увагу до проблеми використовувати приклади без посилання на джерело та без зазначення ліцензії.

«Під час спільних сеансів, за участю декількох людських кодерів, ми вручну оцінювали кожен фрагмент коду на наявність уразливостей безпеки відповідно до інструкцій CWE (Common Weakness Enumeration).

Із 72,483 69 відсканованих фрагментів коду, використаних принаймні в одному проекті, розміщеному на GitHub, ми виявили загалом 29 вразливих фрагментів коду, класифікованих за XNUMX типами. Багато вивчених фрагментів коду ще не виправлені ", - зазначили дослідники у своєму звіті.

69 уразливих фрагментів коду знайдено на Переповнення стека повторно використаний у загальній складності 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%), включених до списку найпопулярніших рекомендацій.

Фуенте: https://programming.guide


Будьте першим, щоб коментувати

Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

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