SCW アイコン
ヒーロー背景(区切りなし)
ブログ

Los codificadores conquistan la seguridad: serie Share & Learn - Inyección de código

Jaap Karan Singh
2019年5月16日 発行
最終更新日: 2026年3月6日

Los ataques de inyección de código se encuentran entre los más comunes, y también los más peligrosos, con los que se encontrarán muchos sitios web y aplicaciones. Abarcan toda la gama, tanto en términos de sofisticación como del peligro que representan, pero casi cualquier sitio o aplicación que acepte la entrada de los usuarios podría ser vulnerable. De hecho, casi todos los defensores de la ciberseguridad tendrán que enfrentarse a este tipo de ataque en algún momento de su carrera, y es probable que se enfrenten a él varias veces.

Se puede producir un ataque de inyección de código siempre que una aplicación o un sitio web acepte la entrada de los usuarios. Esto puede ser tan sencillo como proporcionar una función de búsqueda o pedirle a un usuario que introduzca su información de identificación. El ataque ocurre cuando un usuario malintencionado introduce código en el campo abierto en lugar de introducir texto normal. Su objetivo es hacer que el servidor confunda la entrada con un código válido y, a continuación, ejecutar las funciones que el atacante desee.

Si bien los ataques de inyección de código son extremadamente comunes, también lo son las defensas disponibles que se pueden usar para detenerlos. En este episodio, aprenderemos lo siguiente:

  • Cómo funcionan
  • Por qué son tan peligrosos
  • Cómo puedes establecer defensas para detenerlos.

¿Cómo utilizan los atacantes la inyección de código?

Si bien los detalles específicos sobre los ataques de inyección de código cambian según el lenguaje de programación utilizado, cualquier aplicación o sitio web puede ser vulnerable siempre que permita al usuario introducir datos. Se han activado ataques de inyección de código para SQL, HTML, XML, CSS y cualquier otro lenguaje de programación común.

En primer lugar, un atacante debe localizar el código vulnerable dentro de una aplicación, normalmente en un punto en el que los usuarios pueden introducir sus propios datos. Por ejemplo, este código toma la función eval () de PHP y la pasa a un usuario para que la modifique, sin ningún tipo de validación de la cadena devuelta.

$myvar = «varname»;
$x = $_GET [argumento];
eval («\ $myvar =\ $x;»);

Un atacante inteligente podría añadir fácilmente su propia cadena a la función eval e incluso ejecutar comandos del sistema si así lo desea.

/index.php? arg=1; sistema (id)

Es importante tener en cuenta que, si bien los ataques de inyección de código pueden implicar el envío de comandos del sistema, no se limitan a hacerlo. De hecho, en los ataques de inyección de código, los piratas informáticos solo están limitados por la funcionalidad del lenguaje en sí. En nuestro ejemplo, un atacante podría programar el sistema objetivo para que hiciera casi cualquier cosa permitida por el marco PHP.

¿Por qué son tan peligrosos los ataques de inyección de código?

Los ataques de inyección de código son potencialmente extremadamente peligrosos según la habilidad del atacante. Pueden hacer cualquier cosa que el lenguaje de programación les permita, lo que los coloca en pie de igualdad con los programadores de la aplicación. Un atacante podría prácticamente escribir su propia aplicación y hacer que se ejecute en el entorno objetivo.

Incluso los atacantes menos hábiles pueden ser peligrosos. En lugar de escribir su propia aplicación o cadenas de código, pueden simplemente ordenar al sistema objetivo que acepte e instale malware preprogramado. Esto podría provocar la desfiguración del sitio, ataques de ransomware o incluso convertirse en la base de una campaña de suplantación de identidad dirigida contra los usuarios del sitio.

La mayoría de las veces, los ataques de inyección de código se utilizan para robar cosas como listas de usuarios y contraseñas, o para obtener un valioso reconocimiento de un sistema que se ve amenazado aún más. Sin embargo, ten en cuenta que un programador experto puede hacer casi cualquier cosa ante un ataque de inyección de código, por lo que es fundamental que se descubran todos los posibles casos en los que se produzca y se eliminen del entorno.

¡No confíes en nadie! (O al menos, no los usuarios)

