Una inyección de comando es una explotación de una debilidad del sistema para obtener acceso al sistema con el fin de ejecutar código malicioso, recopilar datos del usuario y participar en otras actividades. Si bien existe la posibilidad de que una inyección de comando sea de naturaleza benigna, generalmente no lo es y puede presentar una amenaza de seguridad significativa. Hay una serie de soluciones alternativas diseñadas para evitar esta actividad en los sistemas informáticos.
Uno de los puntos de vulnerabilidad más comunes para una inyección de comando es un formulario, ya sea en una página web o en un sistema informático. Los formularios permiten a las personas ingresar datos y luego son procesados por el sistema. Si no hay restricciones sobre el tipo de datos ingresados en el formulario, es posible que las personas ingresen un código de computadora que el sistema leerá y ejecutará. Los formularios de las páginas web también pueden convertir la entrada para mostrarla a otros usuarios, exponiendo a otras personas al código también; por ejemplo, alguien podría dejar un script malicioso en los comentarios de un sitio web.
Cuando el código se ejecuta, puede hacer cosas como proporcionar a las personas acceso al backend de un sistema informático, incluido el acceso administrativo, y también podría plantar virus y malware en un sistema informático. Las inyecciones de comandos pueden estar diseñadas para propagarse, ya que los equipos infectados interactúan con equipos no infectados a través de una red. Pueden propagarse muy rápidamente y causar daños sustanciales en el camino.
Una forma de evitar una inyección de comando es diseñar formularios y otras entradas de una manera diseñada para restringir lo que las personas pueden ingresar. En los comentarios de Internet, por ejemplo, es probable que no exista una razón legítima para que los usuarios ingresen scripts, y el formulario de comentarios podría simplemente rechazar el script, sin dejar de permitir HTML para el marcado y el estilo. Asimismo, en un programa de computadora, los formularios de entrada podrían rechazar las entradas de ciertos caracteres, evitando que las personas ejecuten código en el formulario.
El riesgo potencial presentado por la inyección de comando se observó por primera vez en la década de 1990. Numerosos diseñadores han abordado el problema y han ideado varias formas de prevenir o detener los ataques de inyección de comandos. Los piratas informáticos también han intentado desarrollar sus propias soluciones alternativas, desarrollando formas nuevas y creativas de ejecutar código a través de puntos débiles en un sistema informático. Algunas personas desarrollan nuevas técnicas por interés puramente académico y ocasionalmente causan estragos por accidente cuando su investigación se escapa a la naturaleza, por así decirlo.