گپی با کوری بال، کارشناس امنیت API

کوری بال نویسنده کتاب «هک API» (که به زودی منتشر می شود) و مدیر یک شرکت مشاوره امنیت سایبری است. کوری مدتها است در جایگاهی کار میکند که باعث شده موقعیت خوبی برای اطلاع از گرایشهای روز صنعت امنیت سایبری داشته باشد و به همین دلیل نگرش کامل و جامعی درباره مسایلی همچون امنیت API دارد. در این مطلب از فراست، نگاهی خواهیم داشت بر مصاحبهای که در ماه نوامبر سال 2020 با کوری انجام گرفته است.
پیشزمینه: وضعیت امنیتی APIها
به مرور زمان، محبوبیت زیرساخت API بین هکرها افزایش پیدا کرده است. همچنین با توجه به اینکه میکروسرویسها از طریق APIهای مستقل از زبان با یکدیگر در ارتباط هستند بنابراین با رشد رونق مفهوم میکروسرویسها در سالهای اخیر، اکوسیستم API نیز پیچیدهتر از قبل شده است. این موضوع در ترکیب با مواردی مثل آسیبپذیری کسب مجوز از طریق اشیای ناقص، پیمایش دایرکتوری، تزریق SQL و سرقت اطلاعات حسابهای کاربری باعث شکلگیری انواع آسیبپذیریهای جدید شده است. در سال 2019، پروژه امنیت نرمافزاری تحت وب (OWASP[1]) یک فهرست از 10 آسیبپذیری مهم مخصوص به APIها را منتشر کرد.
در اوایل سال 2020 میلادی هم شرکت کافیشاپهای زنجیرهای آمریکایی استارباکس به محققی که یک نقص امنیتی را در سیستمهای API این شرکت پیدا کرده بود، جایزه ارزنده ای داد. این باگ میتوانست سوابق اطلاعاتی 100 میلیون مشتری این شرکت را در معرض مخاطره قرار دهد و محقق مورد نظر، آن را یک باگ شناخته شده اما در دست مطالعه توصیف کرد. در سال 2018 هم وجود یک نقص در برنامه کاربردی اداره خدمات پستی آمریکا باعث شد هر شخصی با یک حساب کاربری قادر به مشاهده و در بعضی از موارد نیز تغییر اطلاعات حدود 60 میلیون کاربر این اداره باشد. پیادهسازی ضعیف API، عامل اصلی این نقص عنوان شد.
معمولاً در سازمانها، APIها یک سطح حمله مهم و بزرگ تلقی میشوند. برای مثال شرکت Okta به تازگی پیش بینی کرده که تا سال 2022 سوءاستفاده از API تبدیل به مهمترین روش حمله برای نشت داده از برنامههای کاربردی سازمانی خواهد شد. همچنین شرکت خدمات اینترنتی Akamai هم در سال 2018 متوجه شد که فراخوانی APIها به تنهایی 83 درصد از ترافیک وب را به خود اختصاص میدهد.
در ماه نوامبر سال 2020 میلادی، پلتفرم “Burp Scanner” قابلیت تحلیل تعاریف APIها برای شناسایی نقاط انتهایی مخفی، روشها و پارامترهای تحت پشتیبانی آنها را پیدا کرد. به این ترتیب امکان پویش پیشرفته APIها با تعاریفی که در قالب JSON و YAML در هر دو نسخه Burp Suite Enterprise Edition و Burp Suite Professional نوشته شدهاند، فراهم شد. هر چند این نسخه فقط از تعداد محدودی از APIهای REST پشتیبانی میکرد اما به زودی در نسخههای پیش رو قابلیت پشتیبانی از APIهای بیشتری فراهم خواهد شد.
APIها را نادیده نگیرید!
به نظر کوری از آنجا که بیشتر APIها عمدتاً توسط توسعه دهندگان و ماشینها مورد استفاده قرار میگیرند، معمولاً در ارزیابیهای امنیتی از آنها غفلت میشود. علاوه بر این، بسیاری از سازمانها قادر به ثبت فهرست همه APIهای مورد استفاده خودشان نیستند.
همچنین تنوع بسیار زیاد APIها موجب دشواری هر چه بیشتر اسکن و پویش آنها میشود. حتی ممکن است در یک سازمان نقاط انتهایی شبکه که به ظاهر یکسان به نظر میرسند، مشخصات کاملاً متفاوتی داشته باشند. به گفته کوری بسیاری از ابزارهای پویش آسیبپذیری فاقد قابلیتهای لازم برای تست APIها بوده و در نتیجه قادر به تشخیص کامل آسیبپذیریهای API نیستند. اگر تست امنیت API در سازمان شما محدود به اجرای چنین ابزارهای پویشی باشد و این ابزارها هیچ آسیبپذیری را تشخیص ندهند، مخاطره تشخیص منفی کاذب برای شما ایجاد میشود.
نتیجه چنین وضعیتی در حوادثی مثل حادثه اداره پست آمریکا که پیش از این به آن اشاره کردیم، مشهود است. دلیل وقوع این حادثه این بود که بحث امنیت در مرحله طراحی یک API در نظر گرفته نشده بود. با وجود اینکه چند ماه پیش یک ارزیابی از آسیبپذیریهای این برنامه کاربردی صورت گرفته بود اما با این حال یک محقق توانست به راحتی امنیت برنامه کاربردی این اداره را دچار اختلال کند.
با توجه به استانداردسازی APIها آیا نباید بحث امنیت در هنگام طراحی آنها در نظر گرفته شود؟
در زمینه استانداردسازی فرایند طراحی APIها پیشرفتهای خوبی صورت گرفته و امروزه شاهد حرکتهایی مثل حرکت از Swagger به سمت OpenAPI هستیم که به معنای استاندارد شدن هر چه بیشتر طراحی APIها است. در مجموع، این حرکت مثبت است و باعث سادهتر شدن بعضی از جنبههای تست میشود اما باید توجه داشت که استاندارد بودن یک API، تضمینی بر پیادهسازی درست و مناسب آن نیست و این از جمله شرایطی است که سازمانها اغلب با آن روبرو میشوند.
هنوز هم موارد زیادی وجود دارد که باید برای پیادهسازی API در نظر داشت؛ از جمله اینکه آیا همه چیز در تعریف در نظر گرفته شده است؟ آیا بهروزرسانیهای لازم انجام شده است؟ آیا ممکن است بروز مشکلی برای مدیریت داراییها موجب حفظ نسخه قدیمی یک API شده باشد؟ این پرسشها از جمله مواردی هستند که باید هنگام بررسی امنیت API در نظر داشته باشید.
برای سازمانهایی که به دنبال امنسازی APIهای خودشان هستند، چه توصیهای دارید؟
وقتی این سؤال از کوری مطرح شد، او خندید. به هر حال بحث امنیت API یک موضوع بسیار وسیع و گسترده است اما پاسخ کوری برای این سؤال این بود که: «آنها را هک کنید. شاید یک API طراحی کرده و تصور کنید که فوق العاده امن است اما در صورت عدم تست آن، در نهایت یک مهاجم سایبری این کار را برای شما انجام خواهد داد».
با وجود آنکه بررسی APIها به منظور شناسایی آسیبپذیریهای آنها نقطه شروع خیلی خوبی است ولی کافی نیست. APIها از جمله نقاطی هستند که آسیبپذیری منطق کسبوکارها به راحتی در آنها نمایان میشود و ابزارهای پویشگر برای پیدا کردن آنها با مشکل روبرو هستند. همیشه به طرز فکر دشمنانه ای که در آزمون نفوذپذیری (تست نفوذ) وجود دارد، نیاز دارید تا بتوانید نسبت به امنیت سازمان خودتان اطمینان پیدا کنید.
چند نمونه از آسیبپذیریهای منطق کسبوکار API را نام ببرید.
آسیبپذیریهای منطق کسبوکار را میتوان اینگونه تعریف کرد: «قابلیت خاصی که عمداً در یک برنامه کاربردی طراحی شده و میتوان از آن برای تهدید امنیت آن برنامه کاربردی سوءاستفاده کرد». برای مثال، یک مذاکره درباره انتخاب قابلیتهای یک برنامه کاربردی را در نظر بگیرید. به احتمال بسیار زیاد در چنین گفتگویی اولویت با صحبت درباره راحتی کاربران است و نه امنیت آنها.
کوری از تجربه کار خودش به عنوان مشاور امنیت سایبری مثال خیلی خوبی زد. یکی از مشاغلی که او در گذشته با آن همکاری داشته، خواستار فراهم شدن ویژگی جستجوی اطلاعات حساب تمام کاربران برنامه مورد نظر توسط مدیر سیستم (ادمین) بود اما این کسبوکاربه اندازه کافی به امنسازی این قابلیت فکر نکرده و تصور میکرد که کاربران معمولی این قابلیت را پیدا و از آن استفاده نمیکنند.
نکته همه این مطالب این است که اگر واقعاً به دنبال امنیت سایبری کارآمد و مؤثر هستید، بحث و گفتگو درباره امنیت سایبری باید در سطح راهبردی انجام شود. کارشناسان امنیت سایبری از همان مراحل اولیه برنامه ریزی باید جایگاه مدیریتی لازم را داشته باشند تا بتوانند امنیت مؤثر و کارآمدی را پیادهسازی کنند.
همچون سایر جنبههای امنیت برنامههای کاربردی تحت وب، امنسازی مؤثر و کارآمد APIها هم مستلزم یک رویکرد جامع است. این رویکرد شامل ابزارهای مختلف از جمله ابزارهای پویش آسیبپذیری و تست نفوذ میباشد. داشتن یک نگرش و دیدگاهی شبیه مهاجمان برای پیادهسازی امنیت، از همان مراحل طراحی ضروری است.
[1] Open Web Application Security Protocol
منبع: portswigger