تا حالا پیش آمده برای وبسایت یا فروشگاه اینترنتی خودتان دنبال یک افزونه، قالب یا کد رایگان باشید؟ درست همان لحظهای که نصبشان میکنید و از کاهش هزینهها و ارتقای سایتتان لذت میبرید، احتمالاً بیخبر درِ پشتیِ سیستم را هم به روی هکرها باز کردهاید!
روزگاری نهچندان دور، خواب و استراحت فقط برای شرکتهای غول فناوری و نرمافزار حرام بود؛ چون باید هر لحظه برای انواع تهدیدات امنیتی، از جمله آسیبپذیریهای کدهای متنباز (اوپنسورس) و نفوذ هکرها به زنجیرهی تامین کدهایشان، آماده میبودند و بیشتر از هر کس دیگری هم قربانی این حملات میشدند. اما امروز ورق برگشته است.
این روزها حتی کسبوکارهای کوچک و مجموعههای غیرفنی در کشورهای در حال توسعه هم برای سرعت بخشیدن به کارها، از برنامهنویسان یا حتی کدهای آماده کمک میگیرند. آمارهای جهانی نشان میدهند که از هر دو شرکت، یکی تیم آیتی داخلی دارد و این تیم مدام مشغول به کدنویسی، ایجاد اتصالات بین نرمافزارهای مختلف و خودکارسازی فرایندهاست. این اتفاق حتی در کسبوکارهایی که هستهی اصلی آنها هیچ ربطی به نرمافزار ندارد هم رخ میدهد؛ مانند نوشتن برنامهای ساده برای اتصال سیستم حسابداری به نرمافزار مدیریت مشتریان (CRM).
گذر از رویکردهای سنتی و حرکت به سمت اتوماسیون همانچیزی است که برای بهرهوری در دنیای مدرن نیاز داریم. اما ماحصل جانبی این پیشرفت، ظهور نسل جدیدی از آسیبپذیریهای نرمافزاری است؛ مشکلاتی که برطرفسازی آنها بسیار پیچیدهتر از نصبِ آخرین آپدیت ویندوز یا اندروید خواهد بود.
توسعهی نرمافزارهای امروزی، بدون استفاده از قطعهکدهای از پیش آماده و متنباز، عملاً ناممکن است. در عین حال، خطرات استفاده از آنها در سالهای اخیر بیشتر و بیشتر شده؛ هم از نظر تنوع حملات و هم از نظر پیچیدگی. در دنیای واقعی زیاد پیش میآید که کدهای مخرب به مخازن اوپنسورس تزریق شوند، اطلاعات حیاتی بهصورت دقیق در دسترس نباشند و یا برنامهنویسان از کدهای منسوخ و ناامن استفاده کنند.
بحرانِ کمبودِ اطلاعاتِ دقیق
حتی اگر سازمان شما یک فرآیند بسیار کارآمد برای مدیریت آسیبپذیریها در نرمافزارهای پولی و تجاری داشته باشد، وقتی پای کدهای متنباز به ماجرا باز میشود، باید تمام آن فرآیند را از نو بسازید. در دنیای کدنویسی متنباز، معروفترین پایگاههای دادهای که ایرادات امنیتی را ثبت میکنند، معمولاً اطلاعاتی ناقص یا نادرست دارند و خیلی دیر بهروزرسانی میشوند. استفاده از این اطلاعات ناقص، درست مانند این است که پزشک بخواهد بر اساس یک آزمایش خون نادرست یا متعلق به سه سال قبل، برای شما داروی حیاتی تجویز کند!
اگر خطرات امنیتی با اطلاعات ناقص اولویتبندی شوند، انگار که بر سر سرنوشت سازمان قمار کرده باشید. در واقع اگر دادههای ابتدایی شما پر از ایراد باشند، هیچ سیستم هوشمندی قرار نیست از مخمصه نجاتتان دهد.
طبق دادههای مجموعهی Sonatype، حدود ۶۵ درصد از آسیبپذیریهای متنبازی که در «پایگاه ملی آسیبپذیریها» (NVD) ثبت شدهاند، فاقد «نمرهی شدت خطر» (CVSS) هستند، یعنی اصلاً سطح خطرشان مشخص نشده است. جالب اینجاست که اگر همین آسیبپذیریهایِ بدونِ نمره بهدرستی بررسی شوند، نزدیک به نیمی از آنها در دستهبندی «خطرِ بالا» قرار میگیرند.
حتی وقتی برای یک ایراد امنیتی نمرهی خطر ثبت شده، منابع مختلف فقط در نیمی از مواقع سرِ میزانِ خطرناک بودنِ آن با هم توافق میکنند. یک منبع ممکن است آسیبپذیری را «بحرانی» و منبعی دیگر آن را «متوسط» ارزیابی کند. از سوی دیگر، جزئیاتی مثل «نسخههای آسیبپذیر» هم با انبوهی خطا و تناقض مشخص میشوند. به همین دلایل، نرمافزارهای امنیتسنجِ سازمان یا مثل چوپان دروغگو مدام هشدارهای اشتباه میدهند، یا بهغلط خیال شما را بابت امنیت سیستم راحت میکنند.
شکافِ نبودِ اطلاعات کامل روزبهروز بیشتر میشود. در پنج سال گذشته، تعداد کل آسیبپذیریهای کشفشده دو برابر شده، اما تعداد مواردی که امتیاز شدت خطر ندارند ۳۷ برابر شده است!
بررسیها نشان میدهند معمولاً راهکار نفوذ هکرها ظرف یک هفته پس از کشف آن در دسترس عموم قرار میگیرد، اما ثبت رسمیِ همان مشکل در پایگاههای اطلاعاتی بهطور میانگین ۱۵ روز طول میکشد. پروسهی ارزیابی و نمرهدهی حتی از این هم کُندتر است و گاهی یک سال زمان میبرد. در تمام این مدت، هکرها مشغول به سوءاستفاده از سیستم قربانیان هستند.
معضلِ استفاده از قطعهکدهایِ تاریخگذشته
کتابخانهها، اپلیکیشنها و سرویسهایی که دیگر توسط سازنده بهروزرسانی و پشتیبانی نمیشوند، در ۵ الی ۱۵ درصد از پروژههای سازمانی همچنان در حال استفادهاند. استفاده از این کدها شبیه به استفاده از مواد غذایی تاریخگذشته در پخت یک غذای مهم است؛ ظاهر غذا شاید خوب باشد، اما در نهایت باعث مسمومیت خواهد شد.
بررسی مخازنِ کدِ معروف نشان داده است که حداقل ۸۱ هزار بستهی کدنویسی وجود دارند که مشکلات امنیتیِ آنها قطعی است، اما چون سازنده آنها را رها کرده، هیچوقت آپدیت امنیتی تازهای دریافت نخواهند کرد. نرمافزارهای امنیتی سازمانی هم معمولاً این کدهای تاریخگذشته را نادیده میگیرند و گزارش میدهند که همهچیز امن و امان است.
بدافزارها در کمینِ مخازنِ دانلودِ کد
حملاتی که از طریق انتشار کدهای آمادهی آلوده انجام میشوند، با رشدی کمسابقه در حال افزایشاند. به گزارش محققان کسپرسکی، تا پایان سال ۲۰۲۴ حدود ۱۴ هزار بستهی مخرب در مخازن معروف برنامهنویسی کشف شد که نسبت به سال قبل از آن ۴۸ درصد رشد داشته. اما برخی گزارشهای دیگر برای سال ۲۰۲۵ عددی وحشتناکتر را نشان میدهند: کشف بیش از ۴۵۰ هزار بستهی کدِ مخرب!
هکرها انگیزههای گوناگونی برای ساخت این بستههای مخرب دارند، مثلاً:
- سرقت ارزهای دیجیتال و کیف پولهای مجازی
- دزدیدن رمز عبور برنامهنویسها و کارمندان
- جاسوسی از رقبای تجاری
- نفوذ به سرورها و ابزارهای استقرار نرمافزار (CI/CD)
- تبدیل کردن سرورِ شرکتها به واسطهای برای ارسال پیامهای فیشینگ یا تبلیغاتی (اسپم)
- اخاذی اینترنتی
امروزه آلوده کردن یک کد آماده، صرفاً اولین قدم هکر برای نفوذ همهجانبه به شبکهی شرکت است؛ فرقی نمیکند پای گروههای هک دولتی در میان باشد یا هکرهایی که انگیزههای مالی دارند. آنها معمولاً با ساخت یک نام جعلی و بسیار شبیه به یک قطعهکد معروف، برنامهنویسِ شرکت را فریب میدهند تا بهاشتباه بدافزار را دانلود کند؛ درست همانطور که صفحات جعلی بانک، کاربران عادی را فریب میدهند.
در برخی از این حملات هم بدافزارها بهصورت خودکار و مانند ویروس پخش میشوند و رمزهای عبور کلیدیِ سرورها را میدزدند.
هوش مصنوعی: دستیاری که میتواند مهاجم شود
ورود پرشتاب دستیارهای هوش مصنوعی مانند کلود کد (Claude Code) و کوپایلوت (Copilot) به دنیای برنامهنویسی، سرعت کار را بالا برده، اما همزمان ضریب خطا را هم چند برابر کرده. اگر کدنویسی با هوش مصنوعی بدون نظارت دقیق انسانی انجام شود، نتیجهاش کدهایی آسیبپذیر خواهد بود. تحقیقات نشان میدهد که ۴۵ درصد از کدهای تولیدشده توسط هوش مصنوعی، دارای آسیبپذیریهای بسیار خطرناک هستند.
دلیلش ساده است: مدلهای هوش مصنوعی با حجم عظیمی از دادههای اینترنتی آموزش دیدهاند که شامل کدهای تاریخگذشته، آزمایشی یا آموزشی هم میشوند. هوش مصنوعی معمولاً متوجه نمیشود کدام نسخه از یک کتابخانه منسوخ شده یا ایراد دارد. گاهی حتی این مدلها یک نام کاملاً خیالی برای قطعهکدها میسازند! مشکلی که راه را برای حملات «گیجکردن سیستم با کدهای ساختگی» (Dependency Confusion) باز میکند.
بررسیها نشان داده است که پیشرفتهترین مدلهای هوش مصنوعی، در بالغ بر ۲۷ درصد از مواقع، نسخههای اشتباه و توهمی از برنامهها را به برنامهنویسان پیشنهاد کردهاند.
آیا میتوانیم کار را به خودِ هوش مصنوعی بسپاریم؟
شاید فکر کنید سادهترین راه این است که «هوش مصنوعی را به جانِ کدهایمان بیندازیم تا خودش تهدیدات را پیدا کند و وصله بزند». اما متاسفانه، هوش مصنوعی هنوز نمیتواند بهتنهایی همهچیز را حل کند. وقتی پایگاههای اطلاعاتِ امنیتی ناقص هستند، هوش مصنوعی هم مجبور میشود مثل انسانها تهدید را از صفر کشف کند؛ فرآیندی که نیاز به قدرت پردازشی بالا دارد و از توان مالی اکثر کسبوکارها خارج است.
علاوه بر این، اگر مشکل در سیستم به خاطر استفاده از یک قطعهکد تاریخگذشته باشد، هوش مصنوعی بهتنهایی قادر به خلق یک ساختار جدید برای رفع آن نیست و همچنان به تخصص و خلاقیت یک نیروی انسانی نیاز خواهیم داشت.
در آخر: چطور از کسبوکارمان محافظت کنیم؟
برای به حداقل رساندن تمام این خطرات، اکثر کسبوکارها (و حتی استارتاپهای کوچک)، باید امنیت خود را فراتر از آپدیت نگه داشتن ویندوز و نصب آنتیویروس ببینند. شما باید قوانینی مشخص برای دانلود کدهای آماده داشته باشی و بر استفادهی کارمندان از هوش مصنوعی نظارت کنید.
مهمترین اقدامات امنیتی برای سازمانها به شرح زیر است:
- حضور متخصص (یا تیم فنی با توجه به ابعاد کسب و کار).
- استفاده از راهکارهای جامع امنیتی برای پردازشهای فضای ابری و سرورها.
- بررسی و اسکنِ مداوم فایلهایی که توسط تیم فنی دانلود میشود.
- تعیین سیاستهای سختگیرانه برای کنترل کدهایی که توسط هوش مصنوعی تولید میشود.
- پاکسازی سیستماتیک و دورهایِ کدهای منسوخشده و قدیمی از روی سرورها و پروژههای شرکت.
