Servo: گامی مهم برای افزایش امنیت فایرفاکس

Servo: گامی مهم برای افزایش امنیت فایرفاکس

Servo اولین قدم برای افزایش امنیت موتور رندرینگ فایرفاکس می باشد. ولی سوال آن است که آیا پس از اتمام کار سروو، موزیلا به سراغ بازنویسی SpiderMonkey در Rust خواهد رفت یا خیر؟ برای یافتن پاسخ به این سوال، با سکان آکادمی همراه باشید.

موزیلا از بیلدهای اولیه (Build) موتور رندرینگ آزمایشی جدید خود تحت عنوان Servo رو نمایی کرد. سروو در واقع خود بخشی از برنامه بزرگ تر و جامع تر بازسازی فایرفاکس می باشد. با این که به نظر می رسد بازنویسی موتور رندرینگ در زبان برنامه نویسی Rust برای پیش گیری از مشکلات امنیتی اقدامی رو به جلو باشد، ولی واقعیت آن است که موفقیت سرو نهایتا بستگی به تصمیم دیگر شرکت موزیلا دارد. در واقع برنامه ای که موزیلا برای SpiderMonkey در ذهن دارد تعیین کننده اصلی موفقیت یا عدم موفقیت سروو خواهد بود (اسپایدر مانکی (SpiderMonkey) یک موتور اجرایی JavaScript است.)

نسل جدید موتور رندرینگ با استفاده از زبان برنامه نویسی Rust نوشته شده است تا به این صورت نقاط ضعف احتمالی امنیتی پوشانده شوند که سورس کد سروو در گیت هاب برای استفاده ی علاقمندان قرار داده شده است. همچنین بیلد های تحت توسعه برای MaxOs و Linux هم در دسترس هستند و این در حالی است که انتظار می رود پکیج های ویندوز و اندروید آن هم به زودی عرضه شوند. جک موفیت (Jack Moffitt) که هدایت پروژه سروو موزیلا را بر عهده دارد، پیش از این گفته بود که:

سروو، معماری ساخت مرورگرها را در نسل های جدیدتر کامپیوترهای چند هسته ای و زبان های برنامه نویسی ایمن تر را به ارمغان خواهد آورد.

همان طور که پیش تر هم گفتیم، سروو در زبان برنامه نویسی Rust نوشته شده است. راست زبان برنامه نویسی اختصاصی موزیلا است که شباهت زیادی به سی دارد. این کار برای اطمینان از ایمنی همزمانی و پیش گیری از اشتباهات رایج برنامه نویسی (که می توانند باعث ایجاد مشکلات بالقوه امنیتی شوند) انجام گرفته است. وجود باگ های کمتر در کدنویسی Rust به معنی موقعیت های کمتر برای سوء استفاده های امنیتی در این موتور رندرینگ می باشد که برای بهبود امنیت کلی اپلیکیشن های وب یک قدم رو به جلو محسوب می شود.

امنیت بالاتر به علت آن است که در صورتی که کامپایلر راست متوجه وجود اشکال در کدنویسی شود، از ساخت آن اپلیکیشن جلوگیری می کند. به طور مثال هر متغیر در Rust یک صاحب (owner) و طول عمر مشخصی دارد. در نتیجه یک صاحب دیگر نمی تواند از متغییری که فعلا تحت اختیار صاحب اولش است، استفاده کند، که به امنیت بیشتر کمک می کند. سروو همچنین مشکلات استفاده پس از آزادسازی حافظه و بافر اورفلو  که در بسیاری از اپلیکیشن ها رایج است، را ندارد چرا که چنین مشکلاتی در Rust غیر ممکن هستند.

البته با همه این احوال باید گفت که سروو فعلا از اسپایدر مانکی برای اجرای جاوا اسکریپت (JavaScript) استفاده می کند که در ++C نوشته شده است. به همین دلیل پیدا کردن مشکلات امنیتی در موتور جاوا اسکریپت بسیار ساده تر از پیدا کردن مشکل در موتور رندرینگ نوشته شده با Rust است. به عبارت دیگر، در حال حاضر اسپایدر مانکی یک پروژه فوری و مهم محسوب می شود که هر چه زودتر باید در مورد آن فکری کرد. به هر حال سروو یک آغاز خوب و بستری مناسب برای حرکت رو به جلوی موزیلا و کار بر روی اجزای دیگر مرورگر را فراهم می کند. با توجه به آن که بسیاری از حملات با استفاده از مرورگرهای وب (به عنوان اولین نقطه ورود) صورت می گیرند، داشتن یک موتور رندرینگ ایمن برای مرورگر وب می تواند یک قدم مهم در راستای ایمن تر کردن اینترنت برای کاربران باشد.

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

موزیلا کدهای Rust را با اجزای مورد استفاده در Gecko و Firefox یکپارچه سازی خواهد کرد که بخشی از پروژه Oxidation این شرکت می باشد. پروژه Oxidation شامل پارسر یو آر ال (URL Parser)، پارسر ام پی فور متادیتا (MP4 Metadata Parser) و Webm Demuxer می باشد. همچنین از Rust برای جایگزینی uconv با encoding-rs و محاسبات سبک CSS استفاده خواهد شد. البته این فرآیند هم اکنون آغاز شده است تا بتوان از کد سبک Servo در Gecko استفاده کرد.

موزیلا یک رابط کاربردی مبتنی بر HTML را ایجاد کرده و بیلد های Servo هم برای تست کردن طریقه رندر کردن وب سایت ها توسط موتور ایجاد شده اند. رابط مرورگر و بیلد ها هنوز به طور کامل با وب سازگار نشده اند و در حال حاضر در نمایش بسیاری از وب سایت ها دچار مشکل هستند. موزیلا برنامه زمانی توسعه سروو یا برنامه های آینده برای عرضه ی نهایی آن را عمومی نکرده است ولی نمونه اولیه آن می تواند بخشی از روند کاری موزیلا را برای توسعه دهندگان روشن کند.

از بهترین نوشته‌های کاربران سکان آکادمی در سکان پلاس


online-support-icon