Перейти к содержимому
Noroxi

CWE-287 · 4 533 записей

Некорректная аутентификация

Почему это происходит?

Аутентификация добавляется к каждому маршруту по отдельности, а не обеспечивается централизованно. Если маршрут, добавленный позже, обходит общий промежуточный обработчик, проверка сессии для него не выполняется вовсе.

Уязвимый и исправленный код

Показательный учебный пример. Выделенные строки показывают, где ошибка и где исправление.

Уязвимый код

ts
app.use("/admin", requireSession, adminRouter);
// Добавленный позже маршрут обходит обработчикapp.post("/admin-api/config", updateConfig);

Исправленный код

ts
const admin = express.Router();admin.use(requireSession, requireRole("admin"));
admin.post("/config", updateConfig);app.use("/admin", admin);

Как предотвратить

  1. 01Обеспечивайте аутентификацию на уровне маршрутизатора, в едином промежуточном обработчике.
  2. 02Запрещайте по умолчанию: открытые эндпоинты перечисляйте в списке разрешённых.
  3. 03В тестах вызывайте каждый административный маршрут без сессии и проверяйте, что он возвращает 401.

CVE этого класса

4 538 записей

Все классы уязвимостей