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 разрабатывается и поддерживается компанией 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 — внеканальное обнаружение десериализации 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 | Auth |
|---|---|---|---|---|
| CVE-2021-43287 | Раскрытие информации / Information Disclosure | 7.5 HIGH | CWE-200 | ❌ Нет / None |
| CVE-2021-43288 | Хранимая XSS / Stored XSS | 6.1 MEDIUM | CWE-79 | Agent |
| CVE-2021-43289 | Обход пути — PUT / Path Traversal — PUT | 8.1 HIGH | CWE-22 | Agent |
| CVE-2021-43290 | Обход пути — GET / Path Traversal — 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.