CVE-2024-22424: Cross-Site Request Forgery (CSRF) in github.com/argoproj/argo-cd
Оценка Noroxi
Приоритет: Наблюдать (оценка срочности 33/100)
- В отслеживаемых источниках (CISA KEV, Exploit-DB, Metasploit, Nuclei, GitHub) нет публичного эксплойта или записей об эксплуатации.
- Вероятность эксплуатации в ближайшие 30 дней: 0,48% (FIRST EPSS).
- Может быть вызвана любым, у кого есть доступ через интернет. Учётная запись или пароль не требуются. Пользователь должен открыть ссылку или посетить страницу. Требуются особые условия, например определённое время или конфигурация.
- Исправленная версия: github.com/argoproj/argo-cd/v2 (Go) 2.10-rc2, 2.8.8, 2.9.4.
Пока низкий приоритет. Обновитесь до github.com/argoproj/argo-cd/v2 (Go) 2.10-rc2, 2.8.8, 2.9.4 или новее.
Формируется автоматически по данным записи: CVSS (NVD и CNA), CISA KEV и SSVC, FIRST EPSS, источники эксплойтов, исправленные версии. Как мы считаем
Первоисточники: NVD · CVE.org · FIRST EPSS
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. The Argo CD API prior to versions 2.10-rc2, 2.9.4, 2.8.8, and 2.7.15 are vulnerable to a cross-server request forgery (CSRF) attack when the attacker has the ability to write HTML to a page on the same parent domain as Argo CD. A CSRF attack works by tricking an authenticated Argo CD user into loading a web page which contains code to call Argo CD API endpoints on the victim’s behalf. For example, an attacker could send an Argo CD user a link to a page which looks harmless but in the background calls an Argo CD API endpoint to create an application running malicious code. Argo CD uses the “Lax” SameSite cookie policy to prevent CSRF attacks where the attacker controls an external domain. The malicious external website can attempt to call the Argo CD API, but the web browser will refuse to send the Argo CD auth token with the request. Many companies host Argo CD on an internal subdomain. If an attacker can place malicious code on, for example, https://test.internal.example.com/, they can still perform a CSRF attack. In this case, the “Lax” SameSite cookie does not prevent the browser from sending the auth cookie, because the destination is a parent domain of the Argo CD API. Browsers generally block such attacks by applying CORS policies to sensitive requests with sensitive content types. Specifically, browsers will send a “preflight request” for POSTs with content type “application/json” asking the destination API “are you allowed to accept requests from my domain?” If the destination API does not answer “yes,” the browser will block the request. Before the patched versions, Argo CD did not validate that requests contained the correct content type header. So an attacker could bypass the browser’s CORS check by setting the content type to something which is considered “not sensitive” such as “text/plain.” The browser wouldn’t send the preflight request, and Argo CD would happily accept the contents (which are actually still JSON) and perform the requested action (such as running malicious code). A patch for this vulnerability has been released in the following Argo CD versions: 2.10-rc2, 2.9.4, 2.8.8, and 2.7.15. The patch contains a breaking API change. The Argo CD API will no longer accept non-GET requests which do not specify application/json as their Content-Type. The accepted content types list is configurable, and it is possible (but discouraged) to disable the content type check completely. Users are advised to upgrade. There are no known workarounds for this vulnerability.
- Опубликовано
- 18 янв. 2024 г.
- Обновлено
- 17 июн. 2026 г.
- EPSS
- 0,4 % · 41-й процентиль
- CWE
- CWE-352
Инструменты для отчёта
Оценка срочности
33
Наблюдать
Пока низкий приоритет.
- CVSS
- 33 / 40 · 8.3 / 10
- CISA KEV
- 0 / 30 · Нет в списке
- EPSS
- 0 / 30 · 0,4 %
Решение CISA SSVC
- Эксплуатация
- proof of concept
- Автоматизируемо
- нет
- Техническое влияние
- полное
Vulnrichment: входные данные дерева решений CISA.
Оценка CNA и NVD
- NVD
- 8,3
- CNA · GitHub_M
- 8,4
- разница 0,1 балла
Оценка присваивающего органа и независимая оценка NVD. Разрыв означает, что критичность спорна.
Узнайте, когда запись изменится
- Нет в KEV: эксплуатация в реальных атаках не зафиксирована
- Публичного эксплойта нет
- Исправление выпущено
Если что-то из этого изменится, сообщим в ежедневной сводке.
У вас WordPress? Проверьте сайт бесплатно в WP Lens
Анализ Noroxi
Что это значит для вашей инфраструктуры?
Оценка выше формируется автоматически по данным записи и не знает вашей среды. Наша команда проверит на ваших системах, действительно ли уязвимость эксплуатируема и какой меры достаточно.
Мы используем этот продукт, нужна помощьЗатронутые системы
Затронута ли ваша версия?
Выберите продукт и введите свою версию. Она сравнивается с диапазонами этой записи прямо в браузере и никуда не отправляется.
| Вендор | Продукт | CPE |
|---|---|---|
| argoproj | argo cd | cpe:2.3:a:argoproj:argo_cd |
| linuxfoundation | argo-cd | cpe:2.3:a:linuxfoundation:argo-cd |
Затронутые версии
Диапазоны версий NVD (для продуктов из каталога). Добавьте продукт в стек с версией, и сопоставление будет по ним.
- argoproj argo cd2.8.0 и новее · до 2.8.8
- argoproj argo cd2.9.0 и новее · до 2.9.4
- argoproj argo cd2.10.0
- linuxfoundation argo-cd0.1.0 и новее · до 2.7.16
Версии, заявленные вендором
Диапазоны затронутых версий, заявленные назначающей организацией (GitHub_M). Не зависят от анализа CPE в NVD и обычно опережают его.
argoproj argo-cd
- >= 0.1.0, < 2.7.15, >= 2.8.0, < 2.8.8, >= 2.9.0, < 2.9.4, >= 2.10.0-rc1, < 2.10-rc2затронута
Затронутые пакеты
Данные OSV и GitHub Advisory: экосистема, пакет и диапазон. Сопоставление SBOM использует эту таблицу.
| Экосистема | Пакет | Затронутый диапазон | Исправление |
|---|---|---|---|
| Go | github.com/argoproj/argo-cd | с 0.1.0 · до 1.8.7 включительно | — |
| Go | github.com/argoproj/argo-cd/v2 | с 2.10.0-rc1 · до 2.10-rc2 | 2.10-rc2 |
| Go | github.com/argoproj/argo-cd/v2 | с 2.8.0-rc1 · до 2.8.8 | 2.8.8 |
| Go | github.com/argoproj/argo-cd/v2 | с 2.9.0-rc1 · до 2.9.4 | 2.9.4 |
| Go | github.com/argoproj/argo-cd/v2 | до 2.7.16 | 2.7.16 |
Тот же продукт
argoproj: все записиДругие записи с наивысшей оценкой для того же основного продукта.
- CVE-2025-55190Argo CD: Project API Token Exposes Repository Credentials41В плане
- CVE-2022-29165Argo CD will blindly trust JWT claims if anonymous access is enabled41В плане
- CVE-2024-21652Argo CD vulnerable to Bypassing of Brute Force Protection via Application Crash and In-Memory Data Loss39Наблюдать
Опубликованы до и после этой записи в том же продукте
- ← РаньшеCVE-2023-405847 сент. 2023 г. · Denial of Service to Argo CD repo-server26Наблюдать
- ← РаньшеCVE-2023-4002627 сент. 2023 г. · Path traversal allows leaking out-of-bound Helm charts from Argo CD repo-server17Наблюдать
- Позже →CVE-2023-5072613 мар. 2024 г. · Users with `create` but not `override` privileges can perform local sync in argo-cd25Наблюдать
Исправление
На какую версию обновиться
Версии с исправлением по данным вендора, реестров пакетов и Microsoft. Перед обновлением сверьтесь с бюллетенем вендора.
| Продукт / пакет | Исправленная версия | Источник |
|---|---|---|
| Go:github.com/argoproj/argo-cd/v2 | 2.10-rc2 | Реестр пакетов (OSV) |
| Go:github.com/argoproj/argo-cd/v2 | 2.7.16 | Реестр пакетов (OSV) |
| Go:github.com/argoproj/argo-cd/v2 | 2.8.8 | Реестр пакетов (OSV) |
| Go:github.com/argoproj/argo-cd/v2 | 2.9.4 | Реестр пакетов (OSV) |
Статус эксплойта
Публичный эксплойт неизвестен
Публичный эксплойт пока не обнаружен. Это не значит, что вы в безопасности, лишь что порог чуть выше.
Контекст для исследователя
Для пентестеров и исследователей: профиль атаки, расхождение оценок, хронология, коммиты исправлений, авторы, кандидаты в варианты и цепочки, охват bug bounty. Всё выводится из имеющихся данных; без кода эксплойтов.
Хронология
От публикации до сегодня: proof of concept, модуль Metasploit, CISA KEV и запись об исправлении. Даты — как сообщают источники.
Кроме публикации датированных событий нет.
Истории пока нет (накапливается ежедневным заданием EPSS).
Ссылки на патчи и коммиты
Коммиты, PR и diff среди источников. Отправная точка для patch-diff и поиска вариантов; это исправления, не эксплойты.
Авторы
Все исследователиНашедшие, сообщившие и аналитики, названные в записи CNA. Нажмите имя, чтобы увидеть другие записи исследователя.
В записи CNA нет авторов.
Кандидаты в варианты
Тот же продукт, тот же класс уязвимости, в пределах 18 месяцев. Если патч не закрыл первопричину, родственная ошибка здесь.
Ночной расчёт связей ничего не нашёл.
Кандидаты в цепочки
Обход аутентификации и уязвимость, требующая привилегий, в одном продукте и близко по времени: вместе они могут дать путь без аутентификации.
—
Охват bug bounty
Известной публичной программы нет.
Источник: bounty-targets-data (публичные списки HackerOne, Bugcrowd, Intigriti, YesWeHack).
Технические детали
Условия атаки
- Может быть вызвана любым, у кого есть доступ через интернет.
- Учётная запись или пароль не требуются.
- Пользователь должен открыть ссылку или посетить страницу.
- Требуются особые условия, например определённое время или конфигурация.
В случае успеха
- Конфиденциальность
- высокое · данные могут быть прочитаны
- Целостность
- высокое · данные или конфигурация могут быть изменены
- Доступность
- высокое · работа сервиса может быть нарушена
Влияние может выйти за пределы уязвимого компонента (область действия меняется).
- Вектор атаки
- Сеть
- Сложность атаки
- Высокая
- Требуемые привилегии
- Не требуются
- Взаимодействие с пользователем
- Требуется
- Область действия
- Изменяется
- Влияние на конфиденциальность
- Высокое
- Влияние на целостность
- Высокое
- Влияние на доступность
- Высокое
Класс уязвимости (CWE)
CWE-352 · Cross-Site Request Forgery (CSRF)Вектор CVSS
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:H
nvd-primary
Первопричина
Запросы, изменяющие состояние, опираются на сессионный cookie, который браузер отправляет автоматически; то, что запрос пришёл со страницы самого пользователя, не проверяется.
Ошибка в коде
Весь класс CWE-352Показательный пример этого класса уязвимостей. Это не исходный код вендора; показан ошибочный шаблон и его исправление.
Уязвимый код
app.use(session({ cookie: { httpOnly: true } }));
app.post("/account/address", updateAddress);Исправленный код
app.use(session({ cookie: { httpOnly: true, sameSite: "lax" } }));
app.post("/account/address", csrfProtection, updateAddress);Контекст атаки
Шаблоны атак MITRE CAPEC и техники ATT&CK для этого класса уязвимости (CWE). Отправная точка для правил обнаружения и threat hunting.
Журнал изменений
- Исправление✗ → ✓
Для отслеживаемых записей эти изменения приходят и как уведомления. →
Источники
Показать все источники (ещё 1)Свернуть
Рекомендации вендоров и официальные записи. Ссылки на эксплойты/PoC намеренно исключены.