Wekan — это канбан с открытым исходным кодом, созданный с помощью Meteor. С 8.36 по 9.74 валидатор исходящего URL-адреса интеграции веб-перехватчика в models/integrations.js проверял только буквальный URL.hostname на соответствие регулярным выражениям, поэтому DNS-имена, такие как 169-254-169-254.nip.io, прошли эту проверку первой строки. Защита fetchSafe на пути доставки уже заблокировала указанный пункт назначения IPv4, но его отдельный преобразователь только для IPv4 и дублированный черный список создали несогласованное применение всех семейств адресов и риск смещения между проверкой времени ввода и времени соединения.
Версия 9.74 позволяет серверу/lib/ssrfGuard.js разрешать все адреса с помощью `dns.lookup({ all: true })`, проверять каждый результат с помощью общей логики isIpBlocked, закреплять соединение и блокировать перенаправления. Эта проблема исправлена в версии 9.74.
Показать оригинальное описание (EN)
Wekan is open source kanban built with Meteor. From 8.36 until 9.74, the outgoing webhook Integration URL validator in models/integrations.js checked only the literal URL.hostname against regular expressions, so DNS names such as 169-254-169-254.nip.io passed that first-line check. The delivery path's fetchSafe guard already blocked the reported IPv4 destination, but its separate IPv4-only resolver and duplicated blocklist created inconsistent all-address-family enforcement and drift risk between input-time and connection-time validation. Version 9.74 makes server/lib/ssrfGuard.js resolve all addresses with `dns.lookup({ all: true })`, validate every result through the shared isIpBlocked logic, pin the connection, and block redirects. This issue is fixed in version 9.74.
Характеристики атаки
Последствия
Строка CVSS v3.1