
CVE-2021-43287 CVE-2021-43288 CVE-2021-43289 CVE-2021-43290
Autor / Author: Higor Farias — PRIDE Security
⚠️ AVISO LEGAL / LEGAL DISCLAIMER
[PT] تم إنشاء هذا المحتوى حصريًا لأغراض تعليمية والبحث في مجال الأمن السيبراني الهجومي. يُسمح باستخدامه فقط في البيئات الخاضعة للإشراف وبموافقة صريحة. يتحمل المستخدم المسؤولية الكاملة عن أي استخدام غير مصرح به.
[EN] تم إنتاج هذا المحتوى حصريًا لأغراض تعليمية وبحثية في مجال الأمن الهجومي المصرح به. يُستخدم فقط في البيئات الخاضعة للرقابة وبموافقة كتابية صريحة. يقع على عاتق المستخدم وحده مسؤولية أي إساءة استخدام.
[PT] يُعد GoCD منصة CI/CD التي تحافظ عليها ThoughtWorks. في الإصدارات السابقة لـ 21.3.0، حدد باحثو SonarSource سلسلة من الثغرات الأمنية القابلة للاستغلال بدون أي مصادقة. يوضح السكربتان الموجودان في هذا المستودع:
gocd_rce_noauth.py — استغلال كامل للسلسلة وصولاً إلى تنفيذ الأوامر عن بُعد (RCE)، بدون بيانات اعتماد.gocd_urldns.py — كشف خارج النطاق (out-of-band) لفك تسلسل كود Java عبر سلسلة الأدوات URLDNS واستدعاء DNS (يتطلب بيانات اعتماد صالحة لعرض الوكلاء المسجلين).[EN] يُعد GoCD منصة CI/CD التي تحافظ عليها ThoughtWorks. في الإصدارات السابقة لـ 21.3.0، حدد باحثو SonarSource سلسلة من الثغرات الأمنية القابلة للاستغلال بدون أي مصادقة. يوضح السكربتان الموجودان في هذا المستودع:
gocd_rce_noauth.py — استغلال كامل للسلسلة وصولاً إلى تنفيذ الأوامر عن بُعد (RCE)، بدون بيانات اعتماد.gocd_urldns.py — كشف خارج النطاق (out-of-band) لفك تسلسل كود Java عبر سلسلة الأدوات URLDNS واستدعاء DNS (يتطلب بيانات اعتماد صالحة لعرض الوكلاء المسجلين).[PT] يحتل GoCD مركزًا محوريًا في سلسلة تسليم البرمجيات داخل المؤسسة: حيث يقوم بتنسيق عمليات البناء، والاختبارات، وتوليد حزم الناتج، ونشر التطبيقات في بيئة الإنتاج. ومن خلال اختراق خادم GoCD عبر تنفيذ الأوامر عن بُعد (RCE) (كما هو موضح بواسطة gocd_rce_noauth.py)، يحصل المهاجم على تحكم كامل في جميع مراحل هذه العملية — مما يتيح له حقن أبواب خلفية في الملفات التنفيذية، أو التلاعب بحزم الناتج، أو سرقة الشفرة المصدرية وبيانات الاعتماد قبل وصول أي منتج إلى المستخدم النهائي. يشبه هذا السيناريو هجوم SolarWinds (2020)، حيث أدى الوصول إلى خطوط بناء البرمجيات إلى توزيع برمجيات خبيثة على آلاف العملاء.
[EN] يحتل GoCD مركزًا محوريًا في سلسلة تسليم البرمجيات داخل المؤسسة: حيث يقوم بتنسيق عمليات البناء، والاختبارات، وتوليد حزم الناتج، ونشر التطبيقات في بيئة الإنتاج. ومن خلال اختراق خادم GoCD عبر تنفيذ الأوامر عن بُعد (RCE) (كما هو موضح بواسطة gocd_rce_noauth.py)، يحصل المهاجم على تحكم كامل في جميع مراحل هذه العملية — مما يتيح له حقن أبواب خلفية في الملفات التنفيذية، أو التلاعب بحزم الناتج، أو سرقة الشفرة المصدرية وبيانات الاعتماد قبل وصول أي منتج إلى المستخدم النهائي. يشبه هذا السيناريو هجوم SolarWinds (2020)، حيث أدى الوصول إلى خطوط بناء البرمجيات إلى توزيع برمجيات خبيثة على آلاف العملاء.
flowchart TD
ATK(["🕵️ Atacante / Attacker\n(não autenticado / unauthenticated)"])
subgraph EXPLOIT ["Exploração / Exploitation"]
E1["CVE-2021-43287\nLeitura do cruise_config\n(tokenGenerationKey + agentAutoRegisterKey)"]
E2["Path Traversal\nLeitura de /etc/go/jetty.xml\ne /proc/self/environ"]
E3["Registro de agente falso\nFake agent registration"]
E4["Desserialização Java\n(AspectJWeaver gadget chains)\nSobrescreve jetty.xml + restart"]
E5["💥 RCE no servidor GoCD\nRCE on GoCD server"]
E1 --> E2 --> E3 --> E4 --> E5
end
subgraph PIPELINE ["Pipeline CI/CD comprometido / Compromised CI/CD Pipeline"]
P1["📦 Build de artefatos\nBinary/artifact build"]
P2["🧪 Execução de testes\nTest execution"]
P3["📤 Publicação de pacotes\nPackage publication\n(npm, PyPI, Docker Hub...)"]
P4["🚀 Deploy em produção\nProduction deployment"]
P1 --> P2 --> P3 --> P4
end
subgraph IMPACT ["Impacto / Impact"]
I1["🔑 Vazamento de credenciais\nCredential leak\n(tokens, SSH keys, API keys)"]
I2["🦠 Backdoor em artefatos\nBackdoor in build artifacts"]
I3["📂 Exfiltração de código-fonte\nSource code exfiltration"]
I4["☠️ Ataque à cadeia de suprimentos\nSupply chain attack\n(usuários finais afetados / end users impacted)"]
I1 & I2 & I3 --> I4
end
ATK --> EXPLOIT
E5 -->|"Controle total do runner\nFull runner control"| PIPELINE
P1 -->|"Artefatos envenenados\nPoisoned artifacts"| I2
P3 -->|"Pacotes maliciosos\nMalicious packages"| I4
P4 -->|"Produção comprometida\nCompromised production"| I4
E5 -->|"Leitura de secrets\nSecrets read"| I1
E5 -->|"Acesso ao repositório\nRepository access"| I3
| CVE | النوع / Type | CVSS 3.1 | CWE | المصادقة |
|---|---|---|---|---|
| CVE-2021-43287 | الكشف عن المعلومات | 7.5 HIGH | CWE-200 | ❌ لا يوجد / None |
| CVE-2021-43288 | XSS مخزّن | 6.1 MEDIUM | CWE-79 | Agent |
| CVE-2021-43289 | اجتياز المسار — PUT | 8.1 HIGH | CWE-22 | Agent |
| CVE-2021-43290 | اجتياز المسار — GET | 8.1 HIGH | CWE-22 | Agent |
[PT] نقطة النهاية /go/add-on/business-continuity/api/cruise_config تُرجع ملف XML الكامل لإعدادات الخادم دون طلب مصادقة. يحتوي ملف XML على سمات عنصر <server>، بما في ذلك agentAutoRegisterKey و tokenGenerationKey — المفتاحان اللازمان لتسجيل الوكلاء وتوقيع الطلبات الموثّقة. بالإضافة إلى ذلك، يقبل المعامل pluginName في نقطة نهاية الإضافات تسلسلات اجتياز المسار (../../../../../../)، مما يسمح بقراءة ملفات عشوائية من النظام — مثل /proc/self/environ و /etc/go/jetty.xml.
[EN] تُرجع نقطة النهاية /go/add-on/business-continuity/api/cruise_config ملف XML الكامل لإعدادات الخادم دون طلب مصادقة. يحتوي ملف XML على سمات عنصر <server>، بما في ذلك agentAutoRegisterKey و tokenGenerationKey — المفتاحان اللازمان لتسجيل الوكلاء وتوقيع الطلبات الموثّقة. بالإضافة إلى ذلك، يقبل المعامل pluginName في نقطة نهاية الإضافات تسلسلات اجتياز المسار (../../../../../../)، مما يسمح بقراءة ملفات عشوائية — مثل /proc/self/environ و /etc/go/jetty.xml.
نقاط النهاية التي تستغلها السكربتات / Endpoints used by the scripts:
GET /go/add-on/business-continuity/api/cruise_config
GET /go/add-on/business-continuity/api/plugin?folderName=&pluginName=../../../../../../proc/self/environ
GET /go/add-on/business-continuity/api/plugin?folderName=&pluginName=../../../../../../etc/go/jetty.xml
remoteBuildRepository