وقتی توی تست نفوذ به Repository دسترسی داری، قرار نیست فقط بشینی کد رو خط به خط بخونی.
چیزی که برای من مهم تره اینه که بفهمم کجاهایی از Attack Surface از بیرون دیده نمیشن.
مثلاً یک Endpoint که از بیرون پیدا نکردیم، یک Background Job، یک File Handler یا جایی که Authorization فقط توی بعضی مسیرها انجام شده.
معمولاً کار رو اینطوری جلو میبرم:
اول یک SAST نسبتاً گسترده اجرا میکنم و چیزهایی مثل Dependencyها، Generated Code و Testها رو تا حد ممکن از نتایج کنار میذارم.
بعد دیگه قرار نیست تکتک Alertها رو باور کنیم.
برای هر مورد باید برگردیم به Code و مسیر رو دنبال کنیم:
Entry Point → Data Flow → Validation → Dangerous Sink
مثلاً اگر یک Input کاربر به یک SQL Query میرسه، باید ببینیم واقعاً همین مسیر در Application قابل دسترسیه؟ داده Sanitize یا Parameterize شده؟ و در نهایت واقعاً چه اثری برای مهاجم داره؟
همین موضوع برای File Operation، Deserialization، Secrets، Access Control و Business Logic هم صدق میکنه.
یکی از اشتباهات رایج اینه که:
SAST Alert = Vulnerability
نه.
ممکنه کد مربوط به Test باشه، مسیر اصلاً Reachable نباشه یا قبل از رسیدن به Sink یک Security Control درست وجود داشته باشه.
برای همین Finding خوب باید یک Chain قابل اثبات داشته باشه.
از کجا شروع شد؟
کجا رفت؟
کجا به نقطه خطرناک رسید؟
مهاجم دقیقاً چه کاری میتونه انجام بده؟
و مهم تر از همه چی باید Fix بشه؟
بهنظرم ارزش Code Analysis این نیست که ۲۰۰ تا Alert تحویل بدیم.
ارزشش اینه که از بین اون ۲۰۰ مورد، چند Finding واقعی و قابل اثبات پیدا کنیم.
@TryHackBox
@TryHackBoxOfficial
@AiTHB
@RadioZeroPod