
Los codificadores conquistan la seguridad: serie Share & Learn - NoSQL Injection
Las bases de datos NoSQL son cada vez más popular. Es difícil negar su rapidez y facilidad para tratar datos no estructurados, especialmente cuando los equipos de desarrollo trabajan con metodologías cada vez más ágiles.
Los desarrolladores necesitan tiempo para eliminar las vulnerabilidades y otros desafíos de la tecnología emergente. Solo después de que haya estado en uso durante algún tiempo en aplicaciones de producción, los problemas comienzan a salir a la superficie.
Las bases de datos NoSQL son similares. Existen riesgos clave que los desarrolladores deben conocer para poder mantener sus aplicaciones seguras. Uno de esos riesgos es la inyección de NoSQL.
Veamos qué es la inyección NoSQL, qué daño puede causar y cómo solucionarlo:
Comprenda la inyección de NoSQL
La inyección de NoSQL se debe a muchas de las mismas vulnerabilidades de inyección, como XML o Inyección SQL.
La inyección de NoSQL permite a los atacantes colocar comandos arbitrarios en una consulta de NoSQL. Esto les permite robar datos e incluso realizar cambios en la base de datos si sus privilegios son lo suficientemente altos.
Cuando una aplicación coloca datos controlados por el usuario directamente en una expresión de consulta NoSQL, estas expresiones suelen tomar funciones o tienen operadores integrados que pueden manipularse para robar o cambiar datos. Y cuando algo así se ejecuta con intención malintencionada, las consecuencias pueden ser nefastas.
Las bases de datos de MongoDB son uno de los campos de juego más populares para explotar esta vulnerabilidad. «$ne: «" 'es el operador equivalente a 1=1 en el mundo de SQL, por lo que, a modo de ejemplo, un atacante podría colocar los caracteres «$ne: «» 'en los campos de nombre de usuario y contraseña de una interfaz de usuario. Si el código es vulnerable a la inyección de NoSQL, la base de datos buscará todos los registros en los que el nombre de usuario y la contraseña no coincidan con una cadena vacía. En otras palabras: todos ellos. ¡Ay!.
Si esta base de datos no está cifrada, el atacante podría robar los nombres de usuario y contraseñas de todos los usuarios que contiene. Esto incluye el nombre de usuario y las contraseñas de los administradores, lo que les da un pase de acceso total a toda la base de datos.
Los atacantes suelen intentar transmitir valores que siempre son ciertos. Otro ataque habitual consiste en inyectar código malintencionado en las propiedades que están configuradas como funciones.
Por ejemplo, MongoDB usa una función de búsqueda que toma un objeto con una propiedad llamada $where. La propiedad $where se establece en una función que debe evaluarse como verdadera o falsa. Si esta función se modifica de alguna manera por la entrada del usuario, es probable que se encuentre ahí una inyección de NoSQL.
Para obtener una visión detallada de las complejidades de la inyección de NoSQL, consulte esto Artículo de InfoQ.
Sepa por qué la inyección de NoSQL es peligrosa
La inyección de NoSQL es peligrosa sobre todo porque aún no ha recibido el escrutinio de la comunidad de seguridad que se merece.
Los impactos de la inyección de NoSQL son prácticamente los mismos que los de la inyección de SQL tradicional. Los datos pueden robarse o modificarse, las cuentas pueden verse comprometidas robando datos y, quizás lo más cruel, los datos podrían borrarse por completo si se ejecuta correctamente una orden de eliminación.
La conclusión es que MongoDB y otros motores de bases de datos NoSQL son vulnerables a los ataques. «Sin SQL» no significa que no haya inyecciones.
Afortunadamente, algunos miembros de la comunidad están tomando nota y hacer correr la voz. Es necesario que cada vez más desarrolladores se eduquen para poder proteger sus aplicaciones de productos poco conocidos que pueden convertirse en un gran quebradero de cabeza si se explotan.
Derrota la inyección de NoSQL
La inyección de NoSQL puede ser difícil de derrotar. Desafortunadamente, no existe la opción de realizar consultas parametrizadas como ocurre con la inyección de SQL. Sin embargo, no es imposible. Hay algunas opciones para ayudarte:
- Los fuzzers se pueden usar como un método para detectar vulnerabilidades. Sin embargo, como ocurre con muchas cosas en la vida, el enfoque más simple puede ser el más efectivo. En este caso, una buena revisión del código antiguo es tu mejor aliada.
- Al revisar el código, busca posibles lugares en los que la entrada del usuario pueda establecer el valor de una expresión o cambiar una función. No permitas que la entrada del usuario cambie tus consultas.
- Asegúrese de enviar la entrada del usuario a la clase que le corresponde. Si es un número, muévelo a un número, si es una cadena, convierte a una cadena y así sucesivamente.
- Nunca utilice $where o funciones de evaluación similares junto con la entrada del usuario. En la mayoría de los casos, puede solucionarlo cambiando el modelo o esquema de datos.
- Intenta usar Mangosta como su controlador de MongoDB. Mongoose le permite definir un esquema para su base de datos NoSQL. Si tú dígale a Mongoose que sus entradas son cadenas, se moldearán para formar cuerdas. Por lo tanto, los objetos introducidos por un atacante no serán tratados como objetos, sino como cadenas.
- ¡Endurece tu base de datos! Cree cuentas de usuario con pocos privilegios, maximice el tiempo de ejecución de las consultas y siga siempre las mejores prácticas de seguridad que se aplican a su organización.
Una desventaja de la facilidad de uso de las bases de datos NoSQL es la tendencia de los desarrolladores a dejarlas de lado y empezar a usarlas sin pensar en la seguridad.
Es fundamental que dedique tiempo a aprender a montar de forma segura una base de datos NoSQL y a protegerse de las inyecciones de NoSQL.
Por ejemplo, Edición MongoDB Enterprise cuenta con funciones avanzadas de control de acceso para sus documentos. Aplicar el «mínimo privilegio» puede ser una buena estrategia de defensa en profundidad (DiD) en caso de que alguien descubriera una vulnerabilidad en su aplicación.
En resumen, esto es lo que tenemos:
- Desinfecte la entrada antes de usarla en una expresión de consulta NoSQL
- Usa controladores que te ayuden, como Mongoose
- Realice revisiones de código que analicen específicamente cómo se utilizan los datos de entrada en las consultas
- Usa fuzzers y escáneres para intentar encontrar vulnerabilidades en tu código.
NoSQL no es Sin Inyecciones
Las bases de datos NoSQL están ganando popularidad rápidamente debido a sus funciones escalables y velocidad de configuración. La novedad de la tecnología puede llevar a los desarrolladores a utilizar bases de datos NoSQL sin pensar en cómo protegerlas.
Las bases de datos NoSQL pueden ser tan vulnerables como las bases de datos SQL a los ataques de inyección, así que actúe con cautela y preste atención a sus consultas. Si quieres obtener más información, consulta nuestra Recursos de aprendizaje o ponga a prueba sus habilidades con nuestro demo gratuita.
Prepárese con antelación y no tendrá que preocuparse por las inyecciones de NoSQL en sus aplicaciones. ¡Demasiado fácil!
¿Cree que está listo para localizar, identificar y corregir la inyección de NoSQL ahora mismo? Entra en la arena del código seguro, guerrero:
¡Y eso es todo para 2018! Esta será nuestra última publicación del año, pero volveremos con la próxima guía de Coders Conquer Security el 10 de enero de 2019. ¡Nos vemos pronto!