Al eliminar las vulnerabilidades de los ataques de inyección de código, lo primero que hay que buscar es cualquier lugar que solicite o permita la entrada del usuario. No se puede confiar en nada que introduzca un usuario bajo ninguna circunstancia. Si permites la entrada de los usuarios sin filtrar ni examinar, básicamente estás invitando a los atacantes a que intenten poner en peligro tu sistema o incluso tu red.

Aunque no siempre es posible, la mejor manera de frustrar los ataques de inyección de código es impedir que las funciones ejecuten o interpreten directamente las entradas del usuario. Es posible que los usuarios puedan elegir entre opciones estáticas en lugar de tener libertad para introducir sus propias consultas, programando la aplicación para que solo acepte esas opciones limitadas como válidas. Puede que no siempre sea apropiado hacerlo, pero usarlo siempre que sea posible puede eliminar las inyecciones de código antes de que comiencen.

En las áreas en las que los usuarios deben introducir sus propias entradas, se deben aplicar controles estrictos a esos datos. Asumir que todo es un posible ataque es un buen punto de partida. La aplicación de políticas de privilegios mínimos, como el acceso de usuario de solo lectura, tanto en el lado del cliente como del servidor, puede impedir la ejecución de la mayor parte del código.

La otra buena defensa es implementar filtros en toda la aplicación y desinfectar todo lo que introduzca el usuario. Los desarrolladores conocen los ataques por inyección de código desde hace años, y existen bibliotecas de filtros comprobados para cada marco y lenguaje. Cuando apliques esos filtros, asegúrate de hacerlo no solo en las áreas de entrada obvias de los usuarios o en función de parámetros comunes, como los comandos Get y Post, sino también en función de las cookies y los encabezados HTTP.

Aplicación de una corrección para la inyección de código

Eliminar las áreas de entrada de usuario innecesarias de su entorno, aplicar los principios de mínimo privilegio y utilizar las herramientas de filtrado y desinfección más recientes para inspeccionar y detectar posibles ataques puede cerrar la puerta a esta peligrosa vulnerabilidad. Tener la mentalidad de no confiar nunca en las opiniones de los usuarios también le servirá de mucho para seguir adelante. Haz todo eso y podrás ir un paso por delante de este peligroso tipo de ataque.

Para leer más, puede echar un vistazo al OWASP artículo sobre inyección de código. También puedes poner a prueba tus nuevos conocimientos defensivos con el demo gratuita de la plataforma Secure Code Warrior, que forma a los equipos de ciberseguridad para que se conviertan en los mejores ciberguerreros. Para obtener más información sobre cómo derrotar esta vulnerabilidad y la galería de otras amenazas de los delincuentes, visita la Blog de Secure Code Warrior.

Inyección frontal de código, ahora mismo. Acepta el desafío en nuestra plataforma de formación gamificada: [Empieza aquí]

リソースを参照
リソースを参照

Los ataques de inyección de código se encuentran entre los más comunes, y también los más peligrosos, con los que se encontrarán muchos sitios web y aplicaciones. Abarcan toda la gama, tanto en términos de sofisticación como del peligro que representan, pero casi cualquier sitio o aplicación que acepte la entrada de los usuarios podría ser vulnerable.

もっと知りたいですか?

Jaap Karan Singhは、Secure Coding Evangelistであり、Chief Singhであり、Secure Code Warrior の共同設立者です。

もっと詳しく

Secure Code Warrior ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先事項とする文化を構築するために、貴組織をSecure Code Warrior 。AppSec管理者、開発者、CISO、セキュリティ関連担当者など、あらゆる立場の方々に対し、不安全なコードに関連するリスクを軽減するお手伝いをいたします。

デモを予約する
共有する:
リンクトインのブランドソーシャルx ロゴ
著者
Jaap Karan Singh
2019年5月16日発行

Jaap Karan Singhは、Secure Coding Evangelistであり、Chief Singhであり、Secure Code Warrior の共同設立者です。

共有する:
リンクトインのブランドソーシャルx ロゴ

Los ataques de inyección de código se encuentran entre los más comunes, y también los más peligrosos, con los que se encontrarán muchos sitios web y aplicaciones. Abarcan toda la gama, tanto en términos de sofisticación como del peligro que representan, pero casi cualquier sitio o aplicación que acepte la entrada de los usuarios podría ser vulnerable. De hecho, casi todos los defensores de la ciberseguridad tendrán que enfrentarse a este tipo de ataque en algún momento de su carrera, y es probable que se enfrenten a él varias veces.

