برخی از توسعه دهندگان نرم افزارهای منبع باز را خراب می کنند

gettyimages-1159346361-malicious-code-skull-crossbones.jpg

گتی ایماژ

یکی از شگفت انگیزترین چیزهای منبع باز این نیست که نرم افزار عالی تولید می کند. این است که بسیاری از توسعه دهندگان خود را کنار می گذارند تا با کمک دیگران برنامه های عالی بسازند. با این حال، اکنون تعداد انگشت شماری از برنامه نویسان نگرانی های خود را مقدم بر نفع بسیاری از نرم افزارهای منبع باز و بالقوه ویرانگر برای همه قرار می دهند.

به عنوان مثال، نگهدارنده مدیر بسته جاوا اسکریپت RIAEvangelist، براندون نوزاکی میلر، یک بسته کد منبع npm با کد باز به نام صلح نوتوار نوشته و منتشر کرد. کار کمی انجام داد اما پیامی برای صلح در دسکتاپ چاپ کرد. تا اینجای کار خیلی بی ضرر 

میلر سپس کدهای مخرب را در بسته وارد کرد تا در صورتی که رایانه آنها دارای آدرس IP روسیه یا بلاروس بود، سیستم فایل کاربران را بازنویسی کند. سپس آن را به عنوان یک وابستگی به محبوب خود اضافه کرد node-ipc برنامه و هرج و مرج فوری! بسیاری از سرورها و رایانه های شخصی با به روز رسانی به جدیدترین کد از کار افتادند و سپس درایوهای سیستم آنها پاک شد. 

دفاع میلر، "این همه عمومی، مستند، دارای مجوز و منبع باز است,” تحمل نمی کند. 

لیران تال، اسنیک محققی که این مشکل را کشف کرد، گفت: «حتی اگر این اقدام عمدی و خطرناک توسط برخی به عنوان یک اقدام اعتراضی مشروع تلقی شود، چگونه آن را بر شهرت آینده نگهدار منعکس می کند و سهام در جامعه توسعه دهندگان؟ آیا دوباره به این نگهدار اعتماد می‌شود که اقدامات آتی را در چنین یا حتی اقدامات تهاجمی‌تر برای پروژه‌هایی که در آن شرکت می‌کنند، دنبال نکند؟» 

میلر یک میل لنگ تصادفی نیست. او کدهای خوب زیادی مانند node-ipc و سرور HTTP گره. اما، آیا می توانید به کدهای او اعتماد کنید که مخرب نیستند؟ در حالی که او آن را چنین توصیف می کندبدافزار نیست، [بلکه] protestware که کاملاً مستند استدیگران به شدت مخالف هستند. 

همانطور که یکی از برنامه نویسان GitHub نوشت، "آنچه که قرار است با این اتفاق بیفتد این است که تیم های امنیتی در شرکت های غربی که مطلقاً هیچ ارتباطی با روسیه یا سیاست ندارند شروع به دیدن خواهند کرد. نرم افزار رایگان و منبع باز به عنوان راهی برای حملات زنجیره تامین (که کاملاً چنین است) و به سادگی شروع به ممنوعیت نرم افزارهای رایگان و منبع باز - همه نرم افزارهای رایگان و متن باز - در شرکت های خود کنید. 

همانطور که یکی دیگر از توسعه دهندگان GitHub با دسته nm17 نوشت: «The فاکتور اعتماد منبع باز، که بر اساس اراده خوب توسعه دهندگان بود، اکنون عملاً از بین رفته است، و اکنون، افراد بیشتری متوجه می شوند که روزی، کتابخانه/برنامه آنها احتمالاً می تواند برای انجام/گفتن هر چیزی که برخی از برنامه نویسان تصادفی در اینترنت فکر می کنند مورد سوء استفاده قرار گیرد. کار درستی بود که آنها انجام دادند.»

هر دو به نکات معتبری اشاره می کنند. وقتی نمی توانید از کد منبع استفاده کنید مگر اینکه با موضع سیاسی سازنده آن موافق باشید، چگونه می توانید با اطمینان از آن استفاده کنید؟ 

قلب میلر ممکن است در جای مناسب باشد - اسلاوا اوکراین! - اما آیا نرم افزار منبع باز آلوده به یک محموله مخرب راه درستی برای محافظت از تهاجم روسیه به اوکراین است؟ نه اینطور نیست. 

روش منبع باز فقط به این دلیل کار می کند که ما به یکدیگر اعتماد داریم. وقتی این اعتماد شکسته شد، مهم نیست به چه دلیلی، چارچوب اساسی منبع باز شکسته می شود. همانطور که Greg Kroah-Hartman، نگهدارنده هسته لینوکس برای شاخه پایدار، زمانی که دانشجویان دانشگاه مینه سوتا عمداً سعی کردند کد بدی را برای آزمایشی در سال 2021 در هسته لینوکس وارد کنند، گفت: "کاری که آنها انجام می دهند یک رفتار مخرب عمدی است و قابل قبول نیست و کاملاً غیراخلاقی است.»

مردم مدت‌هاست که استدلال می‌کنند که منبع باز باید شامل مقررات اخلاقی نیز باشد. به عنوان مثال، سال 2009 مجوز عمومی عمومی استثنایی (eGPL)، تجدید نظر در GPLv2، سعی کرد "استثناها" مانند کاربران و تامین کنندگان نظامی را از استفاده از کد خود منع کند. شکست خورد. سایر مجوزها مانند مجوز JSON با ساده‌لوحانه‌ای که «نرم‌افزار باید برای خیر استفاده شود، نه برای شر» هنوز وجود دارد، اما هیچ‌کس آن را اجرا نمی‌کند.  

