هر pull request اضافه کردن یا تغییر یک نقطه پایانی، سطح حمله API شما را تغییر میدهد. اکثر ابزارهای امنیتی API تا زمانی که آن نقطه پایانی فعال نشده و ترافیک را دریافت نکرده باشد، متوجه آن نمیشوند. در آن زمان، رفع مشکل دیگر یک تغییر تک خطی در بررسی کد نیست، بلکه یک مکالمه پاسخ به حادثه است.
امنیت API روشی برای یافتن و از بین بردن خطرات مربوط به نحوهی افشای نقاط انتهایی توسط یک برنامه است: چه کسی میتواند آنها را فراخوانی کند، چه دادههایی را برمیگرداند و آیا کاری را که مستندات میگویند انجام میدهند یا خیر.
بیشتر ابزارهایی که برای این مشکل ساخته شدهاند، API را در زمان اجرا، از بیرون، مانند یک مهاجم، آزمایش میکنند. این رویکرد کار میکند، اما فقط پس از استقرار API کار میکند. شیگنی مسیر قبلی را طی میکند: کد منبع و مشخصات API شما را قبل از اینکه حتی یک درخواست به نقطه پایانی برسد، میخواند.
چهار روش برای آزمایش یک API، و اینکه هر کدام به چه چیزی پاسخ میدهند
بیشتر برنامههای بالغ بیش از یکی از این موارد را اجرا میکنند:
- تست استاتیک کد منبع و مشخصات API را قبل از استقرار تجزیه و تحلیل میکند. به این سوال پاسخ میدهد که «ما الان چه چیزی را افشا کردیم؟» این رویکردی است که این مقاله بر آن تمرکز دارد.
- آزمایش دینامیکی (DAST) ترافیک واقعی را به یک API در حال اجرا ارسال میکند و نحوه پاسخ آن را مشاهده میکند. این سرویس به این سوال پاسخ میدهد که «در حال حاضر چه چیزی واقعاً قابل دسترسی و بهرهبرداری است؟»
- گیج کننده ورودیهای ناقص یا غیرمنتظره را در نقاط پایانی ارسال میکند تا منجر به خرابیهای سطحی و خطاهای مربوط به موارد خاص شود. این پاسخ میدهد که «چه چیزی تحت ورودی که پیشبینی نکرده بودیم، دچار مشکل میشود؟»
- تست نفوذ دستی قضاوت انسانی را برای یافتن نقصهای منطقی که ابزارهای خودکار از دست میدهند، اضافه میکند. این به این سوال پاسخ میدهد که «یک مهاجم هوشمند چه چیزهایی را به هم متصل میکند؟»
هیچکدام از اینها جایگزین دیگری نمیشوند. آنها به سوالات مختلفی در نقاط مختلف چرخه حیات پاسخ میدهند و خلایی که اکثر برنامهها دارند، مورد اول است.
چرا اکثر ابزارهای امنیتی API خیلی دیر متوجه خطر میشوند؟
تست امنیتی API در زمان اجرا، ترافیک را به یک برنامهی زنده ارسال میکند و نحوهی پاسخ آن را مشاهده میکند. این یک لایهی مشروع و ضروری است. همچنین، از نظر ساختاری، یک شاخص تأخیر است: یک نقطهی پایانی باید وجود داشته باشد، مستقر شده باشد و قابل دسترسی باشد تا یک اسکنر در زمان اجرا بتواند چیزی در مورد آن بگوید. هر آنچه که پیدا میکند، به مدت زمانی که اسکن برای اجرا طول کشیده، در معرض دید بوده است.
شکاف دومی هم در زیر آن مشکل زمانبندی وجود دارد. ابزارهای زمان اجرا فقط میتوانند آنچه را که میدانند وجود دارد آزمایش کنند. اگر یک نقطه پایانی هرگز مستند نشده باشد، یا مشخصات OpenAPI به محض ارسال یک مسیر جدید توسط کسی، قدیمی شده باشد، یک اسکنر زمان اجرا هیچ راهی برای دانستن وجود آن ندارد. این اسکنر نقشه را آزمایش میکند، نه قلمرو را.
تست امنیتی ایستا API با انتقال بررسی به جایی که نقطه پایانی تعریف شده است: کد شما و مشخصات API شما، قبل از استقرار، هر دو شکاف را پر میکند. همان pull request که یک نقطه پایانی را معرفی میکند، pull request که ریسک آن را آشکار میکند.
امنیت استاتیک API در واقع به چه معناست؟
Xygeni موجودی API شما را از دو منبع میسازد: کد منبع برنامه شما و مشخصات API شما، از جمله OpenAPI و Swagger.
یک فهرست صرفاً مشخصات، نقاط پایانی را نشان میدهد که کسی به خاطر سپرده است آنها را مستند کند. یک فهرست صرفاً کد، آنچه را که وجود دارد نشان میدهد اما لزوماً نحوه استفاده از آن را بیان نمیکند. خواندن هر دو، تصویر کاملی را به شما میدهد: نقاط پایانی که تیمهای شما مستند کردهاند و آنهایی که هیچکس انجام نداده است.
آن فهرست، پایه و اساسی است که هر چیز دیگری بر آن بنا میشود:
- کل APIهای کشفشده و داراییهای در معرض خطر که با یک معیار پایه سنجیده شدهاند
- نقاط پایانی بر اساس روش HTTP تفکیک شدهاند
- مشکلات گروهبندیشده بر اساس سرویس
- هر نقطه پایانی با روش، مسیر، سرویس، ماژول، وضعیت احراز هویت و امتیاز ریسک آن
سرپرستان مهندسی شما، شکل سطح API شما را بدون باز کردن حتی یک تیکت مشاهده میکنند.
هر نقطه پایانی که Xygeni پیدا کرد، به همراه روش، وضعیت احراز هویت و امتیاز ریسک آن، از کد و مشخصات به صورت ترکیبی ساخته شده بود.
Production note پنل AI Triage را از هر اسکرینشات API Security برش دهید.
مطابق با 10 مورد برتر امنیتی OWASP API
یافتهها، چارچوبی را که تیمهای امنیتی و حسابرسان شما از قبل استفاده میکنند، نشان میدهند. Xygeni ریسک را در سراسر OWASP API Security شناسایی میکند. 10 نفر برتر (2023):
| OWASP | خطر | در عمل به چه معناست |
|---|---|---|
API1 | مجوز سطح شیء شکسته | یک نقطه پایانی دادههای متعلق به کاربر یا مستاجر دیگری را برمیگرداند یا تغییر میدهد. |
API2 | نقاط پایانی احراز هویت نشده | یک مسیر بدون نیاز به احراز هویت قابل دسترسی است |
API3 | قرار گرفتن بیش از حد در معرض دادهها | یک پاسخ، فیلدهای بیشتری از آنچه فراخواننده نیاز دارد یا باید ببیند، برمیگرداند. |
API3 | تکلیف انبوه | یک نقطه پایانی فیلدهایی را میپذیرد و اعمال میکند که هرگز قرار نبوده بپذیرد |
API3 / API10 | دادههای حساس در پاسخها | PII، PCI یا PHI از نقطه پایانی که نباید آن را ارسال کند، به کلاینت میرسد. |
API4 | محدودیتهای نرخ از دست رفته | یک نقطه پایانی هیچ محافظتی در برابر سوءاستفاده یا تماسهای جستجوی فراگیر ندارد |
API5 | مجوز سطح عملکرد شکسته | یک نقطه پایانی بدون بررسی اینکه آیا فراخواننده مجاز است یا خیر، یک عمل دارای امتیاز را انجام میدهد. |
API7 | SSRF | میتوان API را طوری فریب داد که از طرف مهاجم درخواست ارسال کند. |
API8 | پیکربندی نادرست JWT | اعتبارسنجی، امضا یا انقضای توکن به اشتباه تنظیم شده است |
API8 | پیکربندی نادرست CORS | قوانین بین مبدائی به اندازه کافی سهلگیرانه هستند که قابل سوءاستفاده باشند. |
API9 | نقاط پایانی زامبی و یتیم | مسیرهای منسوخ شده یا فراموش شده که هنوز قابل دسترسی هستند، و مسیرهایی که هیچ کس مالک آنها نیست |
یک دسته عمداً غایب است. API6، دسترسی نامحدود به جریانهای حساس کسبوکار، مستلزم درک آنچه یک فرآیند کسبوکار قرار است اجازه دهد، است و هیچ تحلیلگر استاتیکی این را به طور معتبر تشخیص نمیدهد. هر فروشندهای که خلاف این را ادعا کند، در واقع یک چکباکس به شما میفروشد. آن یکی با مدلسازی تهدید و آزمایشکنندگان نفوذ شما باقی میماند.
همه یافتهها یکسان نیستند: حساسیت دادهها و ترکیبات سمی
یک فهرست مسطح از یافتهها، با یک نقطه پایانی بررسی سلامت احراز هویت نشده مانند یک نقطه پایانی احراز هویت نشده که سوابق مشتری را برمیگرداند، رفتار میکند. این دو مشکل یکسانی نیستند و یک مدل اولویتبندی که به آنها امتیاز یکسانی میدهد، تیمهای شما را آموزش میدهد تا این فهرست را نادیده بگیرند.
Xygeni دادههایی را که هر نقطه پایانی مدیریت میکند، طبقهبندی میکند، PII، PCI و PHI را در پارامترهای درخواست و در پاسخها علامتگذاری میکند و آن را با وضعیت احراز هویت نقطه پایانی جفت میکند.
همچنین یافتههایی را که در یک نقطه پایانی قرار میگیرند، مرتبط میکند و وقتی با هم ترکیب میشوند، شدت آنها را افزایش میدهد. نشت اطلاعات شخصی در یک پاسخ، به خودی خود یک یافته جدی است. همان نشت در یک نقطه پایانی که نیازی به احراز هویت ندارد، بسیار مهم است و پلتفرم به جای اینکه اتصال را برای کسی که به صورت دستی متوجه آن میشود، رها کند، آن را به این صورت امتیازدهی میکند.
نقاط پایانی زامبی و یتیم: اختلاف بین کد و مشخصات
از آنجا که Xygeni کد و مشخصات API شما را در کنار هم میخواند، متوجه میشود که کجا با هم اختلاف دارند. این اختلاف به صورت سه الگوی قابل تشخیص ظاهر میشود:
- نقاط پایانی مستند نشده. آنها در کد وجود دارند و هرگز به مشخصات اضافه نشدهاند.
- نقاط پایانی زامبی. آنها به عنوان منسوخ یا بازنشسته علامت گذاری شده اند و هنوز قابل دسترسی هستند.
- نقاط پایانی یتیم. هیچکس در تیم فعلی مالک آنها نیست.
هیچکدام از اینها در فهرست موجودی فقط مشخصات فنی ظاهر نمیشوند، زیرا مشخصات فنی دقیقاً همان چیزی است که آنها را از قلم انداخته است.
شواهدی که میتوانید بر اساس آنها اقدام کنید، نه مجوزی برای تحقیق
هر یافته به مسئول دقیق خطا اشاره دارد: فایل، کلاس، متد و خط خاصی که نقص را ایجاد کرده است، به همراه کد خطا که در کنار آن نمایش داده میشود. هر کدام همچنین شدت، دسته بندی OWASP API Security Top 10 خود، CWE خود، وضعیت احراز هویت نقطه پایانی و طبقه بندی حساسیت داده های مربوطه را نیز نشان می دهد.
یافتهای که فقط یک نقطه پایانی را نام میبرد، توسعهدهنده را مجبور میکند قبل از اینکه حتی بتواند شروع به اصلاح چیزی کند، در پایگاه داده به دنبال راهحل بگردد. یافتهای که خط را نام میبرد، آنها را بلافاصله به اصلاح میرساند.
یافتهها به صورت JSON، CSV، Markdown و SARIF 2.1.0 صادر میشوند، بنابراین در ... قرار میگیرند.تیمهای شما از قبل در چه زمینههایی کار میکنند؟
مسئول رسیدگی، خط و کدی که باعث افشای اطلاعات شده بود. هیچ مدرکی برای بررسی وجود ندارد.
چرا این بازی فقط روی یک پلتفرم اجرا میشود، نه روی کنسول دیگر
Xygeni در کنار API Security، آن را نیز اجرا میکند. SAST, SCA, امنیت اسرار, IaC و خسته درون یک پلتفرم واحد، که از طریق ... همبسته است ASPMبه جای اینکه آن را به عنوان یک ابزار جداگانه با ویژگیهای خاص خودش ارسال کنید login و عقبماندگی خودش.
این مهم است زیرا یافتههای ایستا و یافتههای زمان اجرا به سوالات متفاوتی در مورد یک نقطه پایانی پاسخ میدهند و آنها با هم مفیدتر از جدا از هم هستند. ایستا قبل از ارسال یک نقطه پایانی به شما میگوید که آن نقطه خطرناک است. DAST تأیید میکند که چه چیزی در واقع قابل دسترسی و بهرهبرداری است، پس از اجرا.
اگر این مقدار را بین دو کنسول تقسیم کنید، ریسک همبسته به دو انباشتگی نامرتبط تبدیل میشود. هیچکس آنها را با هم تطبیق نمیدهد و نقطه پایانی که هم مستند نشده و هم احراز هویت نشده است، در هیچکدام از صفها قرار نمیگیرد.
سطح حمله واقعی API خود را ببینید. امنیت API به عنوان یک مورد در دسترس است Enterprise افزونهای به پلتفرم Xygeni اضافه میشود و اسکنی روی مخازن خودتان در داخل زیرساخت خودتان اجرا میشود.
سوالات متداول
آیا میتواند تشخیص دهد که کدام نقاط پایانی دادههای حساس را مدیریت میکنند؟
بله. Xygeni در پارامترها و پاسخهای نقاط پایانی، PII، PCI و PHI را علامتگذاری میکند و از این طبقهبندی برای رتبهبندی یافتهها بر اساس میزان مواجهه واقعی استفاده میکند.
آیا روی هر دستگاهی قابل اجرا است؟ pull request?
بله. اسکن افزایشی فقط نقاط پایانی که تغییر کردهاند را تجزیه و تحلیل میکند و مانیفستی که تولید میکند میتواند اسکن DAST بعدی را روی همان نقاط پایانی متمرکز کند، بنابراین آزمایش استاتیک و زمان اجرا با آنچه واقعاً تغییر کرده است، همسو میمانند.
آیا کد من محیط من را ترک میکند؟
خیر. اسکنها در زیرساخت خودتان اجرا میشوند. فقط نتایج آپلود میشوند، در حین انتقال و در حالت استراحت محافظت میشوند.
چگونه میتوانم امنیت API را دریافت کنم؟
امنیت API به عنوان یک مورد در دسترس است Enterprise افزونه. درخواست PoC بدهید و بررسی آن با شما خواهد بود.