Se puede producir un ataque de inyección de código siempre que una aplicación o un sitio web acepte la entrada de los usuarios. Esto puede ser tan sencillo como proporcionar una función de búsqueda o pedirle a un usuario que introduzca su información de identificación. El ataque ocurre cuando un usuario malintencionado introduce código en el campo abierto en lugar de introducir texto normal. Su objetivo es hacer que el servidor confunda la entrada con un código válido y, a continuación, ejecutar las funciones que el atacante desee.

Si bien los ataques de inyección de código son extremadamente comunes, también lo son las defensas disponibles que se pueden usar para detenerlos. En este episodio, aprenderemos lo siguiente:

  • Cómo funcionan
  • Por qué son tan peligrosos
  • Cómo puedes establecer defensas para detenerlos.

¿Cómo utilizan los atacantes la inyección de código?

Si bien los detalles específicos sobre los ataques de inyección de código cambian según el lenguaje de programación utilizado, cualquier aplicación o sitio web puede ser vulnerable siempre que permita al usuario introducir datos. Se han activado ataques de inyección de código para SQL, HTML, XML, CSS y cualquier otro lenguaje de programación común.

En primer lugar, un atacante debe localizar el código vulnerable dentro de una aplicación, normalmente en un punto en el que los usuarios pueden introducir sus propios datos. Por ejemplo, este código toma la función eval () de PHP y la pasa a un usuario para que la modifique, sin ningún tipo de validación de la cadena devuelta.

$myvar = «varname»;
$x = $_GET [argumento];
eval («\ $myvar =\ $x;»);

Un atacante inteligente podría añadir fácilmente su propia cadena a la función eval e incluso ejecutar comandos del sistema si así lo desea.

/index.php? arg=1; sistema (id)

Es importante tener en cuenta que, si bien los ataques de inyección de código pueden implicar el envío de comandos del sistema, no se limitan a hacerlo. De hecho, en los ataques de inyección de código, los piratas informáticos solo están limitados por la funcionalidad del lenguaje en sí. En nuestro ejemplo, un atacante podría programar el sistema objetivo para que hiciera casi cualquier cosa permitida por el marco PHP.

¿Por qué son tan peligrosos los ataques de inyección de código?

Los ataques de inyección de código son potencialmente extremadamente peligrosos según la habilidad del atacante. Pueden hacer cualquier cosa que el lenguaje de programación les permita, lo que los coloca en pie de igualdad con los programadores de la aplicación. Un atacante podría prácticamente escribir su propia aplicación y hacer que se ejecute en el entorno objetivo.

Incluso los atacantes menos hábiles pueden ser peligrosos. En lugar de escribir su propia aplicación o cadenas de código, pueden simplemente ordenar al sistema objetivo que acepte e instale malware preprogramado. Esto podría provocar la desfiguración del sitio, ataques de ransomware o incluso convertirse en la base de una campaña de suplantación de identidad dirigida contra los usuarios del sitio.

La mayoría de las veces, los ataques de inyección de código se utilizan para robar cosas como listas de usuarios y contraseñas, o para obtener un valioso reconocimiento de un sistema que se ve amenazado aún más. Sin embargo, ten en cuenta que un programador experto puede hacer casi cualquier cosa ante un ataque de inyección de código, por lo que es fundamental que se descubran todos los posibles casos en los que se produzca y se eliminen del entorno.

¡No confíes en nadie! (O al menos, no los usuarios)

Al eliminar las vulnerabilidades de los ataques de inyección de código, lo primero que hay que buscar es cualquier lugar que solicite o permita la entrada del usuario. No se puede confiar en nada que introduzca un usuario bajo ninguna circunstancia. Si permites la entrada de los usuarios sin filtrar ni examinar, básicamente estás invitando a los atacantes a que intenten poner en peligro tu sistema o incluso tu red.

Aunque no siempre es posible, la mejor manera de frustrar los ataques de inyección de código es impedir que las funciones ejecuten o interpreten directamente las entradas del usuario. Es posible que los usuarios puedan elegir entre opciones estáticas en lugar de tener libertad para introducir sus propias consultas, programando la aplicación para que solo acepte esas opciones limitadas como válidas. Puede que no siempre sea apropiado hacerlo, pero usarlo siempre que sea posible puede eliminar las inyecciones de código antes de que comiencen.

