Как я нашел два CVE в Cube
Для контекста, я работаю разработчиком в Cube Dev в core команде над продуктом в OSS, итак начинаем:
В декабре, когда гремело CVE вокруг React, я неожиданно в вечер воскресенья со своим Кермитом (мой любимый пес породы вельш-корги, мы работаем с ним методом утёнка) решил попробовать найти вектор атаки в Кубе и попробовать его развить.
Рецепт для поиска уязвимости строиться на поиске вектора атаки и ее развитии. Так как мы говорим про сервер, вектор практически всегда начинается с отправки специально подготовленного запроса. Достаточно быстро нашел отсутствие валидации + санитизации входящих данных и получил хороший вектор для атаки, но оставалось придумать как ее развить.
Обычно развить атаку намного сложнее, чем найти сам вектор. Нужно обойти весь код и составить цепочку вызовов + найти все кусочки пазла, чтобы собрать это все воедино. Для OSS проектов, люди даже иногда подкидывают PR, чтобы уже имея вектор атаки, развить его.
По понятным причинам, я не могу делиться конкретными деталями где CVE, в связи с тем, что прошло достаточно мало времени, но я могу подсветить пару важных вещей:
• Валидируйте все что можете.
• Санитизируйте, запретите лишние поля (нельзя разрешать неизвестные ключи, так-как в JS все любят spread операторы).
• Защищайтесь от прототипов (используйте Map или Object.create(null), или hasOwnProperty, а не my_obj[req.key]), иначе обязательно кто-то подкинет вам такой ключик.
• Не пишете на JS 😂
CVE-2026-25958 | Исправление
Со второй уязвимость вышло попроще, просто удалось найти где пропущенный await позволяет уронить express сервер.
CVE-2026-25957 | Исправление
Голландский Rust-ист - канал о веб разработке
Post #21
411

- 🔥 8
- 💅 2
- ❤ 1
- 🌚 1
- 🙈 1