اخیراً، Coraline Ada Ehmke، فعال و توسعه‌دهنده نرم‌افزار، مجوزی متن‌باز معرفی کرده است که کاربرانش را ملزم می‌کند اخلاقی عمل کنند. به طور خاص، او مجوز بقراط اضافه شده به مجوز منبع باز MIT بندی که بیان می کند: 

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

خوب به نظر می رسد، اما منبع باز نیست. ببینید، منبع باز به خودی خود یک موقعیت اخلاقی است. اخلاقیات آن در بنیاد نرم افزار آزاد (FSF)'s چهار آزادی اساسی. این پایه و اساس همه مجوزهای منبع باز و فلسفه اصلی آنها است. همانطور که ایبن موگلن، کارشناس حقوقی منبع باز و استاد حقوق کلمبیا، در آن زمان گفت که مجوزهای اخلاقی نمی توانند نرم افزار آزاد یا مجوزهای منبع باز باشند: 

"آزادی صفر، حق اجرای برنامه برای هر هدفی، در چهار آزادی اول است زیرا اگر کاربران نسبت به برنامه های رایانه ای که اجرا می کنند این حق را نداشته باشند، در نهایت هیچ حقی در آن برنامه ها ندارند. تلاش برای اعطای مجوز فقط برای مصارف خوب، یا ممنوعیت موارد بد از نظر مجوز دهنده، ناقض الزام حفاظت از آزادی صفر است.» 

به عبارت دیگر، اگر به هر دلیلی نمی توانید کد خود را به اشتراک بگذارید، کد شما واقعاً منبع باز نیست. 

یکی دیگر از استدلال های عمل گرایانه تر در مورد منع یک گروه از استفاده از نرم افزار منبع باز این است که مسدود کردن چیزی مانند آدرس IP کار بسیار گسترده ای است. به عنوان فلوریان راث، شرکت امنیتی سیستم های نکسترونرئیس پژوهش، که در نظر گرفتغیرفعال کردن ابزارهای رایگان من در سیستم ها با تنظیمات خاص زبان و منطقه زمانی،” در نهایت تصمیم گرفت که این کار را نکند. چرا؟ زیرا با این کار، "ما همچنین ابزارهای موجود در سیستم های منتقدان و آزاداندیشان را غیرفعال می کنیم که اقدامات دولت های خود را محکوم می کنند.» 

متأسفانه، این فقط افرادی نیستند که سعی می کنند از منبع باز برای اهداف اخلاقی بالاتر استفاده کنند که برای نرم افزار منبع باز مشکل ایجاد می کنند. 

در اوایل سال جاری، Marak Squires، توسعه‌دهنده جاوا اسکریپت، عمداً کتابخانه‌های منبع باز جاوا اسکریپت‌های مبهم، اما حیاتی مهم خود «colors.js» و «faker.js» را خراب کرد. نتیجه؟ ده ها هزار برنامه جاوا اسکریپت منفجر شدند.

چرا؟ هنوز کاملاً مشخص نیست، اما در یک پست GitHub که از زمان حذف شده، Squires نوشت: "با احترام، من دیگر از Fortune 500s پشتیبانی نمی کنم (و سایر شرکت های کوچکتر) با کار رایگان من. چیز زیادی برای گفتن وجود ندارد. از این فرصت استفاده کنید تا یک قرارداد سالانه شش رقمی برای من بفرستید یا پروژه را منعقد کنید و از شخص دیگری بخواهید روی آن کار کند." همانطور که ممکن است تصور کنید، این تلاش برای باج گیری از راه او برای دریافت چک به خوبی برای او کارساز نبود. 

و سپس افرادی هستند که عمدا بدافزار را برای سرگرمی و سود در کد منبع باز خود قرار می دهند. به عنوان مثال، شرکت امنیتی DevOps جی فورگ 17 بسته جدید مخرب جاوا اسکریپت را در مخزن NPM کشف کرد که عمدا به توکن های Discord کاربر حمله کرده و آنها را سرقت می کند. سپس می توان از اینها بر روی استفاده کرد Discord ارتباطات و پلت فرم توزیع دیجیتال.

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

با هر حرکتی از این دست، ایمان به نرم‌افزار منبع باز از بین می‌رود. از آنجایی که منبع باز برای دنیای مدرن کاملاً حیاتی است، این روند بدی است. 

در مورد آن جه می توانیم انجام دهیم؟ خوب، برای یک چیز، ما باید با دقت زیادی در نظر بگیریم که چه زمانی باید استفاده از کد منبع باز را مسدود کنیم. 

به طور عملی تر، ما باید استفاده از آن را شروع کنیم بنیاد لینوکس تبادل داده بسته نرم افزاری (SPDX) و لایحه مواد نرم افزاری (SBOM). اینها با هم به ما می گویند که دقیقاً از چه کدی در برنامه های خود استفاده می کنیم و از کجا آمده است. سپس، ما بسیار بیشتر قادر به تصمیم گیری آگاهانه خواهیم بود.

امروزه، اغلب مردم از کد منبع باز استفاده می کنند بدون اینکه بدانند دقیقاً چه چیزی را اجرا می کنند یا آن را برای مشکل بررسی می کنند. آنها فرض می کنند همه چیز با آن خوب است. این هرگز یک فرض هوشمندانه نبوده است. امروز، کاملا احمقانه است. 

حتی با وجود همه این تغییرات اخیر، منبع باز هنوز بهتر و ایمن تر از جایگزین های نرم افزار اختصاصی جعبه سیاه است. اما، ما باید به جای اعتماد کورکورانه کد را بررسی و تأیید کنیم. این تنها کار هوشمندانه ای است که در آینده انجام می شود.

داستانهای مرتبط:



منبع