Las bases de datos NoSQL son cada vez más populares. Es difícil negar su rapidez y facilidad para tratar datos no estructurados, pero a medida que su uso se generaliza, inevitablemente salen a la luz más vulnerabilidades.
Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

Secure Code Warrior là pour aider votre organisation à protéger le code tout au long du cycle de vie du développement logiciel et à créer une culture où la cybersécurité est une priorité. Que vous soyez administrateur AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Veuillez réserver une démonstration.Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.


Las bases de datos NoSQL son cada vez más popular. Es difícil negar su rapidez y facilidad para tratar datos no estructurados, especialmente cuando los equipos de desarrollo trabajan con metodologías cada vez más ágiles.
Los desarrolladores necesitan tiempo para eliminar las vulnerabilidades y otros desafíos de la tecnología emergente. Solo después de que haya estado en uso durante algún tiempo en aplicaciones de producción, los problemas comienzan a salir a la superficie.
Las bases de datos NoSQL son similares. Existen riesgos clave que los desarrolladores deben conocer para poder mantener sus aplicaciones seguras. Uno de esos riesgos es la inyección de NoSQL.
Veamos qué es la inyección NoSQL, qué daño puede causar y cómo solucionarlo:
Comprenda la inyección de NoSQL
La inyección de NoSQL se debe a muchas de las mismas vulnerabilidades de inyección, como XML o Inyección SQL.
La inyección de NoSQL permite a los atacantes colocar comandos arbitrarios en una consulta de NoSQL. Esto les permite robar datos e incluso realizar cambios en la base de datos si sus privilegios son lo suficientemente altos.
Cuando una aplicación coloca datos controlados por el usuario directamente en una expresión de consulta NoSQL, estas expresiones suelen tomar funciones o tienen operadores integrados que pueden manipularse para robar o cambiar datos. Y cuando algo así se ejecuta con intención malintencionada, las consecuencias pueden ser nefastas.
Las bases de datos de MongoDB son uno de los campos de juego más populares para explotar esta vulnerabilidad. «$ne: «" 'es el operador equivalente a 1=1 en el mundo de SQL, por lo que, a modo de ejemplo, un atacante podría colocar los caracteres «$ne: «» 'en los campos de nombre de usuario y contraseña de una interfaz de usuario. Si el código es vulnerable a la inyección de NoSQL, la base de datos buscará todos los registros en los que el nombre de usuario y la contraseña no coincidan con una cadena vacía. En otras palabras: todos ellos. ¡Ay!.
Si esta base de datos no está cifrada, el atacante podría robar los nombres de usuario y contraseñas de todos los usuarios que contiene. Esto incluye el nombre de usuario y las contraseñas de los administradores, lo que les da un pase de acceso total a toda la base de datos.
Los atacantes suelen intentar transmitir valores que siempre son ciertos. Otro ataque habitual consiste en inyectar código malintencionado en las propiedades que están configuradas como funciones.
Por ejemplo, MongoDB usa una función de búsqueda que toma un objeto con una propiedad llamada $where. La propiedad $where se establece en una función que debe evaluarse como verdadera o falsa. Si esta función se modifica de alguna manera por la entrada del usuario, es probable que se encuentre ahí una inyección de NoSQL.
Para obtener una visión detallada de las complejidades de la inyección de NoSQL, consulte esto Artículo de InfoQ.
Sepa por qué la inyección de NoSQL es peligrosa
La inyección de NoSQL es peligrosa sobre todo porque aún no ha recibido el escrutinio de la comunidad de seguridad que se merece.
Los impactos de la inyección de NoSQL son prácticamente los mismos que los de la inyección de SQL tradicional. Los datos pueden robarse o modificarse, las cuentas pueden verse comprometidas robando datos y, quizás lo más cruel, los datos podrían borrarse por completo si se ejecuta correctamente una orden de eliminación.
La conclusión es que MongoDB y otros motores de bases de datos NoSQL son vulnerables a los ataques. «Sin SQL» no significa que no haya inyecciones.
Afortunadamente, algunos miembros de la comunidad están tomando nota y hacer correr la voz. Es necesario que cada vez más desarrolladores se eduquen para poder proteger sus aplicaciones de productos poco conocidos que pueden convertirse en un gran quebradero de cabeza si se explotan.
Derrota la inyección de NoSQL
La inyección de NoSQL puede ser difícil de derrotar. Desafortunadamente, no existe la opción de realizar consultas parametrizadas como ocurre con la inyección de SQL. Sin embargo, no es imposible. Hay algunas opciones para ayudarte:
- Los fuzzers se pueden usar como un método para detectar vulnerabilidades. Sin embargo, como ocurre con muchas cosas en la vida, el enfoque más simple puede ser el más efectivo. En este caso, una buena revisión del código antiguo es tu mejor aliada.
- Al revisar el código, busca posibles lugares en los que la entrada del usuario pueda establecer el valor de una expresión o cambiar una función. No permitas que la entrada del usuario cambie tus consultas.
- Asegúrese de enviar la entrada del usuario a la clase que le corresponde. Si es un número, muévelo a un número, si es una cadena, convierte a una cadena y así sucesivamente.
- Nunca utilice $where o funciones de evaluación similares junto con la entrada del usuario. En la mayoría de los casos, puede solucionarlo cambiando el modelo o esquema de datos.
- Intenta usar Mangosta como su controlador de MongoDB. Mongoose le permite definir un esquema para su base de datos NoSQL. Si tú dígale a Mongoose que sus entradas son cadenas, se moldearán para formar cuerdas. Por lo tanto, los objetos introducidos por un atacante no serán tratados como objetos, sino como cadenas.
- ¡Endurece tu base de datos! Cree cuentas de usuario con pocos privilegios, maximice el tiempo de ejecución de las consultas y siga siempre las mejores prácticas de seguridad que se aplican a su organización.
Una desventaja de la facilidad de uso de las bases de datos NoSQL es la tendencia de los desarrolladores a dejarlas de lado y empezar a usarlas sin pensar en la seguridad.
Es fundamental que dedique tiempo a aprender a montar de forma segura una base de datos NoSQL y a protegerse de las inyecciones de NoSQL.
Por ejemplo, Edición MongoDB Enterprise cuenta con funciones avanzadas de control de acceso para sus documentos. Aplicar el «mínimo privilegio» puede ser una buena estrategia de defensa en profundidad (DiD) en caso de que alguien descubriera una vulnerabilidad en su aplicación.
En resumen, esto es lo que tenemos:
- Desinfecte la entrada antes de usarla en una expresión de consulta NoSQL
- Usa controladores que te ayuden, como Mongoose
- Realice revisiones de código que analicen específicamente cómo se utilizan los datos de entrada en las consultas
- Usa fuzzers y escáneres para intentar encontrar vulnerabilidades en tu código.
NoSQL no es Sin Inyecciones
Las bases de datos NoSQL están ganando popularidad rápidamente debido a sus funciones escalables y velocidad de configuración. La novedad de la tecnología puede llevar a los desarrolladores a utilizar bases de datos NoSQL sin pensar en cómo protegerlas.
Las bases de datos NoSQL pueden ser tan vulnerables como las bases de datos SQL a los ataques de inyección, así que actúe con cautela y preste atención a sus consultas. Si quieres obtener más información, consulta nuestra Recursos de aprendizaje o ponga a prueba sus habilidades con nuestro demo gratuita.
Prepárese con antelación y no tendrá que preocuparse por las inyecciones de NoSQL en sus aplicaciones. ¡Demasiado fácil!
¿Cree que está listo para localizar, identificar y corregir la inyección de NoSQL ahora mismo? Entra en la arena del código seguro, guerrero:
¡Y eso es todo para 2018! Esta será nuestra última publicación del año, pero volveremos con la próxima guía de Coders Conquer Security el 10 de enero de 2019. ¡Nos vemos pronto!

