DICCIONARIO DE INFORMÁTICA Y TECNOLOGÍA
  ¿Qué significa inyección de código? - Información sobre inyección de código

Definición de inyección de código

Leandro Alegsa (Contacto) 2018-08-27

Envíanos un mensaje


Enviar
Anuncios

La inyección de código es la inserción de códigos en un proceso de ejecución para alterar su comportamiento. Es una técnica que puede emplearse para el bien o para el mal.

En el contexto de Windows también es denominada inyección DLL, porque el código que se inserta a menudo tiene la forma de un archivo DLL (biblioteca de vínculos dinámicos).

Wikipedia en inglés, en cambio, directamente trata a la inyección de código como maligno diciendo:

"La inyección de código es la explotación de un error de la computadora causado por el procesamiento de datos no válidos. El atacante usa la inyección para introducir (o "inyectar") código en un programa informático vulnerable y cambiar el curso de ejecución. El resultado de una inyección de código exitosa puede ser desastroso, por ejemplo, al permitir que los gusanos informáticos se propaguen."

La realidad es que la inyección de códigos no necesariamente es maligna.

En el año 2008, el 5,66% de todas las vulnerabilidades informadas fueron clasificadas como Inyección de Código, el año más alto registrado. En 2015, esto había disminuido a 0,77%.


Inyeccion de código

Ejemplos concretos de uso de inyección de código

La inyección de código puede usarse para el bien como para el mal, a continuación ejemplos concretos de su uso:

• Los antivirus suelen inyectar código en los navegadores web para supervisar el tráfico web y así poder bloquear el tráfico peligroso.

• Los programas malignos suelen inyectar código en los navegadores web para controlar qué visita el usuario, robar datos (contraseñas, números de tarjetas de crédito...), hacer redirecciones maliciosas, cambiar la configuración del navegador, evitar que puedas ingresar a sitios de seguridad o descargar programas antivirus, etc.

• Programas que cambian el diseño y el comportamiento de Windows (agregan animaciones, diferentes formas y gráficos a las ventanas, etc.) emplean la inyección de código. Por ejemplo, el programa WindowBlinds de Stardock.

• Ciertos programas hacen inyección DLL para agregar sus opciones a los menús contextuales de otras aplicaciones.

• Múltiples herramientas para hacer trampas en los juegos para PC suelen emplear técnicas de inyección de código para modificar el comportamiento del juego y así obtener ventajas.


La inyección de código no siempre es mala, pero puede ser inestable

La inyección de código es empleada por múltiples aplicaciones de Windows, como vimos en los ejemplos anteriores. Por supuesto que puede venir con ciertos peligros.

Es usual que la inyección de código cause errores inesperados en las aplicaciones y el sistema operativo. Por ejemplo, Windows evita actualmente que su navegador Edge pueda ser inyectado, para evitar que aplicaciones maliciosas lo alteren. Microsoft incluso proporciona instrucciones para verificar si las DLL de terceros se cargan en Microsoft Outlook, ya que causan múltiples fallos de Outlook.


Un empleado de Microsoft expresó: La inyección de DLL nunca es segura. Estás hablando de lanzar un código en un proceso que nunca fue diseñado, construido o probado por el autor del proceso, y de cooptar o crear un hilo para ejecutar ese código. Corre el riesgo de crear problemas de tiempo, sincronización o recursos que no estaban allí antes o exacerbar los problemas que ya estaban.


Detectar DLL inyectadas

Para detectar archivos DLL que han sido inyectados puedes emplear el programa de Microsoft Process Explorer, una poderosa herramienta que nos permite saber qué archivos o directorios abre un programa en particular. Process Explorer muestra información sobre qué manejadores y procesos DLL se han abierto o cargado.

Ejecutar el programa como administrador (clic derecho sobre el archivo ejecutable y clic en Ejecutar como Administrador), ir al menú View - Lower Panel View - clic en DLL (o simplemente presionar Ctrl + D)

Seleccionar un proceso determinado en el panel superior y buscar en el panel inferior para ver las DLL que se cargan. La columna "Nombre de la compañía" proporciona una forma útil de filtrar esta lista.

Por ejemplo, es usual ver una variedad de archivos DLL creados por "Microsoft Corporation" aquí, ya que son parte de Windows. También es normal ver archivos DLL hechos por la misma compañía que el proceso en cuestión: "Google Inc." en el caso de la imagen de abajo estamos viendo el proceso de Chrome. También podemos encontrar algunos archivos DLL creados por "AVAST Software" en Chrome. Esto indica que el software antivirus Avast en nuestro sistema está inyectando código como la "biblioteca de filtros de Avast Script Blocking" en Chrome.

Process Explorer para detectar los archivos y carpetas empleados por determinados procesos
Process Explorer para detectar los archivos y carpetas empleados por determinados procesos


