
Las 10 mejores API de la serie OWASP de Coders Conquer Security: autorización a nivel de objeto roto
Las amenazas a la ciberseguridad en estos días son omnipresentes e incesantes. La situación ha empeorado tanto que tratar de mantenerse al día con ellos después de implementar los programas se ha vuelto casi imposible. Sin embargo, en esta era de DevSecOps, entrega continua y más datos que nunca, las organizaciones astutas ayudan a sus desarrolladores a convertirse en superestrellas conscientes de la seguridad, que ayudan a eliminar las vulnerabilidades más comunes antes de que lleguen a la producción. Hemos abordado vulnerabilidades web, más el nuestro Las 8 mejores infraestructuras como código errores, y ahora es el momento de familiarizarse con el próximo gran desafío de seguridad del software. ¿Estás preparado?
La próxima serie de blogs se centrará en algunos de los peores errores de seguridad relacionados con las interfaces de programación de aplicaciones (API). Son tan graves que crearon el Open Web Application Security Project (AVISPA) lista de las principales vulnerabilidades de la API. Dada la importancia de las API para las infraestructuras informáticas modernas, se trata de problemas críticos que debe mantener fuera de sus aplicaciones y programas a toda costa.
Un ejemplo perfecto de por qué es esencial usar código para reforzar la seguridad se puede encontrar en un examen de la vulnerabilidad de autorización a nivel de objeto roto. Esto ocurre cuando los programadores no definen de forma explícita qué usuarios pueden ver objetos y datos, ni proporcionan ningún tipo de verificación para ver, cambiar o realizar otras solicitudes para manipular objetos o acceder a ellos, lo que les permite modificar objetos y datos y acceder a ellos a través de los puntos finales de la API. Un punto final de la API es un punto de contacto, a menudo una URL, que se utiliza para la comunicación entre la propia API y otro sistema. La capacidad de conectividad entre las aplicaciones ha hecho que algunos de los programas más apreciados del mundo sean más populares, pero se corre el riesgo de exponer varios puntos finales si no son herméticos.
También puede ocurrir cuando los programadores olvidan o heredan propiedades de las clases principales, sin darse cuenta de que al hacerlo también se omite un proceso de verificación crítico dentro de su código. En general, se deben incluir comprobaciones de autorización a nivel de objeto para cada función que acceda a una fuente de datos mediante una entrada del usuario.
¿Cree que ya los conoce y puede encontrar, corregir y eliminar un error de control de acceso ahora mismo? Juega al desafío gamificado:
¿Cómo te fue? Si quieres mejorar tu puntuación, ¡sigue leyendo!
¿Cuáles son algunos ejemplos de vulnerabilidades de autorización a nivel de objeto incumplidas?
Las vulnerabilidades de control de acceso a nivel de objeto permiten a los atacantes realizar acciones que no se les debería permitir realizar. Esta puede ser una acción que debería reservarse a los administradores, como acceder a datos confidenciales o verlos, o destruir registros. En un entorno de alta seguridad, puede incluso significar impedir que alguien vea los registros a menos que esté específicamente autorizado para hacerlo.
Debe tener en cuenta todas las acciones posibles al definir la autorización a nivel de objeto. Por ejemplo, en la API Java Spring, un punto final con un posible problema podría tener este aspecto:
deleteOrder booleano público (ID largo) {
Pedido = OrderRepository.getOne (id);
si (pedido == nulo) {
log.info («No se encontró ningún pedido»);
devuelve falso;
}
Usuario usuario = Order.getUser ();
OrderRepository.delete (pedido);
log.info («Eliminar pedido para el usuario {}», user.getId ());
devuelve verdadero;
El punto final de la API elimina los pedidos por ID, pero no verifica si este pedido lo ha realizado el usuario que ha iniciado sesión actualmente. Esto brinda a un atacante la oportunidad de aprovechar este vacío legal y eliminar los pedidos de otros usuarios.
Para que las restricciones de acceso seguro se implementen correctamente, el código se parecería más a esto:
deleteOrder booleano público (ID largo) {
Usuario = UserService.getUserByContext ();
booleano orderExist = getUserOrders () .stream ()
.anyMatch (orden -> (Order.getId () == id));
si (OrderExist) {
OrderRepository.deleteById (id);
log.info («Eliminar pedido para el usuario {}», user.getId ());
devuelve verdadero;
} otra cosa {
log.info («No se encontró ningún pedido»);
devuelve falso;
Eliminar las vulnerabilidades de autorización a nivel de objeto roto
El código de control de acceso no tiene por qué ser demasiado complicado. En el caso de nuestro ejemplo de entorno de API Java Spring, se puede solucionar definiendo con precisión quién puede acceder a los objetos.
En primer lugar, se debe implementar un proceso de verificación para identificar quién hace la solicitud:
Usuario = UserService.getUserByContext ();
A continuación, debemos asegurarnos de que el identificador del objeto existe y pertenece al usuario que realiza la solicitud:
booleano orderExist = getUserOrders () .stream ()
.anyMatch (orden -> (Order.getId () == id));
Y por último, procedemos a borrar el objeto:
OrderRepository.deleteById (id);
Ten en cuenta que debes asegurarte de que el método de autorización de tu código se alinee con las políticas de usuario y los controles de acceso a los datos de tu organización. Para garantizar que tu código es totalmente seguro, debes realizar comprobaciones para comprobar que los usuarios con diferentes niveles de permisos tienen acceso a los datos que necesitan para realizar su trabajo, pero no pueden ver ni cambiar nada que esté restringido a ellos. Si lo hace, podría descubrir vulnerabilidades en el control de objetos que faltan y que accidentalmente se han pasado por alto.
Las principales conclusiones de estos ejemplos son definir primero todas las acciones que un usuario podría realizar con un objeto y, a continuación, añadir controles de acceso sólidos directamente al código. Y, por último, nunca confíes en las propiedades principales heredadas para hacer ese trabajo o para delegar esa autoridad en otro lugar. En su lugar, defina los permisos y las acciones de usuario en el código de forma explícita para cada tipo de objeto que necesite proteger.
Eche un vistazo a la Secure Code Warrior páginas de blog para obtener más información sobre esta vulnerabilidad y sobre cómo proteger a su organización y a sus clientes de los estragos de otras fallas de seguridad. También puedes prueba una demo de la plataforma de formación Secure Code Warrior para mantener todas sus habilidades de ciberseguridad perfeccionadas y actualizadas.


En general, se deben incluir comprobaciones de autorización a nivel de objeto para cada función que acceda a una fuente de datos mediante una entrada del usuario, y no hacerlo conlleva un gran riesgo.
Matias Madou est expert en sécurité, chercheur, directeur technique et cofondateur de Secure Code Warrior. Matias a obtenu son doctorat en sécurité des applications à l'université de Gand, en se concentrant sur les solutions d'analyse statique. Il a ensuite rejoint Fortify aux États-Unis, où il s'est rendu compte qu'il ne suffisait pas de détecter les problèmes de code sans aider les développeurs à écrire du code sécurisé. C'est ce qui l'a incité à développer des produits qui aident les développeurs, allègent le fardeau de la sécurité et dépassent les attentes des clients. Lorsqu'il n'est pas à son bureau en tant que membre de l'équipe Awesome, il aime être sur scène pour présenter des conférences, notamment RSA Conference, BlackHat et DefCon.

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.Matias Madou est expert en sécurité, chercheur, directeur technique et cofondateur de Secure Code Warrior. Matias a obtenu son doctorat en sécurité des applications à l'université de Gand, en se concentrant sur les solutions d'analyse statique. Il a ensuite rejoint Fortify aux États-Unis, où il s'est rendu compte qu'il ne suffisait pas de détecter les problèmes de code sans aider les développeurs à écrire du code sécurisé. C'est ce qui l'a incité à développer des produits qui aident les développeurs, allègent le fardeau de la sécurité et dépassent les attentes des clients. Lorsqu'il n'est pas à son bureau en tant que membre de l'équipe Awesome, il aime être sur scène pour présenter des conférences, notamment RSA Conference, BlackHat et DefCon.
Matias est un chercheur et un développeur qui possède plus de 15 ans d'expérience pratique dans le domaine de la sécurité des logiciels. Il a développé des solutions pour des entreprises telles que Fortify Software et sa propre entreprise Sensei Security. Au cours de sa carrière, Matias a dirigé de nombreux projets de recherche sur la sécurité des applications qui ont débouché sur des produits commerciaux et peut se targuer d'avoir déposé plus de 10 brevets. Lorsqu'il n'est pas à son bureau, Matias a été instructeur pour des formations avancées en matière de sécurité des applications ( courses ) et intervient régulièrement lors de conférences mondiales telles que RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec et BruCon.
Matias est titulaire d'un doctorat en ingénierie informatique de l'Université de Gand, où il a étudié la sécurité des applications par le biais de l'obscurcissement des programmes afin de dissimuler le fonctionnement interne d'une application.


Las amenazas a la ciberseguridad en estos días son omnipresentes e incesantes. La situación ha empeorado tanto que tratar de mantenerse al día con ellos después de implementar los programas se ha vuelto casi imposible. Sin embargo, en esta era de DevSecOps, entrega continua y más datos que nunca, las organizaciones astutas ayudan a sus desarrolladores a convertirse en superestrellas conscientes de la seguridad, que ayudan a eliminar las vulnerabilidades más comunes antes de que lleguen a la producción. Hemos abordado vulnerabilidades web, más el nuestro Las 8 mejores infraestructuras como código errores, y ahora es el momento de familiarizarse con el próximo gran desafío de seguridad del software. ¿Estás preparado?
La próxima serie de blogs se centrará en algunos de los peores errores de seguridad relacionados con las interfaces de programación de aplicaciones (API). Son tan graves que crearon el Open Web Application Security Project (AVISPA) lista de las principales vulnerabilidades de la API. Dada la importancia de las API para las infraestructuras informáticas modernas, se trata de problemas críticos que debe mantener fuera de sus aplicaciones y programas a toda costa.
Un ejemplo perfecto de por qué es esencial usar código para reforzar la seguridad se puede encontrar en un examen de la vulnerabilidad de autorización a nivel de objeto roto. Esto ocurre cuando los programadores no definen de forma explícita qué usuarios pueden ver objetos y datos, ni proporcionan ningún tipo de verificación para ver, cambiar o realizar otras solicitudes para manipular objetos o acceder a ellos, lo que les permite modificar objetos y datos y acceder a ellos a través de los puntos finales de la API. Un punto final de la API es un punto de contacto, a menudo una URL, que se utiliza para la comunicación entre la propia API y otro sistema. La capacidad de conectividad entre las aplicaciones ha hecho que algunos de los programas más apreciados del mundo sean más populares, pero se corre el riesgo de exponer varios puntos finales si no son herméticos.
También puede ocurrir cuando los programadores olvidan o heredan propiedades de las clases principales, sin darse cuenta de que al hacerlo también se omite un proceso de verificación crítico dentro de su código. En general, se deben incluir comprobaciones de autorización a nivel de objeto para cada función que acceda a una fuente de datos mediante una entrada del usuario.
¿Cree que ya los conoce y puede encontrar, corregir y eliminar un error de control de acceso ahora mismo? Juega al desafío gamificado:
¿Cómo te fue? Si quieres mejorar tu puntuación, ¡sigue leyendo!
¿Cuáles son algunos ejemplos de vulnerabilidades de autorización a nivel de objeto incumplidas?
Las vulnerabilidades de control de acceso a nivel de objeto permiten a los atacantes realizar acciones que no se les debería permitir realizar. Esta puede ser una acción que debería reservarse a los administradores, como acceder a datos confidenciales o verlos, o destruir registros. En un entorno de alta seguridad, puede incluso significar impedir que alguien vea los registros a menos que esté específicamente autorizado para hacerlo.
Debe tener en cuenta todas las acciones posibles al definir la autorización a nivel de objeto. Por ejemplo, en la API Java Spring, un punto final con un posible problema podría tener este aspecto:
deleteOrder booleano público (ID largo) {
Pedido = OrderRepository.getOne (id);
si (pedido == nulo) {
log.info («No se encontró ningún pedido»);
devuelve falso;
}
Usuario usuario = Order.getUser ();
OrderRepository.delete (pedido);
log.info («Eliminar pedido para el usuario {}», user.getId ());
devuelve verdadero;
El punto final de la API elimina los pedidos por ID, pero no verifica si este pedido lo ha realizado el usuario que ha iniciado sesión actualmente. Esto brinda a un atacante la oportunidad de aprovechar este vacío legal y eliminar los pedidos de otros usuarios.
Para que las restricciones de acceso seguro se implementen correctamente, el código se parecería más a esto:
deleteOrder booleano público (ID largo) {
Usuario = UserService.getUserByContext ();
booleano orderExist = getUserOrders () .stream ()
.anyMatch (orden -> (Order.getId () == id));
si (OrderExist) {
OrderRepository.deleteById (id);
log.info («Eliminar pedido para el usuario {}», user.getId ());
devuelve verdadero;
} otra cosa {
log.info («No se encontró ningún pedido»);
devuelve falso;
Eliminar las vulnerabilidades de autorización a nivel de objeto roto
El código de control de acceso no tiene por qué ser demasiado complicado. En el caso de nuestro ejemplo de entorno de API Java Spring, se puede solucionar definiendo con precisión quién puede acceder a los objetos.
En primer lugar, se debe implementar un proceso de verificación para identificar quién hace la solicitud:
Usuario = UserService.getUserByContext ();
A continuación, debemos asegurarnos de que el identificador del objeto existe y pertenece al usuario que realiza la solicitud:
booleano orderExist = getUserOrders () .stream ()
.anyMatch (orden -> (Order.getId () == id));
Y por último, procedemos a borrar el objeto:
OrderRepository.deleteById (id);
Ten en cuenta que debes asegurarte de que el método de autorización de tu código se alinee con las políticas de usuario y los controles de acceso a los datos de tu organización. Para garantizar que tu código es totalmente seguro, debes realizar comprobaciones para comprobar que los usuarios con diferentes niveles de permisos tienen acceso a los datos que necesitan para realizar su trabajo, pero no pueden ver ni cambiar nada que esté restringido a ellos. Si lo hace, podría descubrir vulnerabilidades en el control de objetos que faltan y que accidentalmente se han pasado por alto.
Las principales conclusiones de estos ejemplos son definir primero todas las acciones que un usuario podría realizar con un objeto y, a continuación, añadir controles de acceso sólidos directamente al código. Y, por último, nunca confíes en las propiedades principales heredadas para hacer ese trabajo o para delegar esa autoridad en otro lugar. En su lugar, defina los permisos y las acciones de usuario en el código de forma explícita para cada tipo de objeto que necesite proteger.
Eche un vistazo a la Secure Code Warrior páginas de blog para obtener más información sobre esta vulnerabilidad y sobre cómo proteger a su organización y a sus clientes de los estragos de otras fallas de seguridad. También puedes prueba una demo de la plataforma de formación Secure Code Warrior para mantener todas sus habilidades de ciberseguridad perfeccionadas y actualizadas.

Las amenazas a la ciberseguridad en estos días son omnipresentes e incesantes. La situación ha empeorado tanto que tratar de mantenerse al día con ellos después de implementar los programas se ha vuelto casi imposible. Sin embargo, en esta era de DevSecOps, entrega continua y más datos que nunca, las organizaciones astutas ayudan a sus desarrolladores a convertirse en superestrellas conscientes de la seguridad, que ayudan a eliminar las vulnerabilidades más comunes antes de que lleguen a la producción. Hemos abordado vulnerabilidades web, más el nuestro Las 8 mejores infraestructuras como código errores, y ahora es el momento de familiarizarse con el próximo gran desafío de seguridad del software. ¿Estás preparado?
La próxima serie de blogs se centrará en algunos de los peores errores de seguridad relacionados con las interfaces de programación de aplicaciones (API). Son tan graves que crearon el Open Web Application Security Project (AVISPA) lista de las principales vulnerabilidades de la API. Dada la importancia de las API para las infraestructuras informáticas modernas, se trata de problemas críticos que debe mantener fuera de sus aplicaciones y programas a toda costa.
Un ejemplo perfecto de por qué es esencial usar código para reforzar la seguridad se puede encontrar en un examen de la vulnerabilidad de autorización a nivel de objeto roto. Esto ocurre cuando los programadores no definen de forma explícita qué usuarios pueden ver objetos y datos, ni proporcionan ningún tipo de verificación para ver, cambiar o realizar otras solicitudes para manipular objetos o acceder a ellos, lo que les permite modificar objetos y datos y acceder a ellos a través de los puntos finales de la API. Un punto final de la API es un punto de contacto, a menudo una URL, que se utiliza para la comunicación entre la propia API y otro sistema. La capacidad de conectividad entre las aplicaciones ha hecho que algunos de los programas más apreciados del mundo sean más populares, pero se corre el riesgo de exponer varios puntos finales si no son herméticos.
También puede ocurrir cuando los programadores olvidan o heredan propiedades de las clases principales, sin darse cuenta de que al hacerlo también se omite un proceso de verificación crítico dentro de su código. En general, se deben incluir comprobaciones de autorización a nivel de objeto para cada función que acceda a una fuente de datos mediante una entrada del usuario.
¿Cree que ya los conoce y puede encontrar, corregir y eliminar un error de control de acceso ahora mismo? Juega al desafío gamificado:
¿Cómo te fue? Si quieres mejorar tu puntuación, ¡sigue leyendo!
¿Cuáles son algunos ejemplos de vulnerabilidades de autorización a nivel de objeto incumplidas?
Las vulnerabilidades de control de acceso a nivel de objeto permiten a los atacantes realizar acciones que no se les debería permitir realizar. Esta puede ser una acción que debería reservarse a los administradores, como acceder a datos confidenciales o verlos, o destruir registros. En un entorno de alta seguridad, puede incluso significar impedir que alguien vea los registros a menos que esté específicamente autorizado para hacerlo.
Debe tener en cuenta todas las acciones posibles al definir la autorización a nivel de objeto. Por ejemplo, en la API Java Spring, un punto final con un posible problema podría tener este aspecto:
deleteOrder booleano público (ID largo) {
Pedido = OrderRepository.getOne (id);
si (pedido == nulo) {
log.info («No se encontró ningún pedido»);
devuelve falso;
}
Usuario usuario = Order.getUser ();
OrderRepository.delete (pedido);
log.info («Eliminar pedido para el usuario {}», user.getId ());
devuelve verdadero;
El punto final de la API elimina los pedidos por ID, pero no verifica si este pedido lo ha realizado el usuario que ha iniciado sesión actualmente. Esto brinda a un atacante la oportunidad de aprovechar este vacío legal y eliminar los pedidos de otros usuarios.
Para que las restricciones de acceso seguro se implementen correctamente, el código se parecería más a esto:
deleteOrder booleano público (ID largo) {
Usuario = UserService.getUserByContext ();
booleano orderExist = getUserOrders () .stream ()
.anyMatch (orden -> (Order.getId () == id));
si (OrderExist) {
OrderRepository.deleteById (id);
log.info («Eliminar pedido para el usuario {}», user.getId ());
devuelve verdadero;
} otra cosa {
log.info («No se encontró ningún pedido»);
devuelve falso;
Eliminar las vulnerabilidades de autorización a nivel de objeto roto
El código de control de acceso no tiene por qué ser demasiado complicado. En el caso de nuestro ejemplo de entorno de API Java Spring, se puede solucionar definiendo con precisión quién puede acceder a los objetos.
En primer lugar, se debe implementar un proceso de verificación para identificar quién hace la solicitud:
Usuario = UserService.getUserByContext ();
A continuación, debemos asegurarnos de que el identificador del objeto existe y pertenece al usuario que realiza la solicitud:
booleano orderExist = getUserOrders () .stream ()
.anyMatch (orden -> (Order.getId () == id));
Y por último, procedemos a borrar el objeto:
OrderRepository.deleteById (id);
Ten en cuenta que debes asegurarte de que el método de autorización de tu código se alinee con las políticas de usuario y los controles de acceso a los datos de tu organización. Para garantizar que tu código es totalmente seguro, debes realizar comprobaciones para comprobar que los usuarios con diferentes niveles de permisos tienen acceso a los datos que necesitan para realizar su trabajo, pero no pueden ver ni cambiar nada que esté restringido a ellos. Si lo hace, podría descubrir vulnerabilidades en el control de objetos que faltan y que accidentalmente se han pasado por alto.
Las principales conclusiones de estos ejemplos son definir primero todas las acciones que un usuario podría realizar con un objeto y, a continuación, añadir controles de acceso sólidos directamente al código. Y, por último, nunca confíes en las propiedades principales heredadas para hacer ese trabajo o para delegar esa autoridad en otro lugar. En su lugar, defina los permisos y las acciones de usuario en el código de forma explícita para cada tipo de objeto que necesite proteger.
Eche un vistazo a la Secure Code Warrior páginas de blog para obtener más información sobre esta vulnerabilidad y sobre cómo proteger a su organización y a sus clientes de los estragos de otras fallas de seguridad. También puedes prueba una demo de la plataforma de formación Secure Code Warrior para mantener todas sus habilidades de ciberseguridad perfeccionadas y actualizadas.

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.Matias Madou est expert en sécurité, chercheur, directeur technique et cofondateur de Secure Code Warrior. Matias a obtenu son doctorat en sécurité des applications à l'université de Gand, en se concentrant sur les solutions d'analyse statique. Il a ensuite rejoint Fortify aux États-Unis, où il s'est rendu compte qu'il ne suffisait pas de détecter les problèmes de code sans aider les développeurs à écrire du code sécurisé. C'est ce qui l'a incité à développer des produits qui aident les développeurs, allègent le fardeau de la sécurité et dépassent les attentes des clients. Lorsqu'il n'est pas à son bureau en tant que membre de l'équipe Awesome, il aime être sur scène pour présenter des conférences, notamment RSA Conference, BlackHat et DefCon.
Matias est un chercheur et un développeur qui possède plus de 15 ans d'expérience pratique dans le domaine de la sécurité des logiciels. Il a développé des solutions pour des entreprises telles que Fortify Software et sa propre entreprise Sensei Security. Au cours de sa carrière, Matias a dirigé de nombreux projets de recherche sur la sécurité des applications qui ont débouché sur des produits commerciaux et peut se targuer d'avoir déposé plus de 10 brevets. Lorsqu'il n'est pas à son bureau, Matias a été instructeur pour des formations avancées en matière de sécurité des applications ( courses ) et intervient régulièrement lors de conférences mondiales telles que RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec et BruCon.
Matias est titulaire d'un doctorat en ingénierie informatique de l'Université de Gand, où il a étudié la sécurité des applications par le biais de l'obscurcissement des programmes afin de dissimuler le fonctionnement interne d'une application.
Las amenazas a la ciberseguridad en estos días son omnipresentes e incesantes. La situación ha empeorado tanto que tratar de mantenerse al día con ellos después de implementar los programas se ha vuelto casi imposible. Sin embargo, en esta era de DevSecOps, entrega continua y más datos que nunca, las organizaciones astutas ayudan a sus desarrolladores a convertirse en superestrellas conscientes de la seguridad, que ayudan a eliminar las vulnerabilidades más comunes antes de que lleguen a la producción. Hemos abordado vulnerabilidades web, más el nuestro Las 8 mejores infraestructuras como código errores, y ahora es el momento de familiarizarse con el próximo gran desafío de seguridad del software. ¿Estás preparado?
La próxima serie de blogs se centrará en algunos de los peores errores de seguridad relacionados con las interfaces de programación de aplicaciones (API). Son tan graves que crearon el Open Web Application Security Project (AVISPA) lista de las principales vulnerabilidades de la API. Dada la importancia de las API para las infraestructuras informáticas modernas, se trata de problemas críticos que debe mantener fuera de sus aplicaciones y programas a toda costa.
Un ejemplo perfecto de por qué es esencial usar código para reforzar la seguridad se puede encontrar en un examen de la vulnerabilidad de autorización a nivel de objeto roto. Esto ocurre cuando los programadores no definen de forma explícita qué usuarios pueden ver objetos y datos, ni proporcionan ningún tipo de verificación para ver, cambiar o realizar otras solicitudes para manipular objetos o acceder a ellos, lo que les permite modificar objetos y datos y acceder a ellos a través de los puntos finales de la API. Un punto final de la API es un punto de contacto, a menudo una URL, que se utiliza para la comunicación entre la propia API y otro sistema. La capacidad de conectividad entre las aplicaciones ha hecho que algunos de los programas más apreciados del mundo sean más populares, pero se corre el riesgo de exponer varios puntos finales si no son herméticos.
También puede ocurrir cuando los programadores olvidan o heredan propiedades de las clases principales, sin darse cuenta de que al hacerlo también se omite un proceso de verificación crítico dentro de su código. En general, se deben incluir comprobaciones de autorización a nivel de objeto para cada función que acceda a una fuente de datos mediante una entrada del usuario.
¿Cree que ya los conoce y puede encontrar, corregir y eliminar un error de control de acceso ahora mismo? Juega al desafío gamificado:
¿Cómo te fue? Si quieres mejorar tu puntuación, ¡sigue leyendo!
¿Cuáles son algunos ejemplos de vulnerabilidades de autorización a nivel de objeto incumplidas?
Las vulnerabilidades de control de acceso a nivel de objeto permiten a los atacantes realizar acciones que no se les debería permitir realizar. Esta puede ser una acción que debería reservarse a los administradores, como acceder a datos confidenciales o verlos, o destruir registros. En un entorno de alta seguridad, puede incluso significar impedir que alguien vea los registros a menos que esté específicamente autorizado para hacerlo.
Debe tener en cuenta todas las acciones posibles al definir la autorización a nivel de objeto. Por ejemplo, en la API Java Spring, un punto final con un posible problema podría tener este aspecto:
deleteOrder booleano público (ID largo) {
Pedido = OrderRepository.getOne (id);
si (pedido == nulo) {
log.info («No se encontró ningún pedido»);
devuelve falso;
}
Usuario usuario = Order.getUser ();
OrderRepository.delete (pedido);
log.info («Eliminar pedido para el usuario {}», user.getId ());
devuelve verdadero;
El punto final de la API elimina los pedidos por ID, pero no verifica si este pedido lo ha realizado el usuario que ha iniciado sesión actualmente. Esto brinda a un atacante la oportunidad de aprovechar este vacío legal y eliminar los pedidos de otros usuarios.
Para que las restricciones de acceso seguro se implementen correctamente, el código se parecería más a esto:
deleteOrder booleano público (ID largo) {
Usuario = UserService.getUserByContext ();
booleano orderExist = getUserOrders () .stream ()
.anyMatch (orden -> (Order.getId () == id));
si (OrderExist) {
OrderRepository.deleteById (id);
log.info («Eliminar pedido para el usuario {}», user.getId ());
devuelve verdadero;
} otra cosa {
log.info («No se encontró ningún pedido»);
devuelve falso;
Eliminar las vulnerabilidades de autorización a nivel de objeto roto
El código de control de acceso no tiene por qué ser demasiado complicado. En el caso de nuestro ejemplo de entorno de API Java Spring, se puede solucionar definiendo con precisión quién puede acceder a los objetos.
En primer lugar, se debe implementar un proceso de verificación para identificar quién hace la solicitud:
Usuario = UserService.getUserByContext ();
A continuación, debemos asegurarnos de que el identificador del objeto existe y pertenece al usuario que realiza la solicitud:
booleano orderExist = getUserOrders () .stream ()
.anyMatch (orden -> (Order.getId () == id));
Y por último, procedemos a borrar el objeto:
OrderRepository.deleteById (id);
Ten en cuenta que debes asegurarte de que el método de autorización de tu código se alinee con las políticas de usuario y los controles de acceso a los datos de tu organización. Para garantizar que tu código es totalmente seguro, debes realizar comprobaciones para comprobar que los usuarios con diferentes niveles de permisos tienen acceso a los datos que necesitan para realizar su trabajo, pero no pueden ver ni cambiar nada que esté restringido a ellos. Si lo hace, podría descubrir vulnerabilidades en el control de objetos que faltan y que accidentalmente se han pasado por alto.
Las principales conclusiones de estos ejemplos son definir primero todas las acciones que un usuario podría realizar con un objeto y, a continuación, añadir controles de acceso sólidos directamente al código. Y, por último, nunca confíes en las propiedades principales heredadas para hacer ese trabajo o para delegar esa autoridad en otro lugar. En su lugar, defina los permisos y las acciones de usuario en el código de forma explícita para cada tipo de objeto que necesite proteger.
Eche un vistazo a la Secure Code Warrior páginas de blog para obtener más información sobre esta vulnerabilidad y sobre cómo proteger a su organización y a sus clientes de los estragos de otras fallas de seguridad. También puedes prueba una demo de la plataforma de formación Secure Code Warrior para mantener todas sus habilidades de ciberseguridad perfeccionadas y actualizadas.
Table des matières
Matias Madou est expert en sécurité, chercheur, directeur technique et cofondateur de Secure Code Warrior. Matias a obtenu son doctorat en sécurité des applications à l'université de Gand, en se concentrant sur les solutions d'analyse statique. Il a ensuite rejoint Fortify aux États-Unis, où il s'est rendu compte qu'il ne suffisait pas de détecter les problèmes de code sans aider les développeurs à écrire du code sécurisé. C'est ce qui l'a incité à développer des produits qui aident les développeurs, allègent le fardeau de la sécurité et dépassent les attentes des clients. Lorsqu'il n'est pas à son bureau en tant que membre de l'équipe Awesome, il aime être sur scène pour présenter des conférences, notamment RSA Conference, BlackHat et DefCon.

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)
