بازبینی کد منبع (White-Box)

بازبینی عمیق امنیت کد منبع با راهنمایی رفع مشکلات

درباره این سرویس

بازبینی کد منبع (White-Box) ما کد منبع اپلیکیشن را مستقیم می‌خواند تا نقص‌هایی را بیابد که تست جعبه‌سیاه از بیرون نمی‌بیند: کنترل مجوز جاافتاده روی یک اکشن سمت سرور، کوئری‌ای که با چسباندن رشته ساخته شده، secretی که داخل مخزن کد commit شده، یا رمزنگاری‌ای که نادرست به کار رفته است. برای پوشش گسترده از تحلیل استاتیک (SAST) و تحلیل ترکیب نرم‌افزار (SCA) بهره می‌گیریم و کنار آن بازبینی دستی توسط مهندسی که داده‌ی نامطمئن را از نقطه‌ی ورود تا جایی که به آن اعتماد می‌شود دنبال می‌کند. مبنای کار، راهنمای بازبینی کد OWASP، استاندارد OWASP ASVS و فهرست CWE Top 25 است. هر یافته در همان فایل و خط دقیقش نشان داده می‌شود، آن‌گونه که یک مهاجم از آن استفاده می‌کند توضیح داده می‌شود، در کنار اثر واقعی‌اش با CVSS رتبه می‌گیرد و با یک رفع مشخص همراه می‌شود.

چه چیزی شامل می‌شود

تحلیل استاتیک (SAST) تنظیم‌شده برای زبان و فریم‌ورک شما، با کنارگذاشتن مثبت‌های کاذب

تحلیل ترکیب نرم‌افزار (SCA): وابستگی‌های آسیب‌پذیر و قدیمی و ریسک انتقالی آن‌ها

بازبینی احراز هویت، مدیریت session و مجوزدهی، از جمله کنترل دسترسی شکسته و IDOR

بازبینی تزریق: SQL، NoSQL، فرمان و قالب، که از ورودی نامطمئن تا نقطه‌ی اجرا دنبال می‌شود

اعتبارسنجی ورودی، کدگذاری خروجی و نحوه‌ی برخورد با داده‌ی نامطمئن در مرزهای اعتماد

رمزنگاری و secretها: الگوریتم‌های ضعیف، کلیدهای درج‌شده در کد و secretهای commit‌شده در مخزن

نقص‌های منطق کسب‌وکار که فقط در بستر معنا می‌یابند؛ بررسی‌هایی که یک اسکنر نمی‌تواند استنتاج کند

جعل درخواست سمت سرور (SSRF)، deserialization ناامن و مدیریت ناامن فایل

پیکربندی و پیش‌فرض‌های فریم‌ورک و استفاده از APIهای خطرناک یا منسوخ

نگاشت یافته‌ها به CWE Top 25 و الزامات وارسی OWASP ASVS

چگونه کار می‌کند

1
دامنه‌گذاری و دسترسی امن به کد
محدوده، زبان‌ها و فریم‌ورک‌های در دامنه و معیار موفقیت را توافق می‌کنیم، سپس دسترسی امن و فقط‌خواندنی به مخزن را از راه کانال دلخواه شما فراهم می‌کنیم. بخش‌های حساس امنیتی (احراز هویت، مجوزدهی، پرداخت، مدیریت داده) را مشخص می‌کنیم تا تلاش دستی آن‌جا برود که ریسک هست.
2
تحلیل خودکار (SAST و SCA)
تحلیل استاتیک تنظیم‌شده برای پشته‌ی شما و تحلیل ترکیب نرم‌افزار را روی وابستگی‌ها اجرا می‌کنیم، سپس خروجی را غربال می‌کنیم؛ یک اسکن خام بیشترش نویز است. آنچه از غربال می‌گذرد یک مسئله‌ی واقعی و قابل‌دسترس است و نقطه‌ی شروع بازبینی دستی می‌شود، نه خودِ یافته.
3
بازبینی دستی و ردیابی جریان داده
یک مهندس کدِ حساسِ امنیتی را می‌خواند و داده‌ی نامطمئن را از هر نقطه‌ی ورود تا جایی که به یک نقطه‌ی اجرا می‌رسد (یک کوئری، یک فرمان، یک مسیر فایل، یک قالب) دنبال می‌کند. تزریق، کنترل مجوز جاافتاده و deserialization ناامن این‌گونه پیدا می‌شوند: نه با یک الگو، بلکه با پیمودن همان مسیری که یک مهاجم می‌پیماید.
4
منطق کسب‌وکار و بستر
منطقی را بازبینی می‌کنیم که یک اسکنر نمی‌تواند درباره‌اش قضاوت کند: این‌که آیا یک جریان کاری قابل‌تکرار یا قابل‌پرش است، آیا قیمت یا تعداد قابل‌دستکاری است، و آیا یک کاربر می‌تواند روی داده‌ی کاربر دیگر عمل کند. این نقص‌ها کدی درست‌اند که قاعده‌ی نادرست را اعمال می‌کنند و به کسی نیاز دارند که بداند اپلیکیشن قرار است چه کند.
5
گزارش‌دهی و بازبینی مجدد
هر یافته در فایل و خطش، همراه با مسیر جریان داده، یک رتبه‌ی CVSS و اثر واقعی، و یک رفع مشخص با نمونه‌ی کدنویسی امن نوشته می‌شود. پس از رفع، مسائل گزارش‌شده را دوباره بازبینی می‌کنیم تا مطمئن شویم هر رفع پابرجاست و مسئله‌ی تازه‌ای نساخته است.
خروجی‌ها
  • خلاصه‌ی اجرایی با نمای کلی ریسک برای تصمیم‌گیرندگان
  • گزارش تفصیلی، هر یافته در فایل و خط دقیقش
  • ردیابی جریان داده از مبدأ تا نقطه‌ی اجرا برای یافته‌های مهم
  • نتایج غربال‌شده‌ی SAST و گزارش وابستگی‌های SCA همراه با نسخه‌های رفع‌شده
  • یافته‌های منطق کسب‌وکار، توضیح‌داده‌شده در بستر جریان کاری
  • نگاشت یافته‌ها به CWE Top 25 و OWASP ASVS، همراه با CVSS و اثر کسب‌وکار
  • رفع اولویت‌بندی‌شده همراه با نمونه‌های کدنویسی امن
  • بازبینی مجدد پس از رفع