Las bases de datos NoSQL son cada vez más popular. Es difícil negar su rapidez y facilidad para tratar datos no estructurados, especialmente cuando los equipos de desarrollo trabajan con metodologías cada vez más ágiles.
Los desarrolladores necesitan tiempo para eliminar las vulnerabilidades y otros desafíos de la tecnología emergente. Solo después de que haya estado en uso durante algún tiempo en aplicaciones de producción, los problemas comienzan a salir a la superficie.
Las bases de datos NoSQL son similares. Existen riesgos clave que los desarrolladores deben conocer para poder mantener sus aplicaciones seguras. Uno de esos riesgos es la inyección de NoSQL.
Veamos qué es la inyección NoSQL, qué daño puede causar y cómo solucionarlo:
Comprenda la inyección de NoSQL
La inyección de NoSQL se debe a muchas de las mismas vulnerabilidades de inyección, como XML o Inyección SQL.
La inyección de NoSQL permite a los atacantes colocar comandos arbitrarios en una consulta de NoSQL. Esto les permite robar datos e incluso realizar cambios en la base de datos si sus privilegios son lo suficientemente altos.
Cuando una aplicación coloca datos controlados por el usuario directamente en una expresión de consulta NoSQL, estas expresiones suelen tomar funciones o tienen operadores integrados que pueden manipularse para robar o cambiar datos. Y cuando algo así se ejecuta con intención malintencionada, las consecuencias pueden ser nefastas.
Las bases de datos de MongoDB son uno de los campos de juego más populares para explotar esta vulnerabilidad. «$ne: «" 'es el operador equivalente a 1=1 en el mundo de SQL, por lo que, a modo de ejemplo, un atacante podría colocar los caracteres «$ne: «» 'en los campos de nombre de usuario y contraseña de una interfaz de usuario. Si el código es vulnerable a la inyección de NoSQL, la base de datos buscará todos los registros en los que el nombre de usuario y la contraseña no coincidan con una cadena vacía. En otras palabras: todos ellos. ¡Ay!.
Si esta base de datos no está cifrada, el atacante podría robar los nombres de usuario y contraseñas de todos los usuarios que contiene. Esto incluye el nombre de usuario y las contraseñas de los administradores, lo que les da un pase de acceso total a toda la base de datos.
Los atacantes suelen intentar transmitir valores que siempre son ciertos. Otro ataque habitual consiste en inyectar código malintencionado en las propiedades que están configuradas como funciones.
Por ejemplo, MongoDB usa una función de búsqueda que toma un objeto con una propiedad llamada $where. La propiedad $where se establece en una función que debe evaluarse como verdadera o falsa. Si esta función se modifica de alguna manera por la entrada del usuario, es probable que se encuentre ahí una inyección de NoSQL.
Para obtener una visión detallada de las complejidades de la inyección de NoSQL, consulte esto Artículo de InfoQ.
Sepa por qué la inyección de NoSQL es peligrosa
La inyección de NoSQL es peligrosa sobre todo porque aún no ha recibido el escrutinio de la comunidad de seguridad que se merece.
Los impactos de la inyección de NoSQL son prácticamente los mismos que los de la inyección de SQL tradicional. Los datos pueden robarse o modificarse, las cuentas pueden verse comprometidas robando datos y, quizás lo más cruel, los datos podrían borrarse por completo si se ejecuta correctamente una orden de eliminación.
La conclusión es que MongoDB y otros motores de bases de datos NoSQL son vulnerables a los ataques. «Sin SQL» no significa que no haya inyecciones.
Afortunadamente, algunos miembros de la comunidad están tomando nota y hacer correr la voz. Es necesario que cada vez más desarrolladores se eduquen para poder proteger sus aplicaciones de productos poco conocidos que pueden convertirse en un gran quebradero de cabeza si se explotan.
Derrota la inyección de NoSQL
La inyección de NoSQL puede ser difícil de derrotar. Desafortunadamente, no existe la opción de realizar consultas parametrizadas como ocurre con la inyección de SQL. Sin embargo, no es imposible. Hay algunas opciones para ayudarte:
- Los fuzzers se pueden usar como un método para detectar vulnerabilidades. Sin embargo, como ocurre con muchas cosas en la vida, el enfoque más simple puede ser el más efectivo. En este caso, una buena revisión del código antiguo es tu mejor aliada.
- Al revisar el código, busca posibles lugares en los que la entrada del usuario pueda establecer el valor de una expresión o cambiar una función. No permitas que la entrada del usuario cambie tus consultas.
- Asegúrese de enviar la entrada del usuario a la clase que le corresponde. Si es un número, muévelo a un número, si es una cadena, convierte a una cadena y así sucesivamente.
- Nunca utilice $where o funciones de evaluación similares junto con la entrada del usuario. En la mayoría de los casos, puede solucionarlo cambiando el modelo o esquema de datos.
- Intenta usar Mangosta como su controlador de MongoDB. Mongoose le permite definir un esquema para su base de datos NoSQL. Si tú dígale a Mongoose que sus entradas son cadenas, se moldearán para formar cuerdas. Por lo tanto, los objetos introducidos por un atacante no serán tratados como objetos, sino como cadenas.
- ¡Endurece tu base de datos! Cree cuentas de usuario con pocos privilegios, maximice el tiempo de ejecución de las consultas y siga siempre las mejores prácticas de seguridad que se aplican a su organización.
Una desventaja de la facilidad de uso de las bases de datos NoSQL es la tendencia de los desarrolladores a dejarlas de lado y empezar a usarlas sin pensar en la seguridad.
Es fundamental que dedique tiempo a aprender a montar de forma segura una base de datos NoSQL y a protegerse de las inyecciones de NoSQL.
Por ejemplo, Edición MongoDB Enterprise cuenta con funciones avanzadas de control de acceso para sus documentos. Aplicar el «mínimo privilegio» puede ser una buena estrategia de defensa en profundidad (DiD) en caso de que alguien descubriera una vulnerabilidad en su aplicación.
En resumen, esto es lo que tenemos:
- Desinfecte la entrada antes de usarla en una expresión de consulta NoSQL
- Usa controladores que te ayuden, como Mongoose
- Realice revisiones de código que analicen específicamente cómo se utilizan los datos de entrada en las consultas
- Usa fuzzers y escáneres para intentar encontrar vulnerabilidades en tu código.
NoSQL no es Sin Inyecciones
Las bases de datos NoSQL están ganando popularidad rápidamente debido a sus funciones escalables y velocidad de configuración. La novedad de la tecnología puede llevar a los desarrolladores a utilizar bases de datos NoSQL sin pensar en cómo protegerlas.
Las bases de datos NoSQL pueden ser tan vulnerables como las bases de datos SQL a los ataques de inyección, así que actúe con cautela y preste atención a sus consultas. Si quieres obtener más información, consulta nuestra Recursos de aprendizaje o ponga a prueba sus habilidades con nuestro demo gratuita.
Prepárese con antelación y no tendrá que preocuparse por las inyecciones de NoSQL en sus aplicaciones. ¡Demasiado fácil!
¿Cree que está listo para localizar, identificar y corregir la inyección de NoSQL ahora mismo? Entra en la arena del código seguro, guerrero:
¡Y eso es todo para 2018! Esta será nuestra última publicación del año, pero volveremos con la próxima guía de Coders Conquer Security el 10 de enero de 2019. ¡Nos vemos pronto!

