بررسی آسیب پذیری
1. مکانیسم و مفهوم Canonicalization در Kerberos یعنی چه؟
در Kerberos، وقتی کاربر یا سرویس قصد داره احراز هویت بشه، یک "نام اصلی" یا Principal Name (مثل user@DOMAIN.COM) به کنترلر دامین (Domain Controller یا DC) داده میشه.
اما گاهی کاربر ممکنه اینو با فرمتهای مختلف وارد کنه، مثلاً:
user
user@domain.com
DOMAIN\user
این Canonicalization یعنی استانداردسازی این نامها به یک فرمت مشخص تا Kerberos بدونه که دقیقاً کدوم حساب کاربری منظوره.
این کار توسط DC انجام میشه، مثلاً:
ورودی: DOMAIN\user
خروجی Canonicalized: user@domain.com
این مرحله مهمه چون اگر به درستی انجام نشه، ممکنه DC نتونه کاربر رو درست شناسایی کنه یا از طرف دیگه، سیستم امنیتی گول بخوره!
2. آسیبپذیریهای CVE-2025-21299 و CVE-2025-29809
حالا که Canonicalization رو گفتم ، بریم سراغ مشکل.
محققها کشف کردن که در نسخههایی از ویندوز، فرایند Canonicalization در Kerberos درست و امن انجام نمیشه.
یعنی مهاجم میتونه یک نام کاربری جعلی یا با ساختار خاص بده که در ابتدا بیخطر بهنظر میرسه،ولی بعد از Canonicalization، به یک حساب واقعی (یا دارای سطح دسترسی بالا) تبدیل بشه!
اونوقت چه اتفاقی میافته؟
مهاجم از یک ماشین لوکال، با دسترسی محدود، یه درخواست احراز هویت به DC میفرسته.
اسم کاربری یا سرویس رو جوری میسازه که بعد از Canonicalization، تبدیل به یه حساب مهم بشه.
مکانیسم Credential Guard (که مسئول جلوگیری از دسترسی به توکنها و هشهاست)، فریب میخوره.
مهاجم میتونه به توکن Kerberos یا هشهای NTLM دسترسی پیدا کنه.
از این طریق ممکنه بتونه حملهی Pass-the-Hash یا Kerberos Ticket Replay انجام بده.
پس مفهوم کلی آسیبپذیری چیه؟
وقتی Canonicalization درست انجام نشه، مهاجم میتونه هویت خودش رو جوری دستکاری کنه که Credential Guard رو دور بزنه.
و این یعنی کل مکانیزم محافظت از اعتبارنامهها (که ویندوز خیلی روش مانور میده)، بیاثر میشه.
#آکادمی_روزبه
پی نوشت از درس CISSP: آسیب پذیری این بار در خود پروتکل نیست و در پیاده سازی پروتکل بوده است
https://www.netspi.com/blog/technical-blog/adversary-simulation/cve-2025-21299-cve-2025-29809-unguarding-microsoft-credential-guard/