کاوش در مورد چگونگی ویژگی های امنیتی بخش Section Security ، راه حل هایی برای محافظت از مشتریان از اسرار متعهد و یتیم ساخته شده است.
توسط سال اولوارز
در بخش شروع کنید
این امکان پذیر است که منابع و مقصد خود را با یک API واحد وصل کنید.
هیچ چیز خوبی از ارتکاب یک نشانه API به یک مخزن git نیست.
بازیگران مخرب از ابزارهای جستجوی ارائه شده توسط Github و GitLab برای یافتن نشانه های API ، کلیدهای خصوصی ، نام کاربری و رمزهای عبور در بازپرداختهای عمومی استفاده می کنند - اسرار آبدار که می تواند برای سرقت داده ها یا اجرای یک قبض بزرگ استفاده شود. در یک مثال اخیر ،یک راز کدگذاری شده به مدت 5 سال بدون توجه به آن رفت، به طور بالقوه امکان دسترسی به مهاجمان به داده های بیش از 200000 مشتری را فراهم می کند.
این چیز جدیدی نیستنشت مخفی یک مشکل فراگیر است که می تواند عواقب پرهزینه ای برای سازمان ها داشته باشد -بیش از 6 میلیون راز شناسایی شددر repos عمومی GitHub در سال 2021.
مطالعه توسطتیم تحقیقاتی دانشگاه ایالتی کارولینای شمالیدریافت که زمان متوسط برای اسرار برای فهرست بندی توسط GitHub "20 ثانیه بود ، با زمان هایی از نیم ثانیه تا بیش از 4 دقیقه" و "عواقب افشای مخفی حتی به سرعت تشخیص داده شده شدید و دشوار است برای کاهش حذف یک مخزن بسیار دشوار استیا اعتبار مجدد اعتبار ".
هنگامی که یک راز به یک repo عمومی رسید ، آن نشانه API یا رمز عبور به خطر می افتد. انتخاب دیگری جز چرخش آن وجود ندارد.
اسرار همچنین با رویه های ناکارآمد خارج از هیئت مدیره در بسیاری از سازمان ها در معرض خطر قرار می گیرد. در برخی از برنامه ها ، نشانه های API ایجاد شده توسط کاربران دیگر ممکن است بخشی از شرکت باقی بماند. در بخش ، ما این نشانه های "یتیم" را می نامیم ، و آنها می توانند دلیلی برای نگرانی باشند زیرا توسط کاربران سابق شناخته شده اند.
در این پست توضیح می دهم که چگونه تیم ما ، تیم ویژگی های امنیتی ، راه حل هایی برای محافظت از مشتریان خود در برابر اسرار متعهد و یتیم ساخته است.
اسکن مخفی
خوشبختانه ، ما نیازی به ایجاد راه حل اسکن مخفی از ابتدا نداشتیم. Github و GitLab ویژگی های تشخیص/اسکن مخفی را ارائه می دهند که هنگام انجام یک راز به کاربران هشدار می دهند. آنها هر دو برنامه های شریک را برای ارائه دهندگان SaaS ارائه می دهند تا از این ویژگی ها استفاده کنند. تمام کاری که ما باید انجام دهیم این بود که یک الگوی Regex Token API را فراهم کنیم ، یک نقطه پایانی عمومی را تنظیم کنیم و Github/Gitlab شروع به ارسال هرگونه توکن تطبیق داد.
نمودار دنباله فوق یک نمای ساده از معماری برنامه ریزی شده و آنچه در هنگام تشخیص مخفی اتفاق می افتد است. مسیر تیم ما واضح بود: ما نیاز به راه اندازی یک سرور API REST ساده با یک نقطه پایانی در دسترس عمومی داشتیم.
هشدار یا ابطال؟
هنگامی که Github/GitLab از طریق نشانه های در معرض قرار می گیرد ، توپ در دادگاه ما است و ما 3 گزینه بالقوه را به دست آوردیم:
- به مشتری هشدار دهید ، سپس آن را به آنها واگذار کنید تا اقدامی انجام دهند.
- نشانه را لغو کنید ، سپس به آن اطلاع دهید.
- هشدار دهید ، سپس بعد از 24 ساعت نشانه را لغو کنید.
گزینه اول کمترین اختلال در گردش کار مشتریان ما خواهد بود ، اما کمترین امنیت است ، زیرا ما نمی توانیم تضمین کنیم که اعلان به موقع یا اصلاً دیده می شود. گزینه دوم مخرب ترین ، اما امن ترین ، زیرا هیچ فرصتی برای بازیگران بد وجود نخواهد داشت که از نشانه های در معرض استفاده کنند. گزینه سوم می تواند یک میانه بین هر دو باشد ، اما ، همانطور که قبلاً نیز گفته شد ، هیچ تضمینی وجود نخواهد داشت که هشدار به موقع دیده می شود ، و هنوز هم برای بهره برداری زمان می گذارد. همچنین پیچیدگی بیشتری را در معماری ما معرفی می کند ، زیرا ما به راهی برای پیگیری این نشانه های در معرض و ابطال آنها پس از مدت زمان مشخصی نیاز داریم.
ما می خواستیم تعادل بین تجربه کاربر و امنیت برقرار کنیم. آیا ما ترجیح می دهیم مشتری ما یک حادثه امنیتی داشته باشد که داده های کاربر نهایی (مشتری مشتری ما) به طور بالقوه در معرض خطر باشد؟یا حادثه ای که در آن از بین رفتن بالقوه تحویل رویداد (که به راحتی قابل بازیابی است) وجود دارد و راه حل این است که به سادگی یک کلید جدید ایجاد کنید؟
ما همچنین نگاهی به شرکای اسکن مخفی Github و آنچه آنها در صورت وجود یک نشانه در معرض دید انجام می دهند ، نگاهی انداختیم:
شریک - روش
- متا- خودکار مجدد
- رجیت- خودکار مجدد
- Zuplo- هشدار یا اتم خودکار (اولویت مشتری)
- عکسبرداری- بررسی خودکار یا بررسی دستی (بسته به دامنه توکن)
- دیجیتال- خودکار مجدد
- تعویض- خودکار مجدد
- هشت پا مستقر- هشدار دادن
این نمونه کوچک به تصمیم گیری برای ادامه کار با ابطال خودکار نشانه های در معرض و اطلاع صاحبان فضای کاری ، وزن داد.
الگوی توکن API
با دانستن اینکه در نهایت با این ویژگی مقابله خواهیم کرد ، در اوایل سال ، ما قالب API Token خود را تغییر دادیم تا بتوان به راحتی با یک بیان منظم مطابقت داشت. الگوی اصلی ما یک رشته شخصیت عمومی Alphanumeric 64 ([A-ZA-Z0-9]) بود. استفاده از این الگوی به تعداد ناگفته ای از مثبت های کاذب منجر می شود ، بنابراین در عوض ، با الهام ازگیتوب، پیشوند قابل شناسایی را به رشته های Token API اضافه کردیم.
`SGP_` ایستادن برای S e g ment p ublic api token اضافه شد و الگوی جدید" sgp_ [a-za-z0-9] `خواهد بود. اجرای ساده بود:
- برای ردیابی نسخه Token یک ستون به جدول Token اضافه کنید. تمام نشانه های فعلی نسخه 1 خواهند بود و نشانه های جدید پیشوند SGP_ نسخه 2 خواهد بود. اگر ما نیاز به ایجاد یک تغییر اساسی دیگر در آینده داریم ، این نشانه ها نسخه 3 و غیره خواهند بود.
- بخش های مربوط به پس زمینه ما را به روز کنید تا قسمت نسخه جدید را به خود اختصاص دهید.
- هنگامی که نشانه ها ایجاد می شوند ، پیشوند `SGP_` اضافه می شود و یک نشانه هشدار ذخیره می شود.
با یک قالب مخفی جدید در دست ، من یک روابط عمومی را بهپروژه گیتلیک(ابزاری عالی برای تشخیص و جلوگیری از رازهای سخت در Git Repos) و اندکی پس از آن ، تیم اسکن مخفی در Github به دعوت ما برای پیوستن به برنامه شریک اسکن مخفی خود رسید. زمانبندی خوب.
سرویس توکن در معرض
پس از اینکه به Github و GitLab اجازه دادیم از قالب Token API و تاریخ راه اندازی برنامه ریزی شده آگاهی داشته باشیم ، ما با برنامه ریزی سرویس توکن در معرض خود اقدام کردیم. هدف نهایی تنظیم یک نقطه پایانی HTTP عمومی است که هر دو ارائه دهنده می توانند نشانه های یافت شده را به آن ارسال کنند.
هر دو ارائه دهنده تقریباً همان بدنه درخواست را ارسال می کنند (GitLab کلید منبع را ترک می کند) بنابراین استفاده مجدد از منطق ابطال اصلی آسان خواهد بود:
درمستندات جیتوبدر مورد راه اندازی خدماتی مانند این عالی بود و تمام اطلاعات مورد نیاز ما را برای شروع کار در اختیار ما قرار داد. ما تصمیم گرفتیم که با یک سرور ساده NodeJS Express برویم زیرا با تمام وجود دیگ بخار بخش موجود و ابزار خودکار در دسترس است. با این حال ، شایان ذکر است که اگر انتظار ندارید نشانه های در معرض زیادی را دریافت کنید ، این نوع گردش کار بسیار زیبا به یک معماری بدون سرور وام می دهد.
پس از نهایی شدن و تصویب این طرح ، حدود یک ماه یک مهندس طول کشید تا این درب را از آن خارج کند. حال ، اگر به طور تصادفی مرتکب یک قطعه قطعه شوید ، در صندوق ورودی خود چیزی شبیه به این دریافت خواهید کرد:
این اعلان ایمیل هر بار که نشانه ابطال می شود به صاحبان فضای کاری ارسال می شود. این کار با ارائه ابرداده در مورد نشانه آغاز می شود و به لطف داده های ارائه شده توسط شرکای اسکن مخفی ما ، پیوندی به جایی که این نشانه پیدا شده است ، شامل می شود.
در بخش زیر مراحلی که مشتری باید انجام دهد را تشریح می کند. توصیه می کنیم هرگونه فعالیت مشکوک (به عنوان احتیاط اضافی) را بررسی کنید و یک نشانه جدید برای جایگزینی یک مورد ابطال شده ایجاد کنید. بخش آخر توضیح می دهد که با کمک شریک اسکن مخفی ما ، ما توانستیم نشانه ای را که ممکن است به طور تصادفی مرتکب شده باشد کشف و ابطال کنیم - اطمینان حاصل کنیم که مشتری بخشی از آن نیست که آن را بیرون بکشد.
معیارهای
با استفاده از انبار داده ما ،برف، ما می توانیم نمایش داده ها را اجرا کنیم و داشبورد ایجاد کنیم تا بینشی در مورد عملکرد این ویژگی جدید به دست بیاوریم. به طور خاص ، ما می خواهیم بدانیم:
- منشأ نشانه های در معرض
- نسبت نشانه های ابطال شده به مثبت کاذب
- کدام یک از فضای کاری بیشترین ابطال را داشت
ما شامپاین خودمان را می نوشیم و از بخش برای جمع آوری این معیارها استفاده می کنیم. ما آتش می زنیمتماس تلفنیهربار که از شرکای اسکن مخفی خود یک نشانه دریافت می کنیم و این به برف می رسد.
تماس آهنگ ما شامل خصوصیات زیر است:
- UserID: آنچه کاربر این رویداد را تحریک کرده است (ما از `__system__` برای نشان دادن سرویس تحریک تماس استفاده می کنیم)
- رویداد: نام عملی که انجام شده است.
- Origin: آنچه شریک اسکن مخفی از این نشانه خبر داد
- پیشوند: شناسه توکن (5 کاراکتر اول بعد از `SGP_`)
- منبع: جایی که نشانه پیدا شد
- وضعیت: اگر نشانه ابطال شد یا مثبت کاذب (نامعتبر)
- URL: آدرس محل پیدا کردن نشانه
ردیابی معیارهای محصول امنیتی معنی داربرای تیم ما مهم است. ما هنوز داده های قابل توجهی نداریم ، اما امیدواریم از آن برای بهبود خدمات و کمک در تلاشهای برنامه ریزی آینده استفاده کنیم. تیم پاسخگویی حادثه امنیتی ما همچنین می تواند از این داده ها برای مشاهده هرگونه روندها استفاده کند و اقدامات لازم را برای محافظت از مشتریان انجام دهد.
نشانه های API یتیم
چه در مورد نشانه هایی که لزوماً به بیرون درز نیستند اما توسط کاربرانی که دیگر بخشی از سازمان شما نیستند شناخته می شوند؟در برخی از برنامه ها ، نشانه های API به یک کاربر گره خورده اند و پس از حذف مجوز کاربر از یک سازمان ، نمی توان از آنها استفاده کرد. اما ، در بخش ، آنها در عوض به فضای کاری گره خورده اند.
وقتی برای اولین بار به بخش وارد شوید ، در یک فضای کاری به پایان می رسید. فضای کاری به شما کمک می کند تا دسترسی به چندین کاربران و منابع داده را مدیریت کنید - این جایی است که عملکرد همه بخش ها در آن زندگی می کنند.
از اینجا ، می توانید یک نشانه API ایجاد کنید که می تواند برای مدیریت برنامه نویسی فضای کاری استفاده شود. از آنجا که این نشانه API به فضای کاری گره خورده است ، نه یک کاربر ، به مشتریان این امکان را می دهد تا نقش ها و مجوزهای مختلف را به نشانه ها اختصاص دهند. اما ، این می تواند یک مشکل باشد زیرا کاربر می تواند یک نشانه تولید کند ، آن را بنویسد ، فضای کاری را ترک کند و هنوز هم توانایی انجام اقدامات در فضای کاری را داشته باشد.
شما به آنچه که ما از آن به عنوان یک نشانه "یتیم" یاد می کنیم پایان می دهید و این ممکن است نگرانی صاحبان فضای کار را ایجاد کند ، که انتظار دارند کاربرانی که دیگر بخشی از فضای کاری نیستند دیگر قادر به انجام اقدامات خاص در فضای کار نیستند.
حذف یک نشانه به محض عزیمت خالق آن ، احتمال یک کارمند سابق ناراضی باعث ایجاد هرج و مرج می شود. با این حال ، اغلب این اتفاق می افتد که افراد یک شرکت را با شرایط خوب ترک می کنند و بلافاصله چرخش نشانه های ایجاد شده توسط یک فرد ممکن است برای مشتریان ما خیلی مهم نباشد. این بسیار متفاوت از قرار گرفتن در معرض عمومی یک نشانه است که در آن شخص مخرب تضمین شده است که در نهایت این نشانه را پیدا و بهره برداری کند.
درعوض ، ما تصمیم گرفتیم که به صاحبان فضای کاری هشدار دهیم و آنها می توانند تصمیم بگیرند که آیا یک نشانه به اندازه کافی برای چرخش ، حذف یا ترک همانطور که هست مهم است. صاحبان فضای کاری ایمیل دریافت می کنند و هشدارهای درون برنامه ای را مشاهده می کنند که نشان می دهد کدام نشانه ها به توجه نیاز دارند.
معماری
این کار توسط یک سرویس جدید که ما آن را سرویس Papi Alert نامیدیم امکان پذیر شد. این یک کار ساده کرون است که در TypeScript نوشته شده است که یک بار در روز اجرا می شود و وظیفه پیدا کردن نشانه های یتیم و هشدار دادن به صاحبان فضای کاری را بر عهده دارد. در سطح بالایی ، این سرویس همه سازندگان توکن را که توسط شناسه فضای کاری گروه بندی شده اند ، واگذار می کند و برای هر فضای کاری که دارای یک خالق توکن است که دیگر بخشی از آن فضای کاری مربوطه نیست ، اعلان را اخراج می کند.
در زیر یک نسخه ساده از نحوه یافتن نشانه های یتیم آورده شده است.
ما همچنین دو ستون جدید را به جدول پایگاه داده Token API اضافه کردیم: `FirstalTedat` و" Lastalertedat "."FirstalertEdat" تاریخی است که صاحبان فضای کاری برای اولین بار در مورد نشانه یتیم مطلع شدند در حالی که "LastalertEdat" جدیدترین تاریخ به صاحبان فضای کاری است.
با هم ، این ستون ها برای تعیین اینکه آیا در هنگام شناسایی یک نشانه یتیم ، اعلان ارسال می شود یا خیر ، استفاده می شود: اگر "FirstalertEdat" تهی است ، یا یک اعلان پیگیری ارسال کنید اگر 6 ماه از تاریخ "LastertEdat" باشد.- یک اطلاع رسانی پیگیری به طور مداوم ارسال می شود تا اینکه توکن حذف شود. ما می خواهیم به مشتریان یادآوری کنیم که فضای کاری آنها حاوی نشانه های یتیم شده است و آنها را برای چرخش آنها گول می زند.
پیش از این ، من به تصمیم گیری در مورد عدم استفاده از توکن های یتیم به صورت خودکار اشاره کردم ، که تصمیمی بود که در طول برنامه ریزی این پروژه گرفته شد. این امر بیشتر تقویت شد که معیارها شروع به چرخش کردند: 25 ٪ از نشانه های یتیم پس از اولین اطلاع رسانی حذف شدند و 13 ٪ پس از اعلان پیگیری.
در نگاه اول ، به نظر می رسید کاربران خوب هستند که این نشانه های یتیم را در اطراف خود ترک کنند. با این حال ، یک بازرسی دقیق تر نشان داد که بیشتر این نشانه ها برای حمایت از ما استفاده شده استمبهمویژگی. به طور معمول ، شخصی از تیم IT مشتری به فضای کاری می پیوندد ، یک نشانه تولید می کند ، از توکن برای تنظیم SCIM با ارائه دهنده هویت خود استفاده می کند و سپس فضای کاری را ترک می کند. در مورد ما ، تا زمانی که مشتری ما آگاه بود ، داشتن یک نشانه یتیم کاملاً قابل قبول بود.
نتیجه
ما امیدواریم که این دو ویژگی ، نشانه های API کاربر ما را ایمن نگه داشته و به جلوگیری از حوادث امنیتی کمک کند. با اجرای این اقدامات ، ما می توانیم تعادل بین تجربه کاربر و امنیت را برقرار کنیم ، و اطمینان حاصل کنیم که از داده های کاربر نهایی مشتریان ما محافظت می شود و در عین حال اختلال در گردش کار مشتری را نیز به حداقل می رساند.
Github و Gitlab در حال تلاش های بزرگی برای جلوگیری از اسرار در راهپیمایی خود در repos هستند و تلاش های فزاینده ای در جامعه برای مقابله با این مسئله گسترده وجود دارد (نگاهی بیندازیدRFC 8959). در عین حال:
- از برنامه های شریک موجود/اسکن مخفی موجود استفاده کنید تا به راحتی به مشتریان در مورد اعتبارنامه های فاش شده اطلاع دهید و به جلوگیری از حوادث امنیتی کمک کنید.
- داشتن پیشوند به راحتی قابل شناسایی برای نشانه ها/کلیدهای API شما باعث می شود تا کاربران بتوانند از ابزارهای موجود که اسرار رمزگذاری شده سخت را تشخیص می دهند ، استفاده کنند و از انجام آنها جلوگیری کنند.
- هنگامی که خالق یک توکن دیگر بخشی از سازمان/شرکت نیست ، به مشتریان اطلاع دهید.
Test Drive Segment CDP امروز
اتصال منابع و مقصد خود به بخش CDP رایگان است. از یک API برای جمع آوری داده های تجزیه و تحلیل در هر سیستم عامل استفاده کنید.

Test Drive Segment CDP امروز
اتصال منابع و مقصد خود به بخش CDP رایگان است. از یک API برای جمع آوری داده های تجزیه و تحلیل در هر سیستم عامل استفاده کنید.
گزینه های باینری...
ما را در سایت گزینه های باینری دنبال می کنید
برچسب :
نویسنده : هایده حائری
بازدید : <-PostHit->
تاريخ : سه
شنبه
10 مرداد
1402 ساعت: 17:55