En las áreas en las que los usuarios deben introducir sus propias entradas, se deben aplicar controles estrictos a esos datos. Asumir que todo es un posible ataque es un buen punto de partida. La aplicación de políticas de privilegios mínimos, como el acceso de usuario de solo lectura, tanto en el lado del cliente como del servidor, puede impedir la ejecución de la mayor parte del código.

La otra buena defensa es implementar filtros en toda la aplicación y desinfectar todo lo que introduzca el usuario. Los desarrolladores conocen los ataques por inyección de código desde hace años, y existen bibliotecas de filtros comprobados para cada marco y lenguaje. Cuando apliques esos filtros, asegúrate de hacerlo no solo en las áreas de entrada obvias de los usuarios o en función de parámetros comunes, como los comandos Get y Post, sino también en función de las cookies y los encabezados HTTP.

Aplicación de una corrección para la inyección de código

Eliminar las áreas de entrada de usuario innecesarias de su entorno, aplicar los principios de mínimo privilegio y utilizar las herramientas de filtrado y desinfección más recientes para inspeccionar y detectar posibles ataques puede cerrar la puerta a esta peligrosa vulnerabilidad. Tener la mentalidad de no confiar nunca en las opiniones de los usuarios también le servirá de mucho para seguir adelante. Haz todo eso y podrás ir un paso por delante de este peligroso tipo de ataque.

Para leer más, puede echar un vistazo al OWASP artículo sobre inyección de código. También puedes poner a prueba tus nuevos conocimientos defensivos con el demo gratuita de la plataforma Secure Code Warrior, que forma a los equipos de ciberseguridad para que se conviertan en los mejores ciberguerreros. Para obtener más información sobre cómo derrotar esta vulnerabilidad y la galería de otras amenazas de los delincuentes, visita la Blog de Secure Code Warrior.

Inyección frontal de código, ahora mismo. Acepta el desafío en nuestra plataforma de formación gamificada: [Empieza aquí]

リソースを参照
リソースを参照

以下のフォームに記入してレポートをダウンロードしてください

当社製品や安全な暗号化に関する情報をお送りする許可を頂ければ幸いです。お客様の個人情報は常に最大限の注意を払って取り扱い、マーケティング目的で他社に販売することは決してありません。

送信
SCW成功アイコン
SCWエラーアイコン
フォームを送信するには、「分析」クッキーを有効にしてください。完了後は、お気軽に再度無効にしてください。

Los ataques de inyección de código se encuentran entre los más comunes, y también los más peligrosos, con los que se encontrarán muchos sitios web y aplicaciones. Abarcan toda la gama, tanto en términos de sofisticación como del peligro que representan, pero casi cualquier sitio o aplicación que acepte la entrada de los usuarios podría ser vulnerable. De hecho, casi todos los defensores de la ciberseguridad tendrán que enfrentarse a este tipo de ataque en algún momento de su carrera, y es probable que se enfrenten a él varias veces.

Se puede producir un ataque de inyección de código siempre que una aplicación o un sitio web acepte la entrada de los usuarios. Esto puede ser tan sencillo como proporcionar una función de búsqueda o pedirle a un usuario que introduzca su información de identificación. El ataque ocurre cuando un usuario malintencionado introduce código en el campo abierto en lugar de introducir texto normal. Su objetivo es hacer que el servidor confunda la entrada con un código válido y, a continuación, ejecutar las funciones que el atacante desee.

Si bien los ataques de inyección de código son extremadamente comunes, también lo son las defensas disponibles que se pueden usar para detenerlos. En este episodio, aprenderemos lo siguiente:

  • Cómo funcionan
  • Por qué son tan peligrosos
  • Cómo puedes establecer defensas para detenerlos.

¿Cómo utilizan los atacantes la inyección de código?

Si bien los detalles específicos sobre los ataques de inyección de código cambian según el lenguaje de programación utilizado, cualquier aplicación o sitio web puede ser vulnerable siempre que permita al usuario introducir datos. Se han activado ataques de inyección de código para SQL, HTML, XML, CSS y cualquier otro lenguaje de programación común.

En primer lugar, un atacante debe localizar el código vulnerable dentro de una aplicación, normalmente en un punto en el que los usuarios pueden introducir sus propios datos. Por ejemplo, este código toma la función eval () de PHP y la pasa a un usuario para que la modifique, sin ningún tipo de validación de la cadena devuelta.

$myvar = «varname»;
$x = $_GET [argumento];
eval («\ $myvar =\ $x;»);

