Мы управляем форумом Discourse и получили внешнее сообщение, в котором утверждается, что существует уязвимость, позволяющая внедрять код через механизм onebox / allowed_onebox_iframes. Прежде чем предпринимать какие-либо действия, я хотел бы получить помощь от сообщества/команды в подтверждении того, возможно ли описанное поведение в текущей версии Discourse.
В сообщении утверждается:
- Discourse автоматически создаёт onebox для «голого» URL-адреса, если он находится на отдельной строке, и встраивает
twitter:playerстраницы в виде iframe для всех пользователей. - Проверка соответствия источника для белого списка iframe осуществляется только по префиксу, поэтому хост вроде
www.youtube.com.attacker.exampleбудет принят как легитимное встраивание YouTube, хотя и будет обслуживать контролируемый злоумышленником HTML-код. - Значение по умолчанию для
allowed_onebox_iframesфактически является подстановочным символом.
Мое понимание заключается в том, что (а) Discourse проверяет хосты из белого списка iframe на основе границ домена, а не просто по префиксу, и (б) белый список iframe для onebox по умолчанию представляет собой тщательно отобранный список провайдеров, а не *. Может ли кто-нибудь подтвердить, как работает проверка хостов для allowed_onebox_iframes в текущей версии, и может ли трюк с суффиксом поддомена, описанный в сообщении, действительно пройти валидацию?
Мы используем версию Discourse v2026.8.0-latest. Готовы поделиться исходным сообщением в частном порядке с командой безопасности, если это будет полезно.
Спасибо.