¿Cómo Ocurre?
Los ataques de inyección son probablemente los más antiguos relacionados con la web/APIs y todavía se siguen cometiendo. Las debilidades de inyección ocurren cuando el input del usuario no se filtra y se procesa directamente por la API. Una inyección puede venir de SQL, un SO, XML, PHP, etc.
Impacto Posible
Las debilidades de inyección pueden llevar a divulgación de información, pérdida de datos, Dos, y toma completa de la cuenta. Los ataques exitosos también pueden causar que los intrusos accedan a información sensible o creen nuevas funcionalidades y ejecuten RCE.
Ejemplo Práctico
- Algunos usuario de MHT han reportado que su contraseña ha cambiado y que no pueden iniciar sesión en sus cuentas. El equipo de desarrollo se dio cuenta de que Bob había diseñado un endpoint API de login vulnerable
/apirule8/user/login_vque no filtraba el input del usuario. - Un atacante requiere el nombre de usuario del objetivo y para la contraseña puede usar
' OR 1=1--'y obtener autorización para dicha cuenta.
- Bob se dio cuenta del error y actualizó el endpoint API a
/apirule8/user/login_sy usó queries parametrizadas y filtros ya construidos de Laravel para sanitizar.
Medidas de Mitigación
- Asegura usar una librería conocida para la validación del lado del cliente.
- Si no se usa un framework, la información ofrecida por el usuario debe validarse y después filtrarse y sanitizarse.
- Añade reglas de seguridad necesarias al Firewall de Aplicación Web (WAF).
- Usa filtros preconstruidos en frameworks para validar el input del usuario.