چرا وادی ایمن حافظ

تخصص سطح کد
درک عمیق و به‌روز از کدنویسی امن در پشته‌های رایج، و از دسته‌های نقص (تزریق، کنترل دسترسی شکسته، deserialization ناامن) آن‌گونه که واقعاً در کد ظاهر می‌شوند، نه فقط به‌عنوان تعریف کتابی.
ابزار و انسان، نه یک نیمه
SAST و SCA گستردگی را در سراسر کدبیس می‌دهند و بازبینی دستی، عمقِ قضاوت درباره‌ی منطق کسب‌وکار و قابل‌دسترس‌بودن را. اسکن به‌تنهایی شما را در نویز غرق می‌کند و بازبینی دستی به‌تنهایی نمی‌تواند همه‌جا را بپوشاند؛ این دو با هم تصویر واقعی را می‌دهند.
داده را دنبال می‌کنیم
به‌جای تطبیق الگو، ورودی نامطمئن را از ورود تا نقطه‌ی اجرا دنبال می‌کنیم تا مسیر قابل بهره‌برداری را از مسیر بی‌خطر تشخیص دهیم و برای هر یافته دقیقاً توضیح دهیم چگونه به آن می‌رسند.
رفع، نه فقط یافته
هر یافته در فایل و خطش همراه با یک رفع مشخص و کدنویسی امن می‌آید که توسعه‌دهندگان شما می‌توانند اعمالش کنند و بر پایه‌ی ریسک اولویت گرفته است؛ پس گزارش یک برنامه‌ی کار است، نه فهرستی از گلایه‌ها.

سوالات متداول

بازبینی کد منبع (White-Box) چیست؟

یک ارزیابی امنیتی است که کد منبع اپلیکیشن را مستقیم می‌خواند تا آسیب‌پذیری‌ها، الگوهای ناامن و نقص‌های منطقی را در سطح کد بیابد؛ با ترکیب تحلیل استاتیک خودکار (SAST) و تحلیل ترکیب نرم‌افزار (SCA) و بازبینی دستی متخصص، و با سنجش در برابر راهنمای بازبینی کد OWASP، استاندارد OWASP ASVS و فهرست CWE Top 25.

تفاوت بین SAST و بازبینی دستی کد چیست؟

SAST از ابزارهای خودکار برای اسکن سریع و گسترده‌ی الگوهای شناخته‌شده استفاده می‌کند، اما مثبت کاذب تولید می‌کند و نمی‌تواند درباره‌ی منطق کسب‌وکار یا قابل‌دسترس‌بودن قضاوت کند. در بازبینی دستی، یک مهندس کد را در بستر می‌خواند و داده را دنبال می‌کند و نقص‌های مجوزدهی، خطاهای منطقی و مسیرهای تزریقی را که یک ابزار از دست می‌دهد می‌گیرد. ما هر دو را به کار می‌گیریم و خروجی ابزار را به‌جای گزارش خام، غربال می‌کنیم.

چرا دسترسی به کد منبع بهتر از تست جعبه‌سیاه است؟

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

به چه دسترسی و زبان‌هایی نیاز دارید؟

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

آیا وابستگی‌های شخص ثالث را بازبینی می‌کنید؟

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

چه چیزی می‌یابید که یک اسکنر خودکار از دست می‌دهد؟

نقص‌های منطق کسب‌وکار، کنترل دسترسی شکسته و IDOR، شکاف‌های مجوزدهی که به بستر وابسته‌اند، و مسیرهای تزریق یا deserialization که فقط با ردیابی جریان داده آشکار می‌شوند. یک اسکنر الگو تطبیق می‌دهد؛ نمی‌تواند بداند که این کاربر نباید به آن رکورد برسد یا این جریان کاری قابل‌تکرار است.

شدت یافته‌ها چگونه تعیین می‌شود؟

هر یافته یک امتیاز CVSS برای یک مبنای مشترک می‌گیرد که با اثر واقعی در اپلیکیشن شما تعدیل می‌شود: چه چیزی را افشا می‌کند، چقدر قابل‌دسترس است و مهاجم چه به دست می‌آورد. یافته‌ها را به دسته‌ی ضعف CWE و الزام مرتبط OWASP ASVS نیز نگاشت می‌کنیم تا گزارش به یک استاندارد شناخته‌شده گره بخورد.

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

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

آیا بازبینی مجدد انجام می‌شود و چقدر طول می‌کشد؟

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

آماده شروع هستید؟
با تیم ما تماس بگیرید تا در مورد نیازهای ارزیابی امنیتی شما صحبت کنیم