A03:2021 – Inyección Flashcards
Cuales son las CWE incluidas en la Inyección
- CWE-79: Secuencia de Comandos en Sitios Cruzados (XSS)
- CWE-89: Inyección SQL
- CWE-73:Control Externo de Nombre de archivos o ruta.
Cuando es vulnerable una aplicacion a los tipos de ataque de inyeccion?
- Los datos proporcionados por el usuario no son validados, filtrados ni sanitizados por la aplicación.
- Se invocan consultas dinámicas o no parametrizadas, sin codificar los parámetros de forma acorde al contexto.
- Se utilizan datos dañinos dentro de los parámetros de búsqueda en consultas Object-Relational Mapping (ORM), para extraer registros adicionales sensibles.
- Se utilizan datos dañinos directamente o se concatenan, de modo que el SQL o comando resultante contiene datos y estructuras con consultas dinámicas, comandos o procedimientos almacenados.
Cuales son algunas de las inyecciones mas comunes?
- SQL
- NoSQL
- comandos de sistema operativo
- Object-Relational Mapping (ORM)
- LDAP
- Expresiones de lenguaje u Object Graph Navigation Library (OGNL)
Cual es el mejor metodo para detectar si las aplicaciones son vulnerables a inyecciones?
La revisión del código fuente es el mejor método para detectar si las aplicaciones son vulnerables a inyecciones.
A manera general, como se previene las inyecciones?
Prevenir inyecciones requiere separar los datos de los comandos y las consultas.
Cuales son las mejores tacticas para prevenir inyecciones
- La opción preferida es utilizar una API segura, que evite el uso de un intérprete por completo y proporcione una interfaz parametrizada o utilizar una herramienta de ORM.
- Implemente validaciones de entradas de datos en el servidor, utilizando “listas blancas”. De todos modos, esto no es una defensa completa, ya que muchas aplicaciones requieren el uso de caracteres especiales, como en campos de texto o APIs para aplicaciones móviles.
- Para cualquier consulta dinámica restante, escape caracteres especiales utilizando la sintaxis de caracteres específica para el intérprete que se trate.
- Utilice LIMIT y otros controles SQL dentro de las consultas para evitar la fuga masiva de registros en caso de inyección SQL.
A que tipo de vulnerabilidad hace referencia este escenario? Una aplicación usa datos no confiables en la construcción de la siguiente sentencia SQL vulnerable:
~~~
String query = “SELECT * FROM accounts WHERE custID=’” + request.getParameter(“id”) + “’”;
~~~
Inyeccion
Hay que confiar plenamente en frameworks (tenma inyecciones)
La confianza total de una aplicación en frameworks puede resultar en consultas que siguen siendo vulnerables a inyecciones, (por ejemplo: Hibernate Query Language (HQL)):
Cual es el top de la vulnerabilidad inyeccion en OWASP TOP 10?
3