Discourse is an open source discussion platform. Prior to versions 2025.12.2, 2026.1.1, and 2026.2.0, SQL injection in PM tag filtering (`list_private_messages_tag`) allows bypassing tag filter conditions, potentially disclosing unauthorized private message metadata. Versions 2025.12.2, 2026.1.1, and 2026.2.0 patch the issue. No known workarounds are available.
A SQL injection vulnerability in Discourse's private message tag filtering allows authenticated attackers to bypass tag filters and access unauthorized private message metadata. The vulnerability affects versions prior to 2025.12.2, 2026.1.1, and 2026.2.0. While no public exploit exists, the medium CVSS score (6.5) and information disclosure nature pose moderate risk to organizations using Discourse for internal communications.
Immediate Actions:
1. Identify all Discourse instances in your environment and document their versions
2. Restrict access to private messaging features to trusted users only
3. Review audit logs for suspicious tag filtering queries or unusual private message access patterns
4. Implement database query monitoring to detect SQL injection attempts
Patching Guidance:
1. Upgrade immediately to Discourse versions 2025.12.2, 2026.1.1, or 2026.2.0 or later
2. Test patches in non-production environments before deployment
3. Schedule maintenance windows for production upgrades
Compensating Controls (if immediate patching not possible):
1. Implement database-level access controls to restrict user permissions
2. Enable SQL query logging and monitoring for anomalies
3. Disable private messaging features if not critical to operations
4. Implement network segmentation to limit Discourse access
Detection Rules:
1. Monitor for SQL syntax characters in tag filter parameters (quotes, semicolons, UNION keywords)
2. Alert on database queries containing 'list_private_messages_tag' with unusual WHERE clauses
3. Track failed authentication attempts followed by private message access
4. Monitor for bulk private message metadata queries from single users
الإجراءات الفورية:
1. حدد جميع مثيلات Discourse في بيئتك وقم بتوثيق إصداراتها
2. قيد الوصول إلى ميزات المراسلة الخاصة للمستخدمين الموثوقين فقط
3. راجع سجلات التدقيق للاستعلامات المريبة لتصفية العلامات أو أنماط الوصول غير المعتادة للرسائل الخاصة
4. طبق مراقبة استعلامات قاعدة البيانات للكشف عن محاولات حقن SQL
إرشادات التصحيح:
1. قم بالترقية فوراً إلى إصدارات Discourse 2025.12.2 أو 2026.1.1 أو 2026.2.0 أو أحدث
2. اختبر التصحيحات في بيئات غير الإنتاج قبل النشر
3. جدول نوافذ الصيانة لترقيات الإنتاج
الضوابط البديلة (إذا لم يكن التصحيح الفوري ممكناً):
1. طبق ضوابط الوصول على مستوى قاعدة البيانات لتقييد أذونات المستخدم
2. فعّل تسجيل استعلامات SQL ومراقبة الشذوذ
3. عطّل ميزات المراسلة الخاصة إذا لم تكن حرجة للعمليات
4. طبق تقسيم الشبكة لتحديد وصول Discourse
قواعد الكشف:
1. راقب أحرف بناء جملة SQL في معاملات مرشح العلامات (علامات الاقتباس والفواصل المنقوطة وكلمات UNION)
2. أصدر تنبيهات على استعلامات قاعدة البيانات التي تحتوي على 'list_private_messages_tag' مع شروط WHERE غير المعتادة
3. تتبع محاولات المصادقة الفاشلة متبوعة بوصول الرسائل الخاصة
4. راقب استعلامات بيانات وصفية للرسائل الخاصة بكميات كبيرة من مستخدمين واحدين