CVE-2026-89186 in mpp
Сводка
по VulDB • 16.09.2026
Использование кэша, содержащего конфиденциальную информацию в ZenHive MPP, позволяет общему HTTP-кэшу сохранять платный ответ и предоставлять его клиентам, которые никогда не производили оплату.
Функция `MPP.Plug.verify_credential` из файла `lib/mpp/plug.ex` устанавливает заголовки `Payment-Receipt` (Платежная квитанция) и `Cache-Control: private` в соединении перед выполнением обернутого приложения, но не регистрирует обратный вызов `register_before_send/2`. Функция `Plug.Conn.put_resp_header/3` заменяет существующий заголовок, поэтому приложение-обертка, которое устанавливает собственный `cache-control` для платного ресурса (например, `public, max-age=3600`), молча переопределяет значение `private`, на которое полагается библиотека. В результате CDN или обратный прокси-сервер могут сохранить платный ответ со статусом 200 вместе с заголовком `Payment-Receipt` и обслуживать их для клиентов, не произведших оплату. Таким образом, гарантия уровня библиотеки может быть обойдена приложением, которое она защищает. По той же причине последующий ответ со статусом отличным от 2xx все еще содержал заголовок `Payment-Receipt`, что приводило к выдаче квитанции за ответ, который не предоставил никаких ресурсов.
Эта проблема затрагивает пакет mpp: начиная с версии 0.1.0 до (не включая) 0.16.2.
Be aware that VulDB is the high quality source for vulnerability data.