Veuillez cliquer sur le lien ci-dessous et télécharger le PDF de cette ressource.
Secure Code Warrior là pour aider votre organisation à protéger le code tout au long du cycle de vie du développement logiciel et à créer une culture où la cybersécurité est une priorité. Que vous soyez administrateur AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Veuillez consulter le rapportVeuillez réserver une démonstration.Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.
Las bases de datos NoSQL son cada vez más popular. Es difícil negar su rapidez y facilidad para tratar datos no estructurados, especialmente cuando los equipos de desarrollo trabajan con metodologías cada vez más ágiles.
Los desarrolladores necesitan tiempo para eliminar las vulnerabilidades y otros desafíos de la tecnología emergente. Solo después de que haya estado en uso durante algún tiempo en aplicaciones de producción, los problemas comienzan a salir a la superficie.
Las bases de datos NoSQL son similares. Existen riesgos clave que los desarrolladores deben conocer para poder mantener sus aplicaciones seguras. Uno de esos riesgos es la inyección de NoSQL.
Veamos qué es la inyección NoSQL, qué daño puede causar y cómo solucionarlo:
Comprenda la inyección de NoSQL
La inyección de NoSQL se debe a muchas de las mismas vulnerabilidades de inyección, como XML o Inyección SQL.
La inyección de NoSQL permite a los atacantes colocar comandos arbitrarios en una consulta de NoSQL. Esto les permite robar datos e incluso realizar cambios en la base de datos si sus privilegios son lo suficientemente altos.
Cuando una aplicación coloca datos controlados por el usuario directamente en una expresión de consulta NoSQL, estas expresiones suelen tomar funciones o tienen operadores integrados que pueden manipularse para robar o cambiar datos. Y cuando algo así se ejecuta con intención malintencionada, las consecuencias pueden ser nefastas.
Las bases de datos de MongoDB son uno de los campos de juego más populares para explotar esta vulnerabilidad. «$ne: «" 'es el operador equivalente a 1=1 en el mundo de SQL, por lo que, a modo de ejemplo, un atacante podría colocar los caracteres «$ne: «» 'en los campos de nombre de usuario y contraseña de una interfaz de usuario. Si el código es vulnerable a la inyección de NoSQL, la base de datos buscará todos los registros en los que el nombre de usuario y la contraseña no coincidan con una cadena vacía. En otras palabras: todos ellos. ¡Ay!.
Si esta base de datos no está cifrada, el atacante podría robar los nombres de usuario y contraseñas de todos los usuarios que contiene. Esto incluye el nombre de usuario y las contraseñas de los administradores, lo que les da un pase de acceso total a toda la base de datos.
Los atacantes suelen intentar transmitir valores que siempre son ciertos. Otro ataque habitual consiste en inyectar código malintencionado en las propiedades que están configuradas como funciones.
Por ejemplo, MongoDB usa una función de búsqueda que toma un objeto con una propiedad llamada $where. La propiedad $where se establece en una función que debe evaluarse como verdadera o falsa. Si esta función se modifica de alguna manera por la entrada del usuario, es probable que se encuentre ahí una inyección de NoSQL.
Para obtener una visión detallada de las complejidades de la inyección de NoSQL, consulte esto Artículo de InfoQ.
Sepa por qué la inyección de NoSQL es peligrosa
La inyección de NoSQL es peligrosa sobre todo porque aún no ha recibido el escrutinio de la comunidad de seguridad que se merece.
Los impactos de la inyección de NoSQL son prácticamente los mismos que los de la inyección de SQL tradicional. Los datos pueden robarse o modificarse, las cuentas pueden verse comprometidas robando datos y, quizás lo más cruel, los datos podrían borrarse por completo si se ejecuta correctamente una orden de eliminación.
La conclusión es que MongoDB y otros motores de bases de datos NoSQL son vulnerables a los ataques. «Sin SQL» no significa que no haya inyecciones.
Afortunadamente, algunos miembros de la comunidad están tomando nota y hacer correr la voz. Es necesario que cada vez más desarrolladores se eduquen para poder proteger sus aplicaciones de productos poco conocidos que pueden convertirse en un gran quebradero de cabeza si se explotan.
Derrota la inyección de NoSQL
La inyección de NoSQL puede ser difícil de derrotar. Desafortunadamente, no existe la opción de realizar consultas parametrizadas como ocurre con la inyección de SQL. Sin embargo, no es imposible. Hay algunas opciones para ayudarte:
- Los fuzzers se pueden usar como un método para detectar vulnerabilidades. Sin embargo, como ocurre con muchas cosas en la vida, el enfoque más simple puede ser el más efectivo. En este caso, una buena revisión del código antiguo es tu mejor aliada.
- Al revisar el código, busca posibles lugares en los que la entrada del usuario pueda establecer el valor de una expresión o cambiar una función. No permitas que la entrada del usuario cambie tus consultas.
- Asegúrese de enviar la entrada del usuario a la clase que le corresponde. Si es un número, muévelo a un número, si es una cadena, convierte a una cadena y así sucesivamente.
- Nunca utilice $where o funciones de evaluación similares junto con la entrada del usuario. En la mayoría de los casos, puede solucionarlo cambiando el modelo o esquema de datos.
- Intenta usar Mangosta como su controlador de MongoDB. Mongoose le permite definir un esquema para su base de datos NoSQL. Si tú dígale a Mongoose que sus entradas son cadenas, se moldearán para formar cuerdas. Por lo tanto, los objetos introducidos por un atacante no serán tratados como objetos, sino como cadenas.
- ¡Endurece tu base de datos! Cree cuentas de usuario con pocos privilegios, maximice el tiempo de ejecución de las consultas y siga siempre las mejores prácticas de seguridad que se aplican a su organización.
Una desventaja de la facilidad de uso de las bases de datos NoSQL es la tendencia de los desarrolladores a dejarlas de lado y empezar a usarlas sin pensar en la seguridad.
Es fundamental que dedique tiempo a aprender a montar de forma segura una base de datos NoSQL y a protegerse de las inyecciones de NoSQL.
Por ejemplo, Edición MongoDB Enterprise cuenta con funciones avanzadas de control de acceso para sus documentos. Aplicar el «mínimo privilegio» puede ser una buena estrategia de defensa en profundidad (DiD) en caso de que alguien descubriera una vulnerabilidad en su aplicación.
En resumen, esto es lo que tenemos:
- Desinfecte la entrada antes de usarla en una expresión de consulta NoSQL
- Usa controladores que te ayuden, como Mongoose
- Realice revisiones de código que analicen específicamente cómo se utilizan los datos de entrada en las consultas
- Usa fuzzers y escáneres para intentar encontrar vulnerabilidades en tu código.
NoSQL no es Sin Inyecciones
Las bases de datos NoSQL están ganando popularidad rápidamente debido a sus funciones escalables y velocidad de configuración. La novedad de la tecnología puede llevar a los desarrolladores a utilizar bases de datos NoSQL sin pensar en cómo protegerlas.
Las bases de datos NoSQL pueden ser tan vulnerables como las bases de datos SQL a los ataques de inyección, así que actúe con cautela y preste atención a sus consultas. Si quieres obtener más información, consulta nuestra Recursos de aprendizaje o ponga a prueba sus habilidades con nuestro demo gratuita.
Prepárese con antelación y no tendrá que preocuparse por las inyecciones de NoSQL en sus aplicaciones. ¡Demasiado fácil!
¿Cree que está listo para localizar, identificar y corregir la inyección de NoSQL ahora mismo? Entra en la arena del código seguro, guerrero:
¡Y eso es todo para 2018! Esta será nuestra última publicación del año, pero volveremos con la próxima guía de Coders Conquer Security el 10 de enero de 2019. ¡Nos vemos pronto!
Table des matières
Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

