نحوه استفاده از یک ابزار ساده برای یافتن آسیب پذیری در کد برنامه

Graudit از چندین زبان برنامه نویسی پشتیبانی می کند و به شما این امکان را می دهد که تست امنیت کد پایه را مستقیماً در فرآیند توسعه ادغام کنید.

نحوه استفاده از یک ابزار ساده برای یافتن آسیب پذیری در کد برنامه
منبع: می Unsplash (مارکوس اسپیسکه)

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

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

رویکردهای مختلفی برای حل مشکلات امنیتی وجود دارد، مانند تست امنیت برنامه استاتیک (SAST)، تست امنیت برنامه پویا (DAST)، تست امنیت برنامه تعاملی (IAST)، تجزیه و تحلیل ترکیب نرم افزار و غیره.

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

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

چرا یک ابزار منبع باز را برای تجزیه و تحلیل امنیت کد استاتیک انتخاب کردم

دلایل مختلفی برای این وجود دارد: اول، رایگان است زیرا شما از ابزاری استفاده می‌کنید که توسط جامعه‌ای متشکل از افراد همفکری که می‌خواهند به توسعه‌دهندگان دیگر کمک کنند، ایجاد شده است. اگر یک تیم کوچک یا استارت آپ دارید، فرصتی عالی برای صرفه جویی در هزینه با استفاده از نرم افزار منبع باز برای آزمایش امنیت پایگاه کد خود دارید. ثانیاً، شما را از استخدام یک تیم جداگانه DevSecOps بی نیاز می کند و هزینه های شما را بیشتر کاهش می دهد.

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

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

از آنجایی که در بیشتر موارد توسعه نرم‌افزار متن‌باز به‌طور فعال تحت تأثیر جامعه قرار می‌گیرد، تصمیم‌گیری برای ایجاد تغییرات بسیار سریع و به این نکته انجام می‌شود: توسعه‌دهندگان پروژه متن‌باز به بازخورد و پیشنهادات کاربران، بر اساس گزارش‌های خود از آنها متکی هستند. خطاهای پیدا شده و مشکلات دیگر

استفاده از Graudit برای تحلیل امنیت کد

شما می توانید از ابزارهای متن باز مختلف برای تجزیه و تحلیل کد استاتیک استفاده کنید؛ هیچ ابزار جهانی برای همه زبان های برنامه نویسی وجود ندارد. توسعه دهندگان برخی از آنها توصیه های OWASP را دنبال می کنند و سعی می کنند تا حد امکان زبان های بیشتری را پوشش دهند.

در اینجا ما استفاده خواهیم کرد فارغ التحصیلی، یک ابزار ساده خط فرمان که به ما امکان می دهد آسیب پذیری ها را در پایگاه کد خود پیدا کنیم. از زبان های مختلف پشتیبانی می کند، اما هنوز مجموعه آنها محدود است. Graudit بر اساس ابزار grep توسعه یافته است که زمانی تحت مجوز گنو منتشر شد.

ابزارهای مشابهی برای تجزیه و تحلیل کد ایستا وجود دارد - ابزار حسابرسی خشن برای امنیت (RATS)، ابزار تحلیل برنامه های کاربردی وب Securitycompass (SWAAT)، عیب یاب و غیره. اما Graudit بسیار انعطاف پذیر است و حداقل نیازهای فنی را دارد. با این حال، ممکن است مشکلاتی داشته باشید که Graudit نتواند آنها را حل کند. سپس می توانید گزینه های دیگر را در اینجا جستجو کنید در این لیست.

ما می‌توانیم این ابزار را در یک پروژه خاص ادغام کنیم، یا آن را در دسترس کاربر انتخابی قرار دهیم، یا از آن به طور همزمان در همه پروژه‌هایمان استفاده کنیم. در اینجا نیز انعطاف پذیری Graudit مطرح می شود. پس بیایید ابتدا مخزن را شبیه سازی کنیم:

$ git clone https://github.com/wireghoul/graudit

حالا بیایید یک پیوند نمادین برای Graudit ایجاد کنیم تا از آن در فرمت فرمان استفاده کند

$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit

بیایید یک نام مستعار به bashrc. (یا هر فایل پیکربندی که استفاده می‌کنید) اضافه کنیم:

#------ .bashrc ------
alias graudit="~/bin/graudit"

راه اندازی مجدد:

$ source ~/.bashrc # OR
$ exex $SHELL

بیایید بررسی کنیم که آیا نصب با موفقیت انجام شده است:

$ graudit -h

اگر چیزی مشابه دیدید، پس همه چیز خوب است.

نحوه استفاده از یک ابزار ساده برای یافتن آسیب پذیری در کد برنامه

من یکی از پروژه های موجود خود را آزمایش خواهم کرد. قبل از اجرای ابزار، باید یک پایگاه داده مربوط به زبانی که پروژه من در آن نوشته شده است، ارسال شود. پایگاه داده ها در پوشه ~/gradit/signatures قرار دارند:

$ graudit -d ~/gradit/signatures/js.db

بنابراین، من دو فایل js را از پروژه خود آزمایش کردم و Graudit اطلاعات مربوط به آسیب پذیری های کد من را به کنسول نمایش داد:

نحوه استفاده از یک ابزار ساده برای یافتن آسیب پذیری در کد برنامه

نحوه استفاده از یک ابزار ساده برای یافتن آسیب پذیری در کد برنامه

می توانید پروژه های خود را به همین روش آزمایش کنید. شما می توانید لیستی از پایگاه های داده برای زبان های برنامه نویسی مختلف را مشاهده کنید اینجا.

مزایا و معایب Graudit

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

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

اما در هر صورت، توجه به مشکلات امنیتی احتمالی در کد هنگام استفاده از ابزارهایی مانند این مفید است.

شروع…

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

در حقوق تبلیغات

VPS قابل اعتماد و انتخاب صحیح طرح تعرفه به شما این امکان را می دهد که با مشکلات ناخوشایند کمتر از توسعه منحرف شوید - همه چیز بدون شکست و با زمان کار بسیار بالا کار می کند!

نحوه استفاده از یک ابزار ساده برای یافتن آسیب پذیری در کد برنامه

منبع: www.habr.com

اضافه کردن نظر