بلوز فول استک: بررسی آسیب پذیری ها در MEAN Stack


توسعه فول استک این روزها بسیار مورد توجه قرار گرفته است، و دلیل خوبی هم دارد: توسعه دهندگان با مهارت های توسعه وب فرانت اند و هم مهارت کدنویسی بک اند/سرور، به وضوح ارزش قابل توجهی را برای سازمان های مربوطه ارائه می دهند. توانایی عبور از کل پشته به طور شایسته همچنین تعامل و همکاری با عملیات و امنیت را آسان تر می کند - یکی از اصول کلیدی فرهنگ DevOps.

با این حال، رویکرد فول استک - علیرغم شایستگی های آن - توسعه دهندگان را ملزم می کند تا ملاحظات مهمی را در نظر بگیرند که قبلا نداشتند، به خصوص در مورد امنیت و آزمایش. به عنوان مثال، در گذشته، DBA های اختصاصی یا مدیران سیستم ممکن است وظیفه تأیید امنیت پایگاه داده یا سخت کردن سیستم های زیربنایی را داشته باشند. برای توسعه دهندگان فول استک، این وظایف اکنون بازی باز هستند - متعاقبا، یک تغییر کلی در ذهنیت نسبت به امنیت برای توسعه ایمن و ارائه مداوم نرم افزار ضروری است.

قرار گرفتن در معرض عمیق در تمام لایه های پشته، توسعه دهندگان فول استک را در صندلی جلو برای حفظ وضعیت امنیتی برنامه قرار می دهد. بنابراین بسیار مهم است که خطرات و پیامدهای امنیتی هر یک از فناوری های تشکیل دهنده به طور کامل درک شود. به عنوان یک مثال نماینده، پشته MEAN یک چارچوب فول استک محبوب است که برای عملکرد ساده شده است: MongoDB، Express.JS، Angular.JS و Node.JS. از آنجایی که تمام لایه های پشته در جاوا اسکریپت نوشته شده اند، توسعه دهندگان فقط باید کد برنامه را در جاوا اسکریپت بنویسند. و از آنجایی که این توسعه دهندگان در حال حاضر برای ارائه برنامه های کاربردی وب امن نیز آماده هستند، باید آسیب پذیری ها را نیز برطرف کنند و تمام لایه های برنامه را برای امنیت تأیید کنند. اما هر لایه چقدر در برابر به خطر افتادن آسیب پذیر است؟ بیایید نگاهی گذرا به داخل پشته MEAN بیندازیم تا متوجه شویم.

مانگو دی بی

MongoDB یک پایگاه داده NoSQL سازگار با جاوا اسکریپت و سند محور است که با امثال Cassandra و HBase رقابت می کند. به طور کلی، برای بیشتر اهداف، MongoDB را می توان تا حد زیادی به همان شیوه MySQL استفاده کرد. مقایسه MongoDB در مقابل MySQL ما را برای مقایسه کامل این دو فناوری بررسی کنید.

یک تصور غلط رایج این است که MongoDB در برابر حملات تزریق SQL مصون است. در حالی که درست است که MongoDB مستعد سوء استفاده از زبان SQL نیست، اسناد JSON آن همچنان می توانند برای دستیابی به همان نتایج مخرب تغییر کنند. علاوه بر این، MongoDB سهم خود را از آسیب پذیری ها داشته است - به عنوان مثال، یک آسیب پذیری گسترده که اخیرا کشف شده است، به هکرها این امکان را می دهد که از راه دور برنامه پایگاه داده را از کار بیاندازند. علاوه بر این، مطالعه پایگاه داده آسیب پذیری ها و قرار گرفتن در معرض های رایج (CVE) مجموعه ای از مواجهه های امنیتی و آسیب پذیری ها را برای MongoDB نشان می دهد.

اکسپرس جیاس

Express.JS یک چارچوب وب و برنامه تلفن همراه سمت سرور برای Node.JS است، شبیه به آنچه Ruby-on-Rails یا Sinatra برای زبان Ruby است. این چارچوب بر اساس Node.JS برای ارائه اجزای استاندارد برای ساده سازی توسعه ساخته شده است و در واقع امروزه پرکاربردترین چارچوب Node.js است. متأسفانه، این چارچوب در برابر حملات مختلف تزریق و بین سایتی آسیب پذیر است و در معرض تمام آسیب پذیری های اساسی Node.js است. سایت Express.JS لیست به روز شده ای از آسیب پذیری ها و رفع آن ها را در هر نسخه حفظ می کند.

اَنگولار جیاس

Angular.js که توسط گوگل توسعه و نگهداری می شود، یک چارچوب MVC جلویی است که توسعه مدولار سمت کلاینت را با حداقل کد امکان پذیر می کند. این چارچوب در برابر حملات مختلف اسکریپت نویسی بین سایتی آسیب پذیر است - لیست کاملی از آسیب پذیری های Angular.js در صفحه اصلی پروژه Mustache Security در Google Code موجود است.

نود.جیاس

سوال مهم و دشوارتر این نیست که چرا، بلکه چگونه - یعنی چگونه شرکت ها نه تنها می توانند زنده بمانند، بلکه در چشم انداز تهدیدات دیجیتال رشد کنند؟

Node.js امکان ساخت برنامه های کاربردی وب با قابلیت های گسترده سمت سرور و شبکه را فراهم می کند و ارتباطات دو طرفه بلادرنگ بین مشتری و سرور را امکان پذیر می کند. بر اساس موتور جاوا اسکریپت V8 گوگل، Node.js برای ایجاد وب سرورهای HTTP در پرواز محبوب است. مسلما جزء تعیین کننده پشته MEAN است، Node.js بدون آسیب پذیری های خاص خود نیست - نه تنها تمام آسیب پذیری های مربوط به جاوا اسکریپت را به ارث می برد، بلکه در حین اجرا در سمت سرور، بردارهای حمله جدیدی نیز به دست می آورد. پایگاه داده CVE همچنین فهرست جامعی از آسیب پذیری های Node.JS را در خود جای داده است.

به طور خلاصه، توسعه فول استک ممکن است تجسم DevOps باشد، اما با این وجود نیاز به پایبندی دقیق به شیوه های توسعه برنامه ایمن دارد. پشته MEAN و هر پشته ای برای این موضوع - خواه LAMP یا دات نت باشد - به کنترل های مناسب برای اطمینان از اینکه امنیت در تمام مراحل توسعه پخته می شود، نیاز دارد. برای این منظور، UpGuard ارزیابی و نظارت جامع بر آسیب پذیری را برای برنامه های وب، پایگاه های داده، سرورها ارائه می دهد - صرف نظر از اینکه کدام پشته در حال استفاده است، پلتفرم ما می تواند هر لایه را اسکن و اعتبارسنجی کند.

منابع

https://blog.websecurify.com/2014/08/hacking-nodejs-and-mongodb.html

https://www.cvedetails.com/product/22804/Nodejs-Nodejs.html?vendor_id=12113

https://code.google.com/archive/p/mustache-security/wikis/AngularJS.wiki

https://expressjs.com/en/advanced/security-updates.html

https://web.archive.org/web/20160518123231/http://blog.fortinet.com/post/widespread-mongodb-denial-of-service-vulnerability-discovered