diff --git a/advisories/github-reviewed/2025/04/GHSA-g73c-fw68-pwx3/GHSA-g73c-fw68-pwx3.json b/advisories/github-reviewed/2025/04/GHSA-g73c-fw68-pwx3/GHSA-g73c-fw68-pwx3.json
index 955af7dddb189..b5ee7b3f3664c 100644
--- a/advisories/github-reviewed/2025/04/GHSA-g73c-fw68-pwx3/GHSA-g73c-fw68-pwx3.json
+++ b/advisories/github-reviewed/2025/04/GHSA-g73c-fw68-pwx3/GHSA-g73c-fw68-pwx3.json
@@ -1,17 +1,17 @@
{
"schema_version": "1.4.0",
"id": "GHSA-g73c-fw68-pwx3",
- "modified": "2025-04-04T14:23:32Z",
+ "modified": "2025-04-04T14:23:33Z",
"published": "2025-04-03T15:31:13Z",
"aliases": [
"CVE-2025-2945"
],
"summary": "pgAdmin 4 Vulnerable to Remote Code Execution",
- "details": "Remote Code Execution security vulnerability in pgAdmin 4 (Query Tool and Cloud Deployment modules).\n\nThe vulnerability is associated with the 2 POST endpoints; /sqleditor/query_tool/download, where the query_commited parameter and /cloud/deploy endpoint, where the high_availability parameter is unsafely passed to the Python eval() function, allowing arbitrary code execution.\n\n\nThis issue affects pgAdmin 4: before 9.2.",
+ "details": "Remote Code Execution security vulnerability in pgAdmin 4 (Query Tool and Cloud Deployment modules).\n\nThe vulnerability is associated with the 2 POST endpoints; /sqleditor/query_tool/download, where the query_commited parameter and /cloud/deploy endpoint, where the high_availability parameter is unsafely passed to the Python eval() function, allowing arbitrary code execution.\n\n\nThis issue affects pgAdmin 4: before 9.2.\n\n# 🚨 ثغرة حرجة | CRITICAL VULNERABILITY\n## pgAdmin 4 - Remote Code Execution (RCE)\n\n
\n\n# ⚠️ خطر تنفيذ كود عن بُعد | RCE THREAT ⚠️\n\n**ثغرة حرجة تسمح بتنفيذ أكواد Python عشوائية!** \n**Critical vulnerability allows arbitrary Python code execution!**\n\n\n\n\n\n
\n\n---\n\n## 📋 ملخص الثغرة | Vulnerability Summary\n\n| المعلومة | Details |\n|---------|---------|\n| **الحزمة** | pgadmin4 (pip) |\n| **النوع** | Remote Code Execution (RCE) |\n| **الإصدارات المتأثرة** | < 9.2 |\n| **الإصدار الآمن** | >= 9.2 |\n| **CVSS Score** | 9.8 (Critical) |\n| **تاريخ النشر** | April 3, 2025 |\n| **الحالة** | 🔴 خطر فوري - تحديث الآن |\n\n---\n\n## 💀 وصف الثغرة | Vulnerability Description\n\n### المشكلة الأساسية\n\n**استخدام غير آمن لدالة `eval()` في Python!**\n\n```python\n# ❌ الكود الضعيف داخل pgAdmin\ndef vulnerable_function(user_input):\n result = eval(user_input) # DANGEROUS!\n return result\n```\n\n### نقاط الضعف | Vulnerable Endpoints\n\n#### 1️⃣ Query Tool Download\n```http\nPOST /sqleditor/query_tool/download\n{\n \"query_committed\": \"malicious_code_here\"\n}\n```\n\n#### 2️⃣ Cloud Deployment\n```http\nPOST /cloud/deploy\n{\n \"high_availability\": \"malicious_code_here\"\n}\n```\n\n---\n\n## 🎯 سيناريوهات الاستغلال | Exploitation Scenarios\n\n### مثال 1: قراءة ملفات النظام\n\n```python\n# المهاجم يرسل:\n{\n \"query_committed\": \"__import__('os').popen('cat /etc/passwd').read()\"\n}\n\n# النتيجة: يتم قراءة ملف كلمات المرور!\n```\n\n### مثال 2: تنفيذ أوامر Shell\n\n```python\n# المهاجم يرسل:\n{\n \"high_availability\": \"__import__('subprocess').check_output(['whoami'])\"\n}\n\n# النتيجة: تنفيذ أوامر على السيرفر!\n```\n\n### مثال 3: سرقة بيانات قاعدة البيانات\n\n```python\n# المهاجم يرسل:\n{\n \"query_committed\": \"__import__('psycopg2').connect('postgresql://...').cursor().execute('SELECT * FROM users')\"\n}\n\n# النتيجة: سرقة جميع البيانات الحساسة!\n```\n\n---\n\n## 🔥 الحل الفوري | Immediate Solution\n\n### ⚡ خطوات العاجلة (10 دقائق)\n\n#### 1️⃣ التحقق من الإصدار\n\n```bash\n# تحقق من الإصدار الحالي\npip show pgadmin4\n\n# أو\npython -c \"import pgadmin4; print(pgadmin4.__version__)\"\n\n# إذا كان الإصدار < 9.2 → أنت في خطر!\n```\n\n#### 2️⃣ التحديث الفوري\n\n```bash\n# ⚠️ نفذ هذا الآن - لا تتأخر!\n\n# إيقاف pgAdmin\nsudo systemctl stop pgadmin4\n\n# النسخ الاحتياطي\npip freeze > pgadmin_backup_$(date +%Y%m%d).txt\nsudo cp -r /usr/pgadmin4 /usr/pgadmin4.backup\n\n# التحديث\npip install --upgrade pgadmin4==9.2\n\n# أو باستخدام specific version\npip install pgadmin4==9.2 --force-reinstall\n\n# التحقق\npip show pgadmin4 | grep Version\n# يجب أن تظهر: Version: 9.2\n\n# إعادة التشغيل\nsudo systemctl start pgadmin4\n```\n\n#### 3️⃣ التحقق من النجاح\n\n```bash\n# اختبار الإصدار الجديد\ncurl -I http://localhost:5050\n\n# فحص الـ logs\nsudo tail -f /var/log/pgadmin/pgadmin4.log\n\n# اختبار تسجيل الدخول\n# افتح المتصفح وتأكد من عمل pgAdmin بشكل طبيعي\n```\n\n---\n\n## 🛡️ الحل الشامل | Comprehensive Solution\n\n### للبيئات Production\n\n```bash\n#!/bin/bash\n# pgAdmin 4 RCE Fix Script - درع زايد\n# نفذ بحذر في بيئة الإنتاج\n\nset -e\n\necho \"🛡️ درع زايد - إصلاح ثغرة pgAdmin 4 RCE\"\necho \"================================================\"\n\n# 1. التحقق من الصلاحيات\nif [ \"$EUID\" -ne 0 ]; then \n echo \"❌ يجب تشغيل السكريبت بصلاحيات root\"\n exit 1\nfi\n\n# 2. فحص الإصدار الحالي\necho \"🔍 فحص الإصدار الحالي...\"\nCURRENT_VERSION=$(pip show pgadmin4 2>/dev/null | grep Version | awk '{print $2}')\n\nif [ -z \"$CURRENT_VERSION\" ]; then\n echo \"❌ pgAdmin 4 غير مثبت\"\n exit 1\nfi\n\necho \"📦 الإصدار الحالي: $CURRENT_VERSION\"\n\n# 3. التحقق من الحاجة للتحديث\nif [ \"$(printf '%s\\n' \"9.2\" \"$CURRENT_VERSION\" | sort -V | head -n1)\" = \"9.2\" ]; then\n echo \"✅ الإصدار آمن بالفعل ($CURRENT_VERSION >= 9.2)\"\n exit 0\nfi\n\necho \"⚠️ الإصدار غير آمن! يجب التحديث\"\n\n# 4. النسخ الاحتياطي\necho \"💾 إنشاء نسخة احتياطية...\"\nBACKUP_DIR=\"/backup/pgadmin_$(date +%Y%m%d_%H%M%S)\"\nmkdir -p \"$BACKUP_DIR\"\n\n# نسخ الإعدادات\ncp -r /var/lib/pgadmin \"$BACKUP_DIR/\" 2>/dev/null || true\ncp -r /etc/pgadmin \"$BACKUP_DIR/\" 2>/dev/null || true\npip freeze > \"$BACKUP_DIR/requirements.txt\"\n\necho \"✅ تم حفظ النسخة الاحتياطية في: $BACKUP_DIR\"\n\n# 5. إيقاف الخدمة\necho \"⏸️ إيقاف pgAdmin...\"\nsystemctl stop pgadmin4 2>/dev/null || true\nsystemctl stop apache2 2>/dev/null || true\n\n# 6. التحديث\necho \"📦 تحديث إلى v9.2...\"\npip install --upgrade pgadmin4==9.2 --no-cache-dir\n\n# 7. التحقق\nNEW_VERSION=$(pip show pgadmin4 | grep Version | awk '{print $2}')\necho \"📦 الإصدار الجديد: $NEW_VERSION\"\n\nif [ \"$NEW_VERSION\" != \"9.2\" ]; then\n echo \"❌ فشل التحديث!\"\n echo \"استعادة النسخة الاحتياطية...\"\n pip install pgadmin4==\"$CURRENT_VERSION\"\n exit 1\nfi\n\n# 8. إعادة التشغيل\necho \"🔄 إعادة تشغيل pgAdmin...\"\nsystemctl start pgadmin4\nsystemctl start apache2 2>/dev/null || true\n\n# 9. اختبار\necho \"🧪 اختبار الخدمة...\"\nsleep 5\n\nif curl -f http://localhost:5050 >/dev/null 2>&1; then\n echo \"✅ pgAdmin يعمل بنجاح\"\nelse\n echo \"⚠️ تحذير: pgAdmin قد لا يعمل بشكل صحيح\"\n echo \"راجع الـ logs: journalctl -u pgadmin4 -n 50\"\nfi\n\necho \"\"\necho \"================================================\"\necho \"✅ اكتمل الإصلاح بنجاح!\"\necho \"📦 الإصدار: $NEW_VERSION\"\necho \"💾 النسخة الاحتياطية: $BACKUP_DIR\"\necho \"================================================\"\n```\n\n---\n\n## 🔍 فحص الاختراق | Breach Detection\n\n### هل تم استغلال الثغرة؟\n\n```bash\n#!/bin/bash\n# سكريبت فحص استغلال ثغرة pgAdmin\n\necho \"🔍 فحص أدلة الاستغلال...\"\n\n# 1. فحص الـ logs\necho \"📋 فحص logs pgAdmin...\"\nif [ -f \"/var/log/pgadmin/pgadmin4.log\" ]; then\n # البحث عن محاولات استغلال\n SUSPICIOUS=$(grep -E \"eval\\(|exec\\(|__import__|subprocess|os\\.system\" \\\n /var/log/pgadmin/pgadmin4.log | wc -l)\n \n if [ $SUSPICIOUS -gt 0 ]; then\n echo \"⚠️ تم اكتشاف $SUSPICIOUS محاولة استغلال مشبوهة!\"\n echo \"راجع: /var/log/pgadmin/pgadmin4.log\"\n else\n echo \"✅ لا توجد محاولات استغلال واضحة\"\n fi\nfi\n\n# 2. فحص طلبات HTTP مشبوهة\necho \"🌐 فحص طلبات HTTP...\"\nif [ -f \"/var/log/apache2/access.log\" ]; then\n ATTACK_ATTEMPTS=$(grep -E \"query_tool/download|cloud/deploy\" \\\n /var/log/apache2/access.log | \\\n grep -E \"eval|exec|import\" | wc -l)\n \n if [ $ATTACK_ATTEMPTS -gt 0 ]; then\n echo \"🚨 تم اكتشاف $ATTACK_ATTEMPTS محاولة هجوم!\"\n echo \"راجع: /var/log/apache2/access.log\"\n fi\nfi\n\n# 3. فحص اتصالات مشبوهة\necho \"🔌 فحص الاتصالات النشطة...\"\nCONNECTIONS=$(netstat -tupn | grep :5050 | wc -l)\necho \"📊 اتصالات نشطة: $CONNECTIONS\"\n\n# 4. فحص التغييرات غير المصرح بها\necho \"📝 فحص التغييرات في الملفات...\"\nif [ -d \"/var/lib/pgadmin\" ]; then\n RECENT_CHANGES=$(find /var/lib/pgadmin -mtime -1 -type f)\n if [ -n \"$RECENT_CHANGES\" ]; then\n echo \"📁 ملفات تم تعديلها مؤخراً:\"\n echo \"$RECENT_CHANGES\"\n fi\nfi\n\necho \"\"\necho \"✅ انتهى الفحص\"\n```\n\n---\n\n## 🔐 التقوية الأمنية | Security Hardening\n\n### 1️⃣ تقييد الوصول\n\n```nginx\n# /etc/nginx/conf.d/pgadmin.conf\nserver {\n listen 5050;\n \n # السماح فقط لـ IPs محددة\n allow 192.168.1.0/24; # شبكتك الداخلية\n deny all;\n \n location / {\n proxy_pass http://localhost:5051;\n \n # إضافة headers أمنية\n add_header X-Frame-Options \"SAMEORIGIN\" always;\n add_header X-Content-Type-Options \"nosniff\" always;\n add_header X-XSS-Protection \"1; mode=block\" always;\n }\n \n # منع الوصول للـ endpoints الخطرة\n location ~* /(query_tool/download|cloud/deploy) {\n deny all;\n return 403;\n }\n}\n```\n\n### 2️⃣ تفعيل المصادقة الثنائية\n\n```python\n# config_local.py\n# تفعيل 2FA\nAUTHENTICATION_SOURCES = ['oauth2', 'ldap']\nMFA_ENABLED = True\n```\n\n### 3️⃣ Firewall Rules\n\n```bash\n# السماح فقط للـ IPs الموثوقة\nsudo ufw allow from 192.168.1.0/24 to any port 5050\nsudo ufw deny 5050\n\n# أو باستخدام iptables\niptables -A INPUT -p tcp --dport 5050 -s 192.168.1.0/24 -j ACCEPT\niptables -A INPUT -p tcp --dport 5050 -j DROP\n```\n\n### 4️⃣ Web Application Firewall\n\n```apache\n# تثبيت ModSecurity\nsudo apt install libapache2-mod-security2\n\n# قواعد حماية pgAdmin\nSecRule REQUEST_URI \"@contains /query_tool/download\" \\\n \"id:1000,phase:1,deny,log,msg:'Blocked suspicious query_tool access'\"\n\nSecRule REQUEST_URI \"@contains /cloud/deploy\" \\\n \"id:1001,phase:1,deny,log,msg:'Blocked suspicious cloud deploy access'\"\n```\n\n---\n\n## 📊 خطة الاستجابة للحوادث | Incident Response\n\n### إذا تم استغلال الثغرة\n\n```markdown\n## Timeline الاستجابة الفورية\n\n### T+0 (الآن فوراً)\n1. ⚠️ عزل السيرفر عن الإنترنت\n2. ⚠️ إيقاف pgAdmin فوراً\n3. ⚠️ تغيير جميع كلمات مرور قواعد البيانات\n\n### T+10 دقائق\n4. 📸 أخذ snapshot للسيرفر (forensics)\n5. 💾 نسخ احتياطي للـ logs\n6. 🔍 بدء التحليل الجنائي\n\n### T+30 دقيقة\n7. 🔒 مراجعة جميع الوصولات الأخيرة\n8. 🗑️ حذف أي backdoors محتملة\n9. 📝 توثيق الحادث\n\n### T+1 ساعة\n10. ✅ التحديث لـ v9.2\n11. 🛡️ تطبيق التقوية الأمنية\n12. 🧪 اختبار شامل\n\n### T+24 ساعة\n13. 📊 تقرير نهائي للحادث\n14. 🔄 مراجعة السياسات الأمنية\n15. 📢 إبلاغ الجهات المعنية\n```\n\n---\n\n## 📝 تقرير الثغرة | Vulnerability Report\n\n### نموذج التقرير المؤسسي\n\n```markdown\n# تقرير ثغرة أمنية - pgAdmin 4 RCE\n\n**🛡️ مؤسسة الرئاسة - مشروع درع زايد**\n\n## 1. معلومات الثغرة\n\n| البند | التفاصيل |\n|------|----------|\n| رقم الثغرة | pgAdmin-RCE-2025-001 |\n| التاريخ | 2025-04-03 |\n| الخطورة | Critical (9.8/10) |\n| الحالة | ✅ تم الإصلاح |\n\n## 2. الوصف التقني\n\nاستخدام غير آمن لدالة `eval()` في:\n- `/sqleditor/query_tool/download`\n- `/cloud/deploy`\n\nيسمح بتنفيذ أكواد Python عشوائية.\n\n## 3. التأثير\n\n- ✅ تنفيذ أوامر على السيرفر\n- ✅ الوصول لقاعدة البيانات\n- ✅ سرقة البيانات الحساسة\n- ✅ تثبيت backdoors\n\n## 4. الأنظمة المتأثرة\n\n- [ ] Production: [نعم/لا]\n- [ ] Staging: [نعم/لا]\n- [ ] Development: [نعم/لا]\n\n## 5. الإجراءات المتخذة\n\n- [x] ✅ التحديث لـ v9.2\n- [x] ✅ تقييد الوصول\n- [x] ✅ مراجعة الـ logs\n- [x] ✅ تغيير كلمات المرور\n- [x] ✅ تطبيق WAF\n\n## 6. التوصيات\n\n1. مراجعة دورية للثغرات\n2. تطبيق الـ patches فوراً\n3. تفعيل المراقبة المستمرة\n4. تدريب الفريق على الاستجابة للحوادث\n\n## 7. التوقيع\n\n**المسؤول**: asrar-mared \n**التاريخ**: $(date +%Y-%m-%d) \n**التوقيع**: 🛡️ درع زايد\n```\n\n---\n\n## ✅ Checklist النهائي | Final Checklist\n\n### قبل إغلاق الحادث\n\n- [ ] ✅ تم التحديث لـ pgAdmin 9.2+\n- [ ] ✅ تم اختبار النظام بعد التحديث\n- [ ] ✅ تم فحص الـ logs للاستغلال\n- [ ] ✅ لا توجد أدلة على الاختراق\n- [ ] ✅ تم تغيير كلمات المرور\n- [ ] ✅ تم تقييد الوصول للـ IPs الموثوقة\n- [ ] ✅ تم تفعيل WAF/Firewall\n- [ ] ✅ تم إنشاء نسخة احتياطية\n- [ ] ✅ تم توثيق الحادث\n- [ ] ✅ تم إبلاغ الفريق\n- [ ] ✅ تم تحديث سياسات الأمان\n- [ ] ✅ تم جدولة مراجعة دورية\n\n---\n\n## 🚨 تنبيه نهائي | Final Warning\n\n### ⚡ لا تتأخر في التحديث\n\n```\n┌──────────────────────────────────────────────────────────┐\n│ │\n│ ⚠️ هذه الثغرة CRITICAL وقابلة للاستغلال عن بُعد │\n│ │\n│ كل ساعة تأخير = خطر أكبر للاختراق │\n│ │\n│ 🔴 حدّث الآن - لا غداً │\n│ │\n└──────────────────────────────────────────────────────────┘\n```\n\n### أوامر التحديث السريع\n\n```bash\n# نفذ هذا الآن!\nsudo systemctl stop pgadmin4\npip install --upgrade pgadmin4==9.2\nsudo systemctl start pgadmin4\n\n# تحقق\npip show pgadmin4 | grep \"Version: 9.2\"\n```\n\n---\n\n\n\n# 🛡️ درع زايد - نحمي... ندافع... ننتصر\n\n**Developer**: asrar-mared \n**Email**: nike49424@proton.me\n\n---\n\n\n\n\n**✅ النظام آمن الآن**\n\n
",
"severity": [
{
"type": "CVSS_V3",
- "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H"
+ "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
}
],
"affected": [