Un atacante inteligente podría añadir fácilmente su propia cadena a la función eval e incluso ejecutar comandos del sistema si así lo desea.

/index.php? arg=1; sistema (id)

Es importante tener en cuenta que, si bien los ataques de inyección de código pueden implicar el envío de comandos del sistema, no se limitan a hacerlo. De hecho, en los ataques de inyección de código, los piratas informáticos solo están limitados por la funcionalidad del lenguaje en sí. En nuestro ejemplo, un atacante podría programar el sistema objetivo para que hiciera casi cualquier cosa permitida por el marco PHP.

¿Por qué son tan peligrosos los ataques de inyección de código?

Los ataques de inyección de código son potencialmente extremadamente peligrosos según la habilidad del atacante. Pueden hacer cualquier cosa que el lenguaje de programación les permita, lo que los coloca en pie de igualdad con los programadores de la aplicación. Un atacante podría prácticamente escribir su propia aplicación y hacer que se ejecute en el entorno objetivo.

Incluso los atacantes menos hábiles pueden ser peligrosos. En lugar de escribir su propia aplicación o cadenas de código, pueden simplemente ordenar al sistema objetivo que acepte e instale malware preprogramado. Esto podría provocar la desfiguración del sitio, ataques de ransomware o incluso convertirse en la base de una campaña de suplantación de identidad dirigida contra los usuarios del sitio.

La mayoría de las veces, los ataques de inyección de código se utilizan para robar cosas como listas de usuarios y contraseñas, o para obtener un valioso reconocimiento de un sistema que se ve amenazado aún más. Sin embargo, ten en cuenta que un programador experto puede hacer casi cualquier cosa ante un ataque de inyección de código, por lo que es fundamental que se descubran todos los posibles casos en los que se produzca y se eliminen del entorno.

¡No confíes en nadie! (O al menos, no los usuarios)

Al eliminar las vulnerabilidades de los ataques de inyección de código, lo primero que hay que buscar es cualquier lugar que solicite o permita la entrada del usuario. No se puede confiar en nada que introduzca un usuario bajo ninguna circunstancia. Si permites la entrada de los usuarios sin filtrar ni examinar, básicamente estás invitando a los atacantes a que intenten poner en peligro tu sistema o incluso tu red.

Aunque no siempre es posible, la mejor manera de frustrar los ataques de inyección de código es impedir que las funciones ejecuten o interpreten directamente las entradas del usuario. Es posible que los usuarios puedan elegir entre opciones estáticas en lugar de tener libertad para introducir sus propias consultas, programando la aplicación para que solo acepte esas opciones limitadas como válidas. Puede que no siempre sea apropiado hacerlo, pero usarlo siempre que sea posible puede eliminar las inyecciones de código antes de que comiencen.

En las áreas en las que los usuarios deben introducir sus propias entradas, se deben aplicar controles estrictos a esos datos. Asumir que todo es un posible ataque es un buen punto de partida. La aplicación de políticas de privilegios mínimos, como el acceso de usuario de solo lectura, tanto en el lado del cliente como del servidor, puede impedir la ejecución de la mayor parte del código.

La otra buena defensa es implementar filtros en toda la aplicación y desinfectar todo lo que introduzca el usuario. Los desarrolladores conocen los ataques por inyección de código desde hace años, y existen bibliotecas de filtros comprobados para cada marco y lenguaje. Cuando apliques esos filtros, asegúrate de hacerlo no solo en las áreas de entrada obvias de los usuarios o en función de parámetros comunes, como los comandos Get y Post, sino también en función de las cookies y los encabezados HTTP.

Aplicación de una corrección para la inyección de código

Eliminar las áreas de entrada de usuario innecesarias de su entorno, aplicar los principios de mínimo privilegio y utilizar las herramientas de filtrado y desinfección más recientes para inspeccionar y detectar posibles ataques puede cerrar la puerta a esta peligrosa vulnerabilidad. Tener la mentalidad de no confiar nunca en las opiniones de los usuarios también le servirá de mucho para seguir adelante. Haz todo eso y podrás ir un paso por delante de este peligroso tipo de ataque.

Para leer más, puede echar un vistazo al OWASP artículo sobre inyección de código. También puedes poner a prueba tus nuevos conocimientos defensivos con el demo gratuita de la plataforma Secure Code Warrior, que forma a los equipos de ciberseguridad para que se conviertan en los mejores ciberguerreros. Para obtener más información sobre cómo derrotar esta vulnerabilidad y la galería de otras amenazas de los delincuentes, visita la Blog de Secure Code Warrior.