No hay demasiado que podamos hacer si encontramos inyección de código en nuestro sistema. Si se trata de un virus deberemos ejecutar el antivirus. Si un programa en particular está fallando, puede deberse a la inyección de código de otro, deberemos desinstalar ambos.


Funcionamiento de la inyección de código

La inyección de código no modifica la aplicación subyacente en el disco duro. En cambio, espera que se ejecute esa aplicación e inyecta código adicional en ese proceso en ejecución para cambiar la forma en que funciona.

Windows incluye una variedad de interfaces de programación de aplicaciones (API) que se pueden usar para la inyección de código. Un proceso puede adjuntarse a un proceso de destino, asignar memoria, escribir un archivo DLL u otro código en esa memoria y luego indicar al proceso de destino que ejecute el código. Windows no evita que los procesos en su computadora se interfieran entre sí de esta manera.

La información técnica sobre cómo hacer inyección de código está mayormente en inglés, puede consultar estas dos:

- Iyección básica DLL

- Inyección de código

En algunos casos, alguien puede cambiar el código subyacente en el disco, por ejemplo, al reemplazar un archivo DLL que viene con un juego para PC con uno modificado para permitir el fraude o la piratería. Esto técnicamente no es "inyección de código". El código no se está inyectando en un proceso en ejecución, pero el programa en cambio se engaña para que cargue una DLL diferente con el mismo nombre.


Inyección de código SQL

Tenemos un artículo al respecto, ver: Inyección SQL


Uso de vulnerabilidades para la inyección

Las vulnerabilidades de inyección de código (o defectos de inyección) ocurren cuando una aplicación envía datos no confiables a un intérprete. Las vulnerabilidades de inyección se encuentran con mayor frecuencia en consultas SQL, LDAP, XPath o NoSQL; cComandos del sistema operativo; analizadores XML, encabezados SMTP, argumentos de programas, etc.

Las vulnerabilidades de inyección tienden a ser más fáciles de descubrir al examinar el código fuente que a través de prueba y error. Los escáneres y los fuzzers pueden ayudar a encontrar vulnerabilidades de inyección.


Usos malintencionados de la inyección de código

Las técnicas de inyección de código son populares en la piratería para obtener información, mejora de privilegios o acceso no autorizado a un sistema.

La inyección de código puede emplearse malévolamente para muchos propósitos, que incluyen:

• Modificar arbitrariamente valores en una base de datos a través de la inyección SQL. Esto puede comprometer la base de datos completas. Sin ir más lejos, este propio sitio web www.alegsa.com.ar, recibe constantemente ataques para inyección SQL, claro que tenemos protegido el código.

La solución típica a la inyección SQL en programación es filtrar cualquier dato antes de emplearlo en una consulta SQL, por ejemplo: si esperas de entrada un entero, verificar que lo sea y acotado a los números que corresponden. Leer: Validación de datos.

• Instalar programas malignos o ejecutar código malicioso en un servidor, inyectando código de script del servidor (como PHP o ASP).

• Subir en los privilegios a los permisos de raíz mediante la explotación de las vulnerabilidades de inyección de Shell en un binario raíz de setuid en UNIX o sistema local mediante la explotación de un servicio en Windows.

• Atacar a los usuarios de la web con HTML / Script Injection (Cross-site Scripting o XSS). Para más información leer: XSS.


Terminología relacionada

XSS (ataque a los usuarios de la web con HTML/Script Injection)

Inyección SQL

Validación de datos

DLL

Vulnerabilidad (informática)




Fuentes bibliográficas:
- Code Injection on Windows
- Code Injection
- http://web.nvd.nist.gov/view/vuln/statistics

Citar la definición:
Alegsa.com.ar (2018). Definición de inyección de código - ALEGSA © 2018-08-27 url: http://www.alegsa.com.ar/Dic/inyeccion de codigo.php


¿Mejoramos la definición?
Puntos: 0 (0 votos)







Respondemos tus consultas o comentarios a continuación:


¿Dudas? ¿necesita más información? Escriba y responderemos a tu email: clic aquí



 




  Diccionario de informática
  Búsqueda por letras:

A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - 0,9
 
Búsqueda por categorías
:

Almacenamiento - Aplicaciones - Audio - Compresión - Desarrollo web - Discos ópticos - Inteligencia Artificial - Memorias - Microprocesadores - Seguridad informática - Sistemas de archivos - Terminología de programación - UNIX - Windows - ver categorías

 
Búsqueda por palabras:






Preguntas

No hay ningún comentario todavía

Todos los derechos reservados © 1998 - 2018 - ALEGSA - Santa Fe, Argentina.
Políticas del sitio web - Contacto - Publicidad