Secure Code Warrior là pour aider votre organisation à protéger le code tout au long du cycle de vie du développement logiciel et à créer une culture où la cybersécurité est une priorité. Que vous soyez administrateur AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Veuillez réserver une démonstration.TéléchargerRessources pour débuter
Thèmes et contenu de la formation sur le code sécurisé
Notre contenu de pointe évolue constamment afin de s'adapter au paysage changeant du développement logiciel, en tenant compte de votre rôle. Nous proposons des thèmes allant de l'IA à l'injection XQuery pour différents postes, des architectes et ingénieurs aux chefs de produit et responsables de l'assurance qualité. Découvrez un aperçu de ce que notre catalogue de contenu a à offrir par thème et par fonction.
La Chambre de commerce établit la norme en matière de sécurité à grande échelle axée sur les développeurs
La Chambre de commerce néerlandaise explique comment elle a intégré le codage sécurisé dans le développement quotidien grâce à des certifications basées sur les rôles, à l'évaluation comparative du Trust Score et à une culture de responsabilité partagée en matière de sécurité.
Modélisation des menaces avec l'IA : transformer chaque développeur en modélisateur de menaces
Vous repartirez mieux équipé pour aider les développeurs à combiner les idées et les techniques de modélisation des menaces avec les outils d'IA qu'ils utilisent déjà pour renforcer la sécurité, améliorer la collaboration et créer des logiciels plus résilients dès le départ.
Ressources pour débuter
Cybermon est de retour : les missions IA de Beat the Boss sont désormais disponibles à la demande.
Cybermon 2025 Beat the Boss est désormais disponible toute l'année chez SCW. Mettez en œuvre des défis de sécurité avancés basés sur l'IA et le LLM afin de renforcer le développement sécurisé de l'IA à grande échelle.
Explication de la loi sur la cyber-résilience : implications pour le développement de logiciels sécurisés dès leur conception
Découvrez les exigences de la loi européenne sur la cyber-résilience (CRA), à qui elle s'applique et comment les équipes d'ingénierie peuvent se préparer grâce à des pratiques de conception sécurisées, à la prévention des vulnérabilités et au développement des compétences des développeurs.
Facilitateur 1 : Critères de réussite définis et mesurables
Le catalyseur n° 1 inaugure notre série en 10 parties intitulée « Les catalyseurs de la réussite », qui montre comment relier la codification sécurisée aux résultats commerciaux, tels que la réduction des risques et la rapidité d'atteinte de la maturité du programme à long terme.




%20(1).avif)
.avif)
