
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 ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

Secure Code Warrior hier, um Ihrem Unternehmen dabei zu helfen, den Code während des gesamten Lebenszyklus der Softwareentwicklung zu schützen und eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie AppSec-Administrator, Entwickler, CISO oder in einem anderen Bereich der Sicherheit tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Eine Vorführung buchenJaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von 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!

Klicken Sie auf den untenstehenden Link und laden Sie die PDF-Datei dieser Ressource herunter.
Secure Code Warrior hier, um Ihrem Unternehmen dabei zu helfen, den Code während des gesamten Lebenszyklus der Softwareentwicklung zu schützen und eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie AppSec-Administrator, Entwickler, CISO oder in einem anderen Bereich der Sicherheit tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Bericht anzeigenEine Vorführung buchenJaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von 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!
Inhaltsverzeichnis
Jaap Karan Singh ist ein Secure Coding Evangelist, Chief Singh und Mitbegründer von Secure Code Warrior.

Secure Code Warrior hier, um Ihrem Unternehmen dabei zu helfen, den Code während des gesamten Lebenszyklus der Softwareentwicklung zu schützen und eine Kultur zu schaffen, in der Cybersicherheit oberste Priorität hat. Ganz gleich, ob Sie AppSec-Administrator, Entwickler, CISO oder in einem anderen Bereich der Sicherheit tätig sind – wir können Ihrem Unternehmen dabei helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Eine Vorführung buchenHerunterladenRessourcen für den Einstieg
Themen und Inhalte der Schulung zum Thema sicherer Code
Unsere branchenführenden Inhalte werden ständig weiterentwickelt, um sich an die sich wandelnde Landschaft der Softwareentwicklung anzupassen und dabei Ihre Rolle zu berücksichtigen. Es werden Themen angeboten, die von KI bis hin zu XQuery-Injektion reichen und sich an verschiedene Positionen richten, von Architekten und Ingenieuren bis hin zu Produktmanagern und Qualitätskontrolleuren. Verschaffen Sie sich einen Überblick über unser Angebot an Inhalten nach Thema und Funktion.
Die Kamer van Koophandel setzt Maßstäbe für entwicklergesteuerte Sicherheit in großem Maßstab
Die Kamer van Koophandel berichtet, wie sie sicheres Codieren durch rollenbasierte Zertifizierungen, Trust Score-Benchmarking und eine Kultur der gemeinsamen Verantwortung für Sicherheit in die tägliche Entwicklungsarbeit integriert hat.
Bedrohungsmodellierung mit KI: So wird jeder Entwickler zum Bedrohungsmodellierer
Sie werden besser gerüstet sein, um Entwicklern dabei zu helfen, Ideen und Techniken zur Bedrohungsmodellierung mit den KI-Tools zu kombinieren, die sie bereits verwenden, um die Sicherheit zu erhöhen, die Zusammenarbeit zu verbessern und von Anfang an widerstandsfähigere Software zu entwickeln.
Ressourcen für den Einstieg
Cybermon ist zurück: Die KI-Missionen von Beat the Boss sind jetzt auf Abruf verfügbar.
Cybermon 2025 Beat the Boss ist jetzt das ganze Jahr über bei SCW verfügbar. Implementieren Sie fortschrittliche KI- und LLM-Sicherheitsherausforderungen, um die sichere Entwicklung von KI in großem Maßstab zu stärken.
Erläuterung des Gesetzes zur Cyberresilienz: Was bedeutet es für die Entwicklung sicherer Software?
Entdecken Sie, was das EU-Gesetz zur Cyberresilienz (CRA) verlangt, für wen es gilt und wie sich Ingenieurteams mit sicheren Designpraktiken, der Vermeidung von Schwachstellen und der Entwicklung von Fähigkeiten für Entwickler darauf vorbereiten können.
SCW feiert sein 11-jähriges Bestehen: eine Lektion in Echtzeit über Anpassungsfähigkeit und kontinuierliche Verbesserung
2025 war ein großartiges Jahr für KI, Cybersicherheit und SCW. Ich gehe mit ruhiger Zuversicht und dem Optimismus, den nur harte und lohnende Arbeit mit sich bringen kann, auf das Jahr 2026 zu.




%20(1).avif)
.avif)
