پرکاربردترین قطعه کد جاوا در Stack Overflow حاوی خطایی است

جاوه

مطالعه منتشر شده در اکتبر 2018 در مجله مهندسی نرم افزار تجربی توسط دانشگاهیان سباستین بالتس و استفان دیل نشان داد که قطعه کد ارائه شده در پاسخ به سوالی از Stack Overflow در سپتامبر 2010 توسط Andreas Lundblad، توسعه دهنده جاوا در Palantir ، این پرکاربردترین قطعه کد جاوا در بستر انجمن است.

با این حال، هفته گذشته در یک پست ، لوندبلاد توضیح داد که کد معیوب است و به اشتباه باعث تغییر تعداد بایت ها می شود در قالب های قابل خواندن توسط انسان. کد موردنظر بیش از هزار توصیه جمع کرده و همچنین در بسیاری از پروژه ها گنجانده شده است و تقریباً 7 هزار بار در مخازن GitHub است.

قابل ذکر است که خطا توسط کاربران یافت نشد که از این کد در پروژه های خود استفاده کرده اند ، اما توسط نویسنده اصلی نکته.

کدی که در نظر گرفته شده اندازه بایت را به شکل قابل خواندن تبدیل کرده است ، به عنوان مثال 110592 به تبدیل شده است "110.6 کیلوبایت" یا "108.0 کیلوبایت". این کد به عنوان گونه ای از توصیه های قبلی ارائه شده است که با استفاده از لگاریتم ها بهینه سازی شده است ، که در آن مقدار با تقسیم مقدار اولیه در یک حلقه بر «10 18 ، 10 15 ، 10 12 ، 10 19 ، 10 6 ، 10 3 و 10 0 ، حتی در حالی که مقسوم علیه از مقدار اصلی در بایت بیشتر است.

به دلیل محاسبات نادرست در نسخه بهینه شده (سرریز مقدار طولانی) ، نتیجه پردازش تعداد بسیار زیاد (exabytes) با واقعیت مطابقت نداشت.

لوندبلاد توضیح داد كه این كد حاوی یك خطای تبدیل پیش پا افتاده است كه فقط منجر به برآورد اندكی نادرست اندازه پرونده می شود. با این گفته ، تخمین زده می شود که خیلی بدتر از این هم بوده است.

این کد می تواند شامل یک آسیب پذیری امنیتی باشد، مثلا. اگر چنین بود ، ترمیم همه برنامه های آسیب پذیر ماهها یا سالها طول می کشید تا کاربران را در معرض حملات قرار دهید.

نویسنده مشاوره همچنین سعی کرد توجه را به مسئله جلب کند استفاده از مثالها بدون مراجعه به منبع و بدون تعیین مجوز.

"در جلسات مشترک که شامل چندین رمزگذار انسانی بود ، ما به صورت دستی هر کد کد را برای آسیب پذیری های امنیتی با توجه به دستورالعمل های CWE (شمارش ضعف مشترک) ارزیابی کردیم.

از 72,483،69 قطعه کد اسکن شده که حداقل در یک پروژه میزبان GitHub استفاده شده است ، در مجموع 29 قطعه کد آسیب پذیر را در XNUMX نوع طبقه بندی کردیم. بسیاری از قطعه های کد بررسی شده هنوز ثابت نشده اند "، محققان در گزارش خود گفتند.

69 قطعه کد آسیب پذیر موجود در پشته سرریز در مجموع 2859 پروژه GitHub مورد استفاده مجدد قرار گرفت. برای بهبود کیفیت قطعه کد مشترک در Stack Overflow ، آنها یک پسوند مرورگر ایجاد کرده اند که به کاربران Stack Overflow اجازه می دهد هنگام بارگیری آنها در سیستم عامل ، نقاط ضعف را جستجو کنند.

با این وجود ، علی رغم تذکرات محققان ، توسعه دهندگان همچنان بدون انجام تجزیه و تحلیل ، کد Stack Overflow را در پروژه های خود کپی می کنند.

اشکان سامی ، دانشیار IT ، مهندسی و فناوری اطلاعات در دانشگاه شیراز در ایران ، گفت که

"این تحقیق تلاشی برای بررسی نحوه انتقال کد معیوب از Stack Overflow به GitHub بود. اساساً آنچه ما سعی کرده ایم نشان دهیم این است که استفاده از کد Stack Overflow بدون دقت در مشاهده آن می تواند منجر به آسیب پذیری برنامه شود. " این مطالعه همچنین به یک مقاله دانشگاهی از سال 2017 اشاره دارد.

طبق این مقاله ، از 1161،1.3 قطعه کد ناامن ارسال شده در Stack Overflow در XNUMX میلیون برنامه اندرویدی موجود در Google Play استفاده شده است.

علاوه بر مطالعه قبلی ، 46٪ از توسعه دهندگانی که بدون مشخص کردن نویسنده از کد StackOverflow استفاده کرده اند ، 75٪ نمی دانند که کد تحت CC BY-SA مجوز دارد و 67٪ نمی دانند که این به معنی نیاز به اسناد است.

طبق داده های سایر مطالعات ، استفاده از کد نمونه نه تنها با خطر بروز اشکال در کد همراه است بلکه با آسیب پذیری نیز همراه است.

به عنوان مثال ، محققان پس از تجزیه و تحلیل 72483،69 نمونه کد C ++ در StackOverflow ، آسیب پذیری های جدی را در 0.09 نمونه (که XNUMX is است) ، در لیست محبوب ترین توصیه ها ، شناسایی کردند.

Fuente: https://programming.guide


محتوای مقاله به اصول ما پیوست اخلاق تحریریه. برای گزارش یک خطا کلیک کنید اینجا.

اولین کسی باشید که نظر

نظر خود را بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند با *

*

*

  1. مسئول داده ها: میگل آنخل گاتون
  2. هدف از داده ها: کنترل هرزنامه ، مدیریت نظرات.
  3. مشروعیت: رضایت شما
  4. ارتباط داده ها: داده ها به اشخاص ثالث منتقل نمی شوند مگر با تعهد قانونی.
  5. ذخیره سازی داده ها: پایگاه داده به میزبانی شبکه های Occentus (EU)
  6. حقوق: در هر زمان می توانید اطلاعات خود را محدود ، بازیابی و حذف کنید.