Inyección frontal de código, ahora mismo. Acepta el desafío en nuestra plataforma de formación gamificada: [Empieza aquí]

ウェビナーを見る
始める
もっと詳しく

以下のリンクをクリックして、このリソースのPDFをダウンロードしてください。

Secure Code Warrior ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先事項とする文化を構築するために、貴組織をSecure Code Warrior 。AppSec管理者、開発者、CISO、セキュリティ関連担当者など、あらゆる立場の方々に対し、不安全なコードに関連するリスクを軽減するお手伝いをいたします。

報告書を見るデモを予約する
PDFをダウンロード
リソースを参照
共有する:
リンクトインのブランドソーシャルx ロゴ
もっと知りたいですか?

共有する:
リンクトインのブランドソーシャルx ロゴ
著者
Jaap Karan Singh
2019年5月16日発行

Jaap Karan Singhは、Secure Coding Evangelistであり、Chief Singhであり、Secure Code Warrior の共同設立者です。

共有する:
リンクトインのブランドソーシャルx ロゴ

Los ataques de inyección de código se encuentran entre los más comunes, y también los más peligrosos, con los que se encontrarán muchos sitios web y aplicaciones. Abarcan toda la gama, tanto en términos de sofisticación como del peligro que representan, pero casi cualquier sitio o aplicación que acepte la entrada de los usuarios podría ser vulnerable. De hecho, casi todos los defensores de la ciberseguridad tendrán que enfrentarse a este tipo de ataque en algún momento de su carrera, y es probable que se enfrenten a él varias veces.

Se puede producir un ataque de inyección de código siempre que una aplicación o un sitio web acepte la entrada de los usuarios. Esto puede ser tan sencillo como proporcionar una función de búsqueda o pedirle a un usuario que introduzca su información de identificación. El ataque ocurre cuando un usuario malintencionado introduce código en el campo abierto en lugar de introducir texto normal. Su objetivo es hacer que el servidor confunda la entrada con un código válido y, a continuación, ejecutar las funciones que el atacante desee.

Si bien los ataques de inyección de código son extremadamente comunes, también lo son las defensas disponibles que se pueden usar para detenerlos. En este episodio, aprenderemos lo siguiente:

  • Cómo funcionan
  • Por qué son tan peligrosos
  • Cómo puedes establecer defensas para detenerlos.

¿Cómo utilizan los atacantes la inyección de código?

Si bien los detalles específicos sobre los ataques de inyección de código cambian según el lenguaje de programación utilizado, cualquier aplicación o sitio web puede ser vulnerable siempre que permita al usuario introducir datos. Se han activado ataques de inyección de código para SQL, HTML, XML, CSS y cualquier otro lenguaje de programación común.

En primer lugar, un atacante debe localizar el código vulnerable dentro de una aplicación, normalmente en un punto en el que los usuarios pueden introducir sus propios datos. Por ejemplo, este código toma la función eval () de PHP y la pasa a un usuario para que la modifique, sin ningún tipo de validación de la cadena devuelta.

$myvar = «varname»;
$x = $_GET [argumento];
eval («\ $myvar =\ $x;»);

Un atacante inteligente podría añadir fácilmente su propia cadena a la función eval e incluso ejecutar comandos del sistema si así lo desea.

/index.php? arg=1; sistema (id)

Es importante tener en cuenta que, si bien los ataques de inyección de código pueden implicar el envío de comandos del sistema, no se limitan a hacerlo. De hecho, en los ataques de inyección de código, los piratas informáticos solo están limitados por la funcionalidad del lenguaje en sí. En nuestro ejemplo, un atacante podría programar el sistema objetivo para que hiciera casi cualquier cosa permitida por el marco PHP.

¿Por qué son tan peligrosos los ataques de inyección de código?

Los ataques de inyección de código son potencialmente extremadamente peligrosos según la habilidad del atacante. Pueden hacer cualquier cosa que el lenguaje de programación les permita, lo que los coloca en pie de igualdad con los programadores de la aplicación. Un atacante podría prácticamente escribir su propia aplicación y hacer que se ejecute en el entorno objetivo.

Incluso los atacantes menos hábiles pueden ser peligrosos. En lugar de escribir su propia aplicación o cadenas de código, pueden simplemente ordenar al sistema objetivo que acepte e instale malware preprogramado. Esto podría provocar la desfiguración del sitio, ataques de ransomware o incluso convertirse en la base de una campaña de suplantación de identidad dirigida contra los usuarios del sitio.

La mayoría de las veces, los ataques de inyección de código se utilizan para robar cosas como listas de usuarios y contraseñas, o para obtener un valioso reconocimiento de un sistema que se ve amenazado aún más. Sin embargo, ten en cuenta que un programador experto puede hacer casi cualquier cosa ante un ataque de inyección de código, por lo que es fundamental que se descubran todos los posibles casos en los que se produzca y se eliminen del entorno.

¡No confíes en nadie! (O al menos, no los usuarios)

Al eliminar las vulnerabilidades de los ataques de inyección de código, lo primero que hay que buscar es cualquier lugar que solicite o permita la entrada del usuario. No se puede confiar en nada que introduzca un usuario bajo ninguna circunstancia. Si permites la entrada de los usuarios sin filtrar ni examinar, básicamente estás invitando a los atacantes a que intenten poner en peligro tu sistema o incluso tu red.

Aunque no siempre es posible, la mejor manera de frustrar los ataques de inyección de código es impedir que las funciones ejecuten o interpreten directamente las entradas del usuario. Es posible que los usuarios puedan elegir entre opciones estáticas en lugar de tener libertad para introducir sus propias consultas, programando la aplicación para que solo acepte esas opciones limitadas como válidas. Puede que no siempre sea apropiado hacerlo, pero usarlo siempre que sea posible puede eliminar las inyecciones de código antes de que comiencen.

En las áreas en las que los usuarios deben introducir sus propias entradas, se deben aplicar controles estrictos a esos datos. Asumir que todo es un posible ataque es un buen punto de partida. La aplicación de políticas de privilegios mínimos, como el acceso de usuario de solo lectura, tanto en el lado del cliente como del servidor, puede impedir la ejecución de la mayor parte del código.

La otra buena defensa es implementar filtros en toda la aplicación y desinfectar todo lo que introduzca el usuario. Los desarrolladores conocen los ataques por inyección de código desde hace años, y existen bibliotecas de filtros comprobados para cada marco y lenguaje. Cuando apliques esos filtros, asegúrate de hacerlo no solo en las áreas de entrada obvias de los usuarios o en función de parámetros comunes, como los comandos Get y Post, sino también en función de las cookies y los encabezados HTTP.

Aplicación de una corrección para la inyección de código

Eliminar las áreas de entrada de usuario innecesarias de su entorno, aplicar los principios de mínimo privilegio y utilizar las herramientas de filtrado y desinfección más recientes para inspeccionar y detectar posibles ataques puede cerrar la puerta a esta peligrosa vulnerabilidad. Tener la mentalidad de no confiar nunca en las opiniones de los usuarios también le servirá de mucho para seguir adelante. Haz todo eso y podrás ir un paso por delante de este peligroso tipo de ataque.

Para leer más, puede echar un vistazo al OWASP artículo sobre inyección de código. También puedes poner a prueba tus nuevos conocimientos defensivos con el demo gratuita de la plataforma Secure Code Warrior, que forma a los equipos de ciberseguridad para que se conviertan en los mejores ciberguerreros. Para obtener más información sobre cómo derrotar esta vulnerabilidad y la galería de otras amenazas de los delincuentes, visita la Blog de Secure Code Warrior.

Inyección frontal de código, ahora mismo. Acepta el desafío en nuestra plataforma de formación gamificada: [Empieza aquí]

目次

PDFをダウンロード
リソースを参照
もっと知りたいですか?

Jaap Karan Singhは、Secure Coding Evangelistであり、Chief Singhであり、Secure Code Warrior の共同設立者です。

もっと詳しく

Secure Code Warrior ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先事項とする文化を構築するために、貴組織をSecure Code Warrior 。AppSec管理者、開発者、CISO、セキュリティ関連担当者など、あらゆる立場の方々に対し、不安全なコードに関連するリスクを軽減するお手伝いをいたします。

デモを予約するダウンロード
共有する:
リンクトインのブランドソーシャルx ロゴ
リソースセンター

始めるためのリソース

その他の投稿
リソースセンター

始めるためのリソース

その他の投稿