اسکنرهای آسیب پذیر برای API های وب

من چندین محصول را برای شرکت خود در intellectstorm.com ساختم و من وظیفه دارم این محصولات را با اسکن کردن برای آسیب پذیری ها آزمایش کنم. من نمی توانم در مورد یک ابزار خوب تصمیم بگیرم، تا کنون از موارد زیر استفاده کرده ام: –
1. اسکنر آسیب پذیری Barracuda
2. ناسوس
3. Openvas
4. نیکو

من نمی توانم از Nessus یا Barracuda استفاده کنم زیرا آنها منبع باز نیستند.
این ابزارها قدرتمند هستند، اما من فکر می کنم آنها برای تست برنامه های ورودی استفاده می کنند. من هیچ اسنادی برای پیدا کردن API های وب و اسکن برای آسیب پذیری ها برای API های وب ندیدم.

برنامه ی وب – اجرای یک پروتکل امن بر روی API عمومی

این سایت از کوکی ها برای ارائه خدمات ما و نمایش آگهی های مرتبط و لیست های شغلی استفاده می کند.
با استفاده از سایت ما، شما تأیید میکنید که ما خط مشی کوکیها، خط مشی رازداری و شرایط خدمات ما را خوانده و درک کردهاید.
استفاده شما از محصولات و خدمات سرریز پشته، از جمله شبکه سرریز پشته، تحت این شرایط و ضوابط است.
                

مدیریت کلید – یک کلید API مخفی با یک نمک تصادفی به جای ارسال آن به تنهایی در REST API

بگو، من یک نقطه پایانی API HTTPS دارم که تنها توسط مدیر من استفاده می شود.
در هر یک از درخواستها یک کلید API مخفی برای احراز هویت ارسال می کنم. و من با این راه حل خوب هستم

   curl -x PUT .......
  - Header "X-My-Secret-Api-Key $ my_secret_key"
  .....

در بدن من شناسه کاربر و ایمیل را به عنوان بارنامه ارسال می کنم.

آیا آن را امن تر خواهد بود اگر من hash $ my_secret_key با ایمیل کاربر؟

   curl -x PUT .......
  - Header "X-My-Secret-Api-Key SHA-256 ($ {user_email} $ {my_secret_key}}"
  .....

این ایده این است که حتی اگر "X-My-Secret-Api-Key" متوقف شود، یک مهاجم تنها تنها کلید را برای آن کاربر خاص دریافت می کند.
و قادر خواهد بود درخواست های مهمی را فقط از طرف این کاربر ارسال کند و هیچ کس دیگری.

و برای اینکه قادر به ارسال درخواست از طرف کاربر دیگری باشد، مهاجم باید سعی کند "X-My-Secret-Api-Key" را برای آن کاربر نیز دستگیر کند. و غیره.

آیا این بهبود امنیتی مناسب است؟ هر کدوم آیا این روش شناخته شده است؟

appsec – آیا یک خطای 401 از اطلاعات نشتی API باز می شود؟

من یک API برای یک برنامه کاربردی که در حال کار است را توسعه می دهم و یک سوال جالب مطرح می کنم:

یک نقطه پایانی API را اینگونه تصور کنید:

 GET / customers / 123456

که یک شی تک مشتری را باز می کند. در حال حاضر، در سازمان ما، مشتریان می توانند به سازمان های فروش تعلق داشته باشند. هر کاربر API با یک سازمان مرتبط است و می خواهم دسترسی کاربر به مشتریان مرتبط با سازمان خود را محدود کنم.

بنابراین، با توجه به یک کاربر متعلق به سازمان ABC و مشتری 123456 که متعلق به سازمان است XYZ ، چه API باید به من نشان دهد، زمانی که این کاربر تلاش می کند تا آن مشتری را دریافت کند؟

  • 404 Not Found – اگر یک کاربر یک مشتری غیر موجود را جستجو کند، آن را 404 باز می گرداند، زیرا هیچ منبع در آن URL پیدا نشد.

  • 401 غیر مجاز – اگر پرس و جو از یک منبع که شما دسترسی ندارید، باید پاسخ "غیر مجاز" دریافت کنید.

به نظر می رسد که اگر API برای اطلاعات غیرقابل دسترسی، API 401 غیر مجاز یا مشتری های موجود از سایر سازمان ها را پیدا کند و 404 یافت نشد برای مشتری های غیر موجود باشد. به عنوان مثال، یک کاربر از سازمان ABC می تواند API را پرس و جو کند و تعیین کند که کدام شناسه های کاربر وجود دارد و چه کسی نمی باشد.

یادداشت های اضافی:

  1. شناسه های مشتری به صورت پیوسته تولید می شوند و هیچ نوع شکاف وجود ندارد، بنابراین نوع اطلاعاتی که می تواند نشت باشد:

    • کدام مشتری کد بعدی خواهد بود؟
    • چگونه تعداد مشتریان در یک دوره زمانی ایجاد شد؟
  2. سازمان های فروش معمولا به مناطق جغرافیایی خاص محدود می شوند و معمولا در رقابت مستقیم نیستند. اما بعضی از سرزمینها همپوشانی دارند و قوانینی وجود دارد که به "شکار" کردن مشتریان یکدیگر کمک کند. بنابراین، همه چیز در همه، یک محیط رقابتی محکم است که ما واقعا نمی خواهیم سازمان های فروش را در مورد مشتریان یکدیگر بدانیم.

حریم خصوصی – آیا فیس بوک اطلاعات برخی از اطلاعات حساس را با رمز دسترسی خاصی به اشتراک می گذارد؟ (API)

برخی از پیوندهای پیچیده را در نمودار فیس بوک پیدا کردم (https://graph.facebook.com) بنابراین می خواهم بدانم این درست است یا خیر

 https://graph.facebook.com/ {{ شناسه کاربر}} / {{درخواست داده}}

سپس سعی می کنیم برخی از درخواست های تقلبی را از آدرس فیس بوک فیس بوک دریافت کنیم.
(https://graph.facebook.com/100006573608740/fakedatarequest)

 {
"خطا": {
  "message": "اجزای مسیر نامشخص: / fakedatarequest"
  "نوع": "OAuthException"،
  "کد": 2500،
  "fbtrace_id": "DHYU01dQVZw"
}
}

بنابراین اکنون میخواهم برخی از اطلاعات حساس را با استفاده از نشانی اینترنتی گراف، درخواست کنم.
(https://graph.facebook.com/100006573608740/payments؛ https://graph.facebook.com/100006573608740/admins)
اکنون من خطایی خواهم کرد،

 {
"خطا": {
  "message": "یک درخواست دسترسی برای درخواست این منبع لازم است."
  "نوع": "OAuthException"،
  "کد": 104،
  "fbtrace_id": "C6Nql + 1gf + 2"
 }
}

این چیست؟ چگونه می توانیم علامت دسترسی را برای بررسی اطلاعات مانند آن اضافه کنیم؟