
دليل حل بديل لثغرة إدارة الامتيازات CVE-2022-41923 في إضافة Grails Spring Security Core، يوفر تعريفات مرشحات مصححة لتكوينات Annotation وInterceptUrlMap وRequestmap.
يمكن أن تؤدي الثغرة الأمنية CVE-2022-41923 الموجودة في إضافة Grails Spring Security Core (GSSC) غير المُصحَّحة إلى إدارة غير صحيحة للامتيازات. يصف هذا المستودع كيفية حل المشكلة بديلًا.
إذا كنت تستخدم نسخة غير مُصحَّحة من الإضافة، نوصي بشدة بالترقية إلى نسخة مُصحَّحة. إذا لم تكن قادرًا على الترقية فورًا، نشجعك على تطبيق الحل البديل الموضح في هذا المستند. هذا مهم بشكل خاص إذا كنت تستخدم إضافة GSSC الإصدار 2.x، حيث لا يتوفر تصحيح للإصدار 2.x.
لتكوين الحل البديل بشكل صحيح، تحتاج إلى معرفة:
إصدار إضافة GSSC الذي يستخدمه تطبيقك. ابحث عن رقم الإصدار في ملف build.gradle الخاص بك.
(بالنسبة لـ Grails 2.x، ابحث في ملف BuildConfig.groovy).
نوع تكوين الأمان الذي تستخدمه: أي قيمة التكوين لـ
grails.plugin.springsecurity.securityConfigType
| قيمة التكوين | مرجع التوثيق |
|---|---|
Annotation (افتراضي) | Secured Annotations |
InterceptUrlMap | Static Map |
Requestmap | Requestmap Instances |
ملاحظة: في جميع التعليمات والتكوين أدناه، يتم استخدام الحزمة demo.
قم بتغيير هذه الحزمة بما يناسب تطبيقك والمكان الذي تضع فيه ملفات المصدر المُصحَّحة.
حدد فئة الحل البديل التي تحتاجها بناءً على نوع تكوين الأمان لديك.
| قيمة التكوين | فئة الحل البديل |
|---|---|
Annotation | PatchedAnnotationFilterInvocationDefinition |
InterceptUrlMap | PatchedInterceptUrlMapFilterInvocationDefinition |
Requestmap |
انسخ ملف المصدر المقابل إلى شجرة المصادر الخاصة بك src/main/groovy.
أخيرًا، أضف التكوين التالي إلى ملف التكوين application.groovy الخاص بك،
واستبدل PatchedAnnotationFilterInvocationDefinition بفئة الحل البديل المطلوبة.
grails.plugin.springsecurity.objectDefinitionSourceBeanClass = 'demo.PatchedAnnotationFilterInvocationDefinition'
كما هو مذكور أعلاه، حدد فئة الحل البديل التي تحتاجها بناءً على نوع تكوين الأمان لديك.
انسخ ملف المصدر المقابل إلى شجرة المصادر الخاصة بك src/groovy.
ثم قم بتعديل تكوين الحبة (Bean) بناءً على نوع تكوين الأمان لتطبيقك.
إذا كنت تستخدم نوع تكوين الأمان Annotation، قم بتعديل الملف grails-app/conf/spring/resources.groovy ليشمل:
import demo.PatchedAnnotationFilterInvocationDefinition
import grails.plugin.springsecurity.SpringSecurityUtils
beans = {
def conf = SpringSecurityUtils.securityConfig
objectDefinitionSource(demo.PatchedAnnotationFilterInvocationDefinition) {
application = ref('grailsApplication')
grailsUrlConverter = ref('grailsUrlConverter')
responseMimeTypesApi = ref('responseMimeTypesApi')
boolean lowercase = conf.controllerAnnotations.lowercase
if (conf.rejectIfNoRule instanceof Boolean) {
rejectIfNoRule = conf.rejectIfNoRule
}
}
// ... التكوين الحالي للحبوب ...
}
إذا كنت تستخدم نوع تكوين الأمان InterceptUrlMap، قم بتعديل الملف grails-app/conf/spring/resources.groovy ليشمل:
import demo.PatchedInterceptUrlMapFilterInvocationDefinition
import grails.plugin.springsecurity.SpringSecurityUtils
beans = {
def conf = SpringSecurityUtils.securityConfig
objectDefinitionSource(demo.PatchedInterceptUrlMapFilterInvocationDefinition) {
if (conf.rejectIfNoRule instanceof Boolean) {
rejectIfNoRule = conf.rejectIfNoRule
}
}
// ... التكوين الحالي للحبوب ...
}
إذا كنت تستخدم نوع تكوين الأمان Requestmap، قم بتعديل الملف grails-app/conf/spring/resources.groovy ليشمل:
import demo.PatchedRequestmapFilterInvocationDefinition
import grails.plugin.springsecurity.SpringSecurityUtils
beans = {
def conf = SpringSecurityUtils.securityConfig
objectDefinitionSource(demo.PatchedRequestmapFilterInvocationDefinition) {
if (conf.rejectIfNoRule instanceof Boolean) {
rejectIfNoRule = conf.rejectIfNoRule
}
}
// ... التكوين الحالي للحبوب ...
}
لمزيد من المعلومات حول هذه الثغرة الأمنية، يرجى الاطلاع على تدوينة مدونة Grails.
يمكن توجيه المناقشات والأسئلة إلى العدد على GitHub الخاص بإضافة Grails Spring Security Core هذه.
PatchedRequestmapFilterInvocationDefinition |