ماتریس تهدید DevOps فهرستی از تهدیدات امنیتی مشترک را در محیطهای توسعه و عملیات یا راهکار DevOps شناسایی میکند. این ماتریس به شما کمک میکند تا تهدیدات امنیتی محتمل را مرتب و سازماندهی کنید و بتوانید برنامهها و اقدامات امنیتی موثرتری را برای محافظت در برابر آنها اجرا کنید. این تهدیدات ممکن است شامل نفوذهای نفوذی، نقض حریم خصوصی، نقض امنیت اطلاعات، آسیبپذیریهای نرمافزاری، حملات DDoS و غیره باشند. با استفاده از ماتریس تهدید DevOps، میتوانید برنامهریزی بهتری را برای نگهداری از امنیت سیستمها و فرآیندهای DevOps خود داشته باشید و تهدیدات محتمل را با رویکردهای امنیتی مناسب مدیریت کنید.
استفاده از راهکار DevOps، که سازمانها را قادر میسازد نرمافزار را سریعتر و کارآمدتر ارائه دهند، در حال افزایش است. این رویکرد باعث میشود زمان موردنیاز برای عرضه ویژگیهای جدید نرمافزار به بازار و رفع اشکالات نسخههای قبلی آن به حداقل برسد. سازمانهای بیشتری در حال پیادهسازی سرویسهای DevOps هستند که هر کدام زیرساختهای خاص خود را دارند و بر ویژگیهای متمایزی تأکید میکنند.
با افزایش استفاده از این محیطها، مهاجمان نیز بیش از پیش علاقهمند میشوند آنها را هدف قرار دهند. چندین حمله برجسته که در یکی از محیطهای DevOps ریشه دارند، نشان میدهند که این حملات در صورت موفقیتآمیز بودن چه تأثیر قابلتوجهی میتوانند بگذارند. نمونههایی از این نوع حملات طی چند سال گذشته در ادامه آورده شده است:
- حمله به نرمافزار Orion SolarWinds. مهاجمان موفق شدند به محیط DevOps حمله کنند و بدافزاری را به یکی از بهروزرسانیهای Orion تزریق کردند که ممکن است به بیش از 17000 کاربر سرایت کرده باشد.
- نقض امنیتی Codecov. مهاجمان با موفقیت به تصاویر داکر سازمان حمله و اطلاعات اعتباری و دادههای خصوصی هزاران کاربر را سرقت کردند.
- حملات Dependency Confusion. این حملات شامل مثلاً قرار دادن بستههای مخرب PyPi در داخل رجیستری، بستههای npm، بستههای PHP و موارد دیگر است. حملات به این شکل بهوفور صورت میگیرد و ممکن است نقطه ورود مهاجمان به شبکهها و محیطهای حساس باشد.
این حوادث نشان میدهد که ایمنسازی کد پیش از پیادهسازی آن چقدر اهمیت دارد. توسعهدهندگان سعی دارند دفاع را به مراحل اولیهتر توسعه برنامه کاربردی بیاورند. علاوه بر مرحله توسعه، باید از امنیت محیطهای DevOps نیز اطمینان حاصل کرد.
مایکروسافت تحقیقات گستردهای پیرامون تکنیکهای مورداستفاده مهاجمان مخرب برای حمله به محیطهای DevOps انجام داده است. این شرکت این تکنیکها را براساس تاکتیکهای مرتبط خود دستهبندی کرده و بهصورت یک ماتریس تهدید ترسیم نموده است. هدف این مپ کمک به مدافعان برای درک بهتر چشمانداز و اقدامات احتمالی مهاجم است؛ به این ترتیب مدافعان برای دفاع در برابر هر تکنیک و محافظت از محیطهای DevOps مجهزتر خواهند بود.
ماتریس تهدید راهکار DevOps
هدف مایکروسافت از توسعه ماتریس تهدید برای راهکار DevOps، ایجاد پایگاه دانش جامعی است که مدافعان بتوانند از آن برای دفاع و پیگیری مدافعات در برابر تکنیکهای مرتبط حمله استفاده کنند. این شرکت با استفاده از چارچوب MITRE ATT&CK بهعنوان پایه، تکنیکها و Attack Vectorهای مرتبط با محیطهای DevOps را جمعآوری کرده، ماتریسی ایجاد نموده و آن را به متدهای حمله DevOps اختصاص داده است.
بیشتر بخوانید: مفهوم DevOps چیست؟ معماری و سه اصل مبنایی این رویکرد کدام است – قسمت اول
شایان ذکر است که تاکتیکهای این ماتریس را باید از منظر راهکار DevOps بررسی کرد. مثلاً تکنیکهای اجرا در ماشین مجازیای که در سیستمعامل ویندوز یا Linux اجرا میشود با سیستم اجرا در DevOps Pipeline متفاوت است. در خصوص Linux وقتی از لفظ «اجرا» استفاده میکنیم، منظورمان اجرای کد در سیستم عامل است؛ در حالی که وقتی این لفظ را در خصوص محیطهای DevOps به کار میبریم، به اجرای کد در Pipeline یا منابع DevOps اشاره داریم. مدافعان میتوانند علاوه بر استفاده از این ماتریس تهدید برای دستهبندی حملات و روشهای دفاعی مرتبط، با همکاری با Red Teamها بهطور مداوم مفروضات را بسنجند و ترفندهای بالقوه جدید حمله را بیابند. شکل پایین ماتریس تهدید DevOps را نمایش می دهد.
1. دسترسی اولیه
تاکتیک دسترسی اولیه به تکنیکهایی اشاره دارد که مهاجم ممکن است از آنها برای دسترسی به منابع DevOps، مخازن اطلاعات Pipelineها و موارد وابسته استفاده کند. ترفندهای زیر ممکن است پیششرط مراحل بعدی باشند:
احراز هویت SCM – دسترسی به مدیریت کد منبع سازمان با داشتن روش احراز هویت، که ممکن است Token دسترسی شخصی یا PAT، کلید SSH یا هرگونه اطلاعات اعتباری مجاز و در دسترس دیگر باشد. یکی از روشهای دسترسی مهاجم به این ترفند، استفاده از حمله Phishing علیه سازمان است.
احراز هویت سرویس CI/CD – مشابه احراز هویت SCM، مهاجم میتواند با استفاده از احراز هویت CI/CD به DevOps سازمان حمله کند.
مخازن اطلاعات عمومی سازمان – دسترسی به مخازن عمومی سازمان که با قابلیتهای CI/CD پیکربندی شدهاند. این مخازن بسته به پیکربندی سازمان ممکن است قابلیت راهاندازی Pipeline را بعد از ایجاد Pull Request یا PR داشته باشند.
آسیب Endpoint – مهاجم میتواند با استفاده از یکی از آسیبهای موجود از Workstation آسیبدیده توسعهدهنده استفاده کند و به این ترتیب به SCM سازمان، رجیستری یا هر منبع دیگر در دسترس توسعهدهنده، دسترسی پیدا کند.
Webhookهای پیکربندیشده – اگر سازمان Webhookی را پیکربندی کرده باشد، مهاجم میتواند با استفاده از خود SCM برای راهاندازی درخواستها در آن شبکه، از آن Webhook بهعنوان یک روش دسترسی اولیه به شبکه سازمان استفاده کند. این امر میتواند امکان دسترسی به سرویسهایی را که قرار نیست در معرض عموم قرار گیرند، یا سرویسهایی که نسخههای قدیمی و آسیبپذیر نرمافزار را داخل شبکه Private اجرا میکنند، در اختیار مهاجم قرار دهد.
بیشتر بخوانید: معنی DevOps چیست؟ بررسی 5 اقدام اساسی در تکامل آن – قسمت اول
2. اجرا
تاکتیک اجرا به ترفندهایی اشاره دارد که ممکن است مهاجم مخرب بتواند با استفاده از آنها به منابع Pipeline خود Pipeline یا منابع پیادهسازی دسترسی پیدا کرده و آنها را اجرا کند. برخی از ترفندهای این بخش حاوی توضیحاتی درباره روشهای مختلف اجرای آنها یا اصطلاحاً ترفندهای فرعی است.
اجرای Pipeline مسموم یا PPE – به ترفندی اشاره دارد که طی آن مهاجم می تواند کد را به مخزن اطلاعات یک سازمان تزریق کند که نتیجه آن اجرا شدن کد در سیستم CI/CD مخزن خواهد بود. ترفندهای فرعی مختلفی وجود دارد که میتوان با آنها به کد دسترسی پیدا کرد و آن را اجرا نمود:
PPE مستقیم یا d-PPE – در این موارد مهاجم میتواند مستقیماً فایل پیکربندی داخل مخزن اطلاعات را تغییر دهد. از آنجایی که PR جدید Pipeline را راهاندازی میکند و این Pipeline طبق فایل پیکربندی اجرا میشود، مهاجم میتواند دستورها مخرب را به فایل پیکربندی تزریق کند و این دستورها در Pipeline اجرا خواهند شد.
PPE غیر مستقیم یا i-PPE – در این موارد مهاجم نمیتواند مستقیماً فایلهای پیکربندی را تغییر دهد، یا این تغییرات در هنگام راهاندازی لحاظ نمیشوند. در این موارد، مهاجم میتواند اسکریپتهایی را که Pipeline برای اجرای کد استفاده میکند، همچون Make-fileها، Scriptهای آزمایشی، Scriptهای ایجاد و… را آلوده کند.
Public PPE – مواردی که در آنها Pipeline را پروژه منبعباز راهاندازی میکند. در این موارد، مهاجم میتواند از d-PPE یا i-PPE در مخزن اطلاعات Public استفاده و Pipeline را آلوده کند.
دستکاری موارد وابسته – ترفندی است که مهاجم با استفاده از آن میتواند با تزریق کد مخرب به موارد وابسته به مخزن اطلاعات، کد را در محیط DevOps یا محیط تولید اجرا کند. بنابراین، هرگاه آن مورد وابسته دانلود شود، کد مخرب اجرا خواهد شد. برخی از ترفندهای فرعی که مهاجمان از آنها برای اجرای کد استفاده میکنند عبارتند از:
ایجاد سردرگرمی در خصوص مورد وابسته Public – ترفندی که مهاجم با بهکارگیری آن Packageهای مخرب Public را با همان نام Packageهای Private منتشر میکند. در این مورد، چون وقتی از طریق مکانیسم کنترل Package به دنبال Package میگردیم، معمولاً ابتدا آن را در Registryهای Public نشان میدهد، Package مخرب دانلود میشود.
ربودن Public Package (“Repo-Jacking”) ربودن Public Package با در دست گرفتن کنترل حساب دارنده آن؛ مثلاً با Exploit قابلیت تغییر نام کاربر GitHub.
Typosquatting یا هجوم تایپی– انتشار Packageهای مخرب با نام مشابه Packageهای Public شناختهشده. به این ترتیب مهاجم میتواند در بین کاربران سردرگرمی ایجاد کند که موجب میشود آنها بسته مخرب را به جای بسته مورد نظر خود دانلود کنند.
به خطر افتادن منابع DevOps – Pipelineها در اصل مجموعهای از منابع محاسباتی هستند که Agentهای CI/CD را همراه با سایر نرمافزارها اجرا میکنند. مهاجم میتواند این منابع را با Exploit کردن یکی از نقاط آسیبپذیر سیستم عامل، کد Agent، سایر نرمافزارهای نصب شده در ماشینهای مجازی یا سایر تجهیزات موجود در شبکه هدف قرار دهد تا به Pipeline دسترسی پیدا کند.
کنترل رجیستری مشترک- مهاجم میتواند کنترل رجیستری مورد استفاده سازمان را در دست گیرد و به دنبال آن، ماشینهای مجازی Pipeline یا ماشینهای مجازی تولید تصاویر یا Packageهای مخربی نمایش دهند.