
Presentamos Missions: la siguiente fase de la formación en seguridad centrada en los desarrolladores
Desde 2015, hemos estado involucrando a desarrolladores de todo el mundo con un enfoque proactivo y positivo de la seguridad, ayudándoles a desarrollar las habilidades necesarias para proteger su código, reducir las modificaciones y, con suerte, ver al equipo de seguridad como algo más que una policía divertida.
Seguimos comprometidos a trabajar codo a codo con los desarrolladores para proteger el código de toda la galaxia, pero es hora de cambiar las cosas y llevar a nuestros desarrolladores empedernidos y preocupados por la seguridad al siguiente nivel.
Nos complace anunciar el lanzamiento de una nueva función en la plataforma Secure Code Warrior: Missions. Esta nueva categoría de desafíos es la siguiente fase de la formación en seguridad para desarrolladores, ya que permite a los usuarios dejar de recordar los conocimientos de seguridad para aplicarlos en un entorno de simulación real. Este enfoque de microaprendizaje escalonado desarrolla habilidades de programación potentes y seguras que son relevantes para el trabajo y son mucho más entretenidas que ver (verticalmente) un sinfín de vídeos de formación al fondo de una jornada laboral.
Nuestra primera misión pública y jugable es una simulación de la violación de Unicode en GitHub. Puede parecer engañosamente simple, pero es una vulnerabilidad muy inteligente que es divertido analizar. El investigador de seguridad 0xsha hizo un estudio de caso completo sobre cómo se puede usar este mismo error para explotar Django mediante transformaciones de casos, al tiempo que revela cómo el comportamiento de la vulnerabilidad puede cambiar entre los lenguajes de programación. Hay mucho más por descubrir sobre este problema de seguridad, y nuestra misión es un buen punto de partida.
La colisión frontal de GitHub (mapeo de casos)
En un entrada de blog del 28 de noviembre de 2019, el grupo de investigación de seguridad Wisdom informó sobre un error de seguridad que descubrieron en GitHub. Describieron cómo podían utilizar una colisión de casos en Unicode para provocar que un correo electrónico para restablecer la contraseña se enviara a una dirección de correo electrónico equivocada (o, si pensábamos como la de un atacante, a una dirección de correo electrónico elegida por el autor de la amenaza).
Si bien una vulnerabilidad de seguridad nunca es una buena noticia, los investigadores de seguridad que usan un sombrero blanco sí brindan cierta clemencia (sin mencionar la oportunidad de evitar un desastre) si descubren errores potencialmente explotables en una base de código. Sus blogs e informes suelen ser una lectura excelente, y es genial aprender sobre una nueva vulnerabilidad y su funcionamiento.
Para pasar al siguiente nivel de destreza en la codificación segura, resulta inmensamente poderoso no solo encontrar las vulnerabilidades comunes (especialmente las nuevas e interesantes; todos sabemos que los actores de amenazas malintencionadas buscarán un terreno fértil para desenterrar algunos datos con estas nuevas técnicas), sino también disponer de un entorno seguro y práctico en el que entender cómo explotarlas.
Así que, hagamos precisamente eso. Sigue leyendo para descubrir cómo se puede aprovechar una colisión cartográfica de casos en Unicode, cómo se ve en tiempo real y cómo puedes adoptar la mentalidad de un investigador de seguridad y probarlo por ti mismo.
¿Estás listo para enfrentarte a Case Mapping Collision ahora mismo? Da un paso adelante:

Unicode: complejo, infinitamente personalizable y más que solo emojis
Es posible que «Unicode» no esté en el léxico de la persona promedio, pero es muy probable que la mayoría de las personas lo usen de alguna forma todos los días. Si has utilizado un navegador web, algún software de Microsoft o has enviado un emoji, significa que has estado familiarizado con Unicode de cerca. Es un estándar para la codificación y el manejo consistentes del texto de la mayoría de los sistemas de escritura del mundo, lo que garantiza que todos puedan expresarse (digitalmente) utilizando un único conjunto de caracteres. Tal como están las cosas, hay más de 143 000 caracteres, por lo que no importa si utilizas el islandés, el turco sin puntos o cualquier otro método intermedio.
Debido al gran volumen de caracteres que Unicode tiene en su conjunto, en muchos casos se necesita una forma de convertir los caracteres en otro carácter «equivalente». Por ejemplo, parece sensato que si conviertes una cadena Unicode sin puntos a ASCII, simplemente se convierta en una «i», ¿verdad?
Un gran volumen de codificación de caracteres conlleva un gran potencial de desastre.
Una colisión de mapeo de casos en Unicode es una lógica empresarial un defecto y, en esencia, puede llevar a la apropiación de cuentas que no estén protegidas por la 2FA. Para ilustrar la vulnerabilidad en cuestión, veamos un ejemplo de este error en un fragmento de código real:
app.post (/api/ResetPassword, function (req, res) {
var correo electrónico = req.body.email;
db.get (SELECCIONE ID de fila como identificador, correo electrónico DE los usuarios DONDE correo electrónico =? , [email.toUppercase ()],
(err, usuario) => {
si (err) {
console.error (err.message);
res.status (400) .send ();
} otra cosa {
Generar contraseña temporal (tempPassword) => {
AccountRepository.resetPassword (user.id, tempPassword, () => {
Messenger.SendPasswordResetEmail (correo electrónico, contraseña temporal);
res.status (204) .send ();
});
});
}
});
});
La lógica es más o menos así:
- Acepta la dirección de correo electrónico proporcionada por el usuario y la pone en mayúscula para mantener la coherencia
- Comprueba si la dirección de correo electrónico ya existe en la base de datos
- Si lo hace, establecerá una nueva contraseña temporal (por cierto, esta no es la mejor práctica). En su lugar, usa un enlace con un token que permita restablecer la contraseña)
- A continuación, envía un correo electrónico a la dirección obtenida en el paso 1, que contiene la contraseña temporal (esta es una práctica muy mala, por muchas razones). ¡Ay!)
Veamos qué ocurre con el ejemplo que se muestra en el publicación de blog original, donde un usuario solicita el restablecimiento de la contraseña del correo electrónico John@GıtHub.com (observe la i sin puntos en turco):
- La lógica convierte John@Gıthub.com en JOHN@GITHUB.COM
- Lo busca en la base de datos y encuentra al usuario JOHN@GITHUB.COM
- Genera una nueva contraseña y la envía a John@Gıthub.com
Tenga en cuenta que este proceso termina enviando el correo electrónico altamente confidencial a una dirección de correo electrónico incorrecta. ¡Uy!
Cómo expulsar a este demonio de Unicode
El aspecto interesante de esta vulnerabilidad específica es que hay varios factores que la hacen vulnerable:
- El comportamiento real de conversión de Unicode
- La lógica que determina la dirección de correo electrónico que se va a utilizar, es decir, la dirección de correo electrónico proporcionada por el usuario, en lugar de la que ya existe en la base de datos.
En teoría, puedes solucionar este problema específico de dos maneras, como se identifica en la entrada del blog de Wisdom:
- Convierte el correo electrónico a ASCII con Conversión de Punycode
- Utilice la dirección de correo electrónico de la base de datos, en lugar de la proporcionada por el usuario
Cuando se trata de reforzar el software, es una buena idea no dejar nada al azar y emplear tantos niveles de defensa como sea posible. Por lo que sabemos, es posible que haya otras formas de aprovechar esta codificación, pero aún no las conocemos. Todo lo que puedas hacer para reducir el riesgo y cerrar las ventanas que podrían quedar abiertas para un atacante es valioso.
¿Estás listo para probar esto por ti mismo?
La mayoría de los desarrolladores saben que los datos comprometidos son perjudiciales para las empresas. Sin embargo, los ingenieros conscientes de la seguridad son un poderoso antídoto contra las crecientes vulnerabilidades, infracciones y problemas de ciberseguridad.
Es hora de llevar tus habilidades de codificación segura y concientización al siguiente nivel. Experimenta esta vulnerabilidad de GitHub en una simulación segura e inmersiva, en la que podrás ver el impacto del código incorrecto tanto en el contexto del frontend como del backend. Los atacantes tienen una ventaja, así que igualemos el terreno de juego y apliquemos las habilidades reales con un contragolpe de sombrero blanco.



Nos complace anunciar el lanzamiento de una nueva función en la plataforma Secure Code Warrior: Missions. Esta nueva categoría de desafíos es la siguiente fase de la formación en seguridad para desarrolladores, ya que permite a los usuarios dejar de recordar los conocimientos de seguridad para aplicarlos en un entorno de simulación real.
마티아스 마두는 보안 전문가, 연구원, CTO이자 Secure Code Warrior 의 공동 설립자입니다. 마티아스는 겐트 대학교에서 정적 분석 솔루션에 중점을 둔 애플리케이션 보안 박사 학위를 취득했습니다. 이후 미국의 Fortify에 입사하여 개발자의 보안 코드 작성을 지원하지 않고 코드 문제만 탐지하는 것만으로는 충분하지 않다는 것을 깨달았습니다. 이를 계기로 개발자를 지원하고 보안에 대한 부담을 덜어주며 고객의 기대를 뛰어넘는 제품을 개발하게 되었습니다. 팀 어썸의 일원으로 책상에 앉아 있지 않을 때는 RSA 컨퍼런스, 블랙햇, 데프콘 등의 컨퍼런스에서 무대에 올라 발표하는 것을 즐깁니다.

Secure Code Warrior 귀사의 조직이 소프트웨어 개발 라이프사이클 전반에 걸쳐 코드를 보호하고 사이버보안을 최우선으로 하는 문화를 조성하도록 Secure Code Warrior . AppSec 관리자, 개발자, CISO 또는 보안 관련 담당자라면 누구든, 저희는 귀사의 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.
데모 예약하기마티아스 마두는 보안 전문가, 연구원, CTO이자 Secure Code Warrior 의 공동 설립자입니다. 마티아스는 겐트 대학교에서 정적 분석 솔루션에 중점을 둔 애플리케이션 보안 박사 학위를 취득했습니다. 이후 미국의 Fortify에 입사하여 개발자의 보안 코드 작성을 지원하지 않고 코드 문제만 탐지하는 것만으로는 충분하지 않다는 것을 깨달았습니다. 이를 계기로 개발자를 지원하고 보안에 대한 부담을 덜어주며 고객의 기대를 뛰어넘는 제품을 개발하게 되었습니다. 팀 어썸의 일원으로 책상에 앉아 있지 않을 때는 RSA 컨퍼런스, 블랙햇, 데프콘 등의 컨퍼런스에서 무대에 올라 발표하는 것을 즐깁니다.
Matias는 15년 이상의 소프트웨어 보안 경험을 가진 연구원이자 개발자입니다. 그는 Fortify 소프트웨어와 같은 회사와 자신의 회사를 위한 솔루션을 개발했습니다. Sensei 안전. 그의 경력을 통해, Matias는 상용 제품으로 주도하고 자신의 벨트 아래 10 개 이상의 특허를 자랑하는 여러 응용 프로그램 보안 연구 프로젝트를 주도하고있다. 마티아스는 책상에서 떨어져 있을 때 고급 응용 프로그램 보안 교육을 위한 강사로 일했습니다. courses RSA 컨퍼런스, 블랙 햇, 데프콘, BSIMM, OWASP AppSec 및 브루콘을 포함한 글로벌 컨퍼런스에서 정기적으로 강연합니다.
마티아스는 겐트 대학교에서 컴퓨터 공학 박사 학위를 취득했으며, 프로그램 난독화를 통해 응용 프로그램 보안을 연구하여 응용 프로그램의 내부 작동을 숨깁니다.


Desde 2015, hemos estado involucrando a desarrolladores de todo el mundo con un enfoque proactivo y positivo de la seguridad, ayudándoles a desarrollar las habilidades necesarias para proteger su código, reducir las modificaciones y, con suerte, ver al equipo de seguridad como algo más que una policía divertida.
Seguimos comprometidos a trabajar codo a codo con los desarrolladores para proteger el código de toda la galaxia, pero es hora de cambiar las cosas y llevar a nuestros desarrolladores empedernidos y preocupados por la seguridad al siguiente nivel.
Nos complace anunciar el lanzamiento de una nueva función en la plataforma Secure Code Warrior: Missions. Esta nueva categoría de desafíos es la siguiente fase de la formación en seguridad para desarrolladores, ya que permite a los usuarios dejar de recordar los conocimientos de seguridad para aplicarlos en un entorno de simulación real. Este enfoque de microaprendizaje escalonado desarrolla habilidades de programación potentes y seguras que son relevantes para el trabajo y son mucho más entretenidas que ver (verticalmente) un sinfín de vídeos de formación al fondo de una jornada laboral.
Nuestra primera misión pública y jugable es una simulación de la violación de Unicode en GitHub. Puede parecer engañosamente simple, pero es una vulnerabilidad muy inteligente que es divertido analizar. El investigador de seguridad 0xsha hizo un estudio de caso completo sobre cómo se puede usar este mismo error para explotar Django mediante transformaciones de casos, al tiempo que revela cómo el comportamiento de la vulnerabilidad puede cambiar entre los lenguajes de programación. Hay mucho más por descubrir sobre este problema de seguridad, y nuestra misión es un buen punto de partida.
La colisión frontal de GitHub (mapeo de casos)
En un entrada de blog del 28 de noviembre de 2019, el grupo de investigación de seguridad Wisdom informó sobre un error de seguridad que descubrieron en GitHub. Describieron cómo podían utilizar una colisión de casos en Unicode para provocar que un correo electrónico para restablecer la contraseña se enviara a una dirección de correo electrónico equivocada (o, si pensábamos como la de un atacante, a una dirección de correo electrónico elegida por el autor de la amenaza).
Si bien una vulnerabilidad de seguridad nunca es una buena noticia, los investigadores de seguridad que usan un sombrero blanco sí brindan cierta clemencia (sin mencionar la oportunidad de evitar un desastre) si descubren errores potencialmente explotables en una base de código. Sus blogs e informes suelen ser una lectura excelente, y es genial aprender sobre una nueva vulnerabilidad y su funcionamiento.
Para pasar al siguiente nivel de destreza en la codificación segura, resulta inmensamente poderoso no solo encontrar las vulnerabilidades comunes (especialmente las nuevas e interesantes; todos sabemos que los actores de amenazas malintencionadas buscarán un terreno fértil para desenterrar algunos datos con estas nuevas técnicas), sino también disponer de un entorno seguro y práctico en el que entender cómo explotarlas.
Así que, hagamos precisamente eso. Sigue leyendo para descubrir cómo se puede aprovechar una colisión cartográfica de casos en Unicode, cómo se ve en tiempo real y cómo puedes adoptar la mentalidad de un investigador de seguridad y probarlo por ti mismo.
¿Estás listo para enfrentarte a Case Mapping Collision ahora mismo? Da un paso adelante:

Unicode: complejo, infinitamente personalizable y más que solo emojis
Es posible que «Unicode» no esté en el léxico de la persona promedio, pero es muy probable que la mayoría de las personas lo usen de alguna forma todos los días. Si has utilizado un navegador web, algún software de Microsoft o has enviado un emoji, significa que has estado familiarizado con Unicode de cerca. Es un estándar para la codificación y el manejo consistentes del texto de la mayoría de los sistemas de escritura del mundo, lo que garantiza que todos puedan expresarse (digitalmente) utilizando un único conjunto de caracteres. Tal como están las cosas, hay más de 143 000 caracteres, por lo que no importa si utilizas el islandés, el turco sin puntos o cualquier otro método intermedio.
Debido al gran volumen de caracteres que Unicode tiene en su conjunto, en muchos casos se necesita una forma de convertir los caracteres en otro carácter «equivalente». Por ejemplo, parece sensato que si conviertes una cadena Unicode sin puntos a ASCII, simplemente se convierta en una «i», ¿verdad?
Un gran volumen de codificación de caracteres conlleva un gran potencial de desastre.
Una colisión de mapeo de casos en Unicode es una lógica empresarial un defecto y, en esencia, puede llevar a la apropiación de cuentas que no estén protegidas por la 2FA. Para ilustrar la vulnerabilidad en cuestión, veamos un ejemplo de este error en un fragmento de código real:
app.post (/api/ResetPassword, function (req, res) {
var correo electrónico = req.body.email;
db.get (SELECCIONE ID de fila como identificador, correo electrónico DE los usuarios DONDE correo electrónico =? , [email.toUppercase ()],
(err, usuario) => {
si (err) {
console.error (err.message);
res.status (400) .send ();
} otra cosa {
Generar contraseña temporal (tempPassword) => {
AccountRepository.resetPassword (user.id, tempPassword, () => {
Messenger.SendPasswordResetEmail (correo electrónico, contraseña temporal);
res.status (204) .send ();
});
});
}
});
});
La lógica es más o menos así:
- Acepta la dirección de correo electrónico proporcionada por el usuario y la pone en mayúscula para mantener la coherencia
- Comprueba si la dirección de correo electrónico ya existe en la base de datos
- Si lo hace, establecerá una nueva contraseña temporal (por cierto, esta no es la mejor práctica). En su lugar, usa un enlace con un token que permita restablecer la contraseña)
- A continuación, envía un correo electrónico a la dirección obtenida en el paso 1, que contiene la contraseña temporal (esta es una práctica muy mala, por muchas razones). ¡Ay!)
Veamos qué ocurre con el ejemplo que se muestra en el publicación de blog original, donde un usuario solicita el restablecimiento de la contraseña del correo electrónico John@GıtHub.com (observe la i sin puntos en turco):
- La lógica convierte John@Gıthub.com en JOHN@GITHUB.COM
- Lo busca en la base de datos y encuentra al usuario JOHN@GITHUB.COM
- Genera una nueva contraseña y la envía a John@Gıthub.com
Tenga en cuenta que este proceso termina enviando el correo electrónico altamente confidencial a una dirección de correo electrónico incorrecta. ¡Uy!
Cómo expulsar a este demonio de Unicode
El aspecto interesante de esta vulnerabilidad específica es que hay varios factores que la hacen vulnerable:
- El comportamiento real de conversión de Unicode
- La lógica que determina la dirección de correo electrónico que se va a utilizar, es decir, la dirección de correo electrónico proporcionada por el usuario, en lugar de la que ya existe en la base de datos.
En teoría, puedes solucionar este problema específico de dos maneras, como se identifica en la entrada del blog de Wisdom:
- Convierte el correo electrónico a ASCII con Conversión de Punycode
- Utilice la dirección de correo electrónico de la base de datos, en lugar de la proporcionada por el usuario
Cuando se trata de reforzar el software, es una buena idea no dejar nada al azar y emplear tantos niveles de defensa como sea posible. Por lo que sabemos, es posible que haya otras formas de aprovechar esta codificación, pero aún no las conocemos. Todo lo que puedas hacer para reducir el riesgo y cerrar las ventanas que podrían quedar abiertas para un atacante es valioso.
¿Estás listo para probar esto por ti mismo?
La mayoría de los desarrolladores saben que los datos comprometidos son perjudiciales para las empresas. Sin embargo, los ingenieros conscientes de la seguridad son un poderoso antídoto contra las crecientes vulnerabilidades, infracciones y problemas de ciberseguridad.
Es hora de llevar tus habilidades de codificación segura y concientización al siguiente nivel. Experimenta esta vulnerabilidad de GitHub en una simulación segura e inmersiva, en la que podrás ver el impacto del código incorrecto tanto en el contexto del frontend como del backend. Los atacantes tienen una ventaja, así que igualemos el terreno de juego y apliquemos las habilidades reales con un contragolpe de sombrero blanco.


Desde 2015, hemos estado involucrando a desarrolladores de todo el mundo con un enfoque proactivo y positivo de la seguridad, ayudándoles a desarrollar las habilidades necesarias para proteger su código, reducir las modificaciones y, con suerte, ver al equipo de seguridad como algo más que una policía divertida.
Seguimos comprometidos a trabajar codo a codo con los desarrolladores para proteger el código de toda la galaxia, pero es hora de cambiar las cosas y llevar a nuestros desarrolladores empedernidos y preocupados por la seguridad al siguiente nivel.
Nos complace anunciar el lanzamiento de una nueva función en la plataforma Secure Code Warrior: Missions. Esta nueva categoría de desafíos es la siguiente fase de la formación en seguridad para desarrolladores, ya que permite a los usuarios dejar de recordar los conocimientos de seguridad para aplicarlos en un entorno de simulación real. Este enfoque de microaprendizaje escalonado desarrolla habilidades de programación potentes y seguras que son relevantes para el trabajo y son mucho más entretenidas que ver (verticalmente) un sinfín de vídeos de formación al fondo de una jornada laboral.
Nuestra primera misión pública y jugable es una simulación de la violación de Unicode en GitHub. Puede parecer engañosamente simple, pero es una vulnerabilidad muy inteligente que es divertido analizar. El investigador de seguridad 0xsha hizo un estudio de caso completo sobre cómo se puede usar este mismo error para explotar Django mediante transformaciones de casos, al tiempo que revela cómo el comportamiento de la vulnerabilidad puede cambiar entre los lenguajes de programación. Hay mucho más por descubrir sobre este problema de seguridad, y nuestra misión es un buen punto de partida.
La colisión frontal de GitHub (mapeo de casos)
En un entrada de blog del 28 de noviembre de 2019, el grupo de investigación de seguridad Wisdom informó sobre un error de seguridad que descubrieron en GitHub. Describieron cómo podían utilizar una colisión de casos en Unicode para provocar que un correo electrónico para restablecer la contraseña se enviara a una dirección de correo electrónico equivocada (o, si pensábamos como la de un atacante, a una dirección de correo electrónico elegida por el autor de la amenaza).
Si bien una vulnerabilidad de seguridad nunca es una buena noticia, los investigadores de seguridad que usan un sombrero blanco sí brindan cierta clemencia (sin mencionar la oportunidad de evitar un desastre) si descubren errores potencialmente explotables en una base de código. Sus blogs e informes suelen ser una lectura excelente, y es genial aprender sobre una nueva vulnerabilidad y su funcionamiento.
Para pasar al siguiente nivel de destreza en la codificación segura, resulta inmensamente poderoso no solo encontrar las vulnerabilidades comunes (especialmente las nuevas e interesantes; todos sabemos que los actores de amenazas malintencionadas buscarán un terreno fértil para desenterrar algunos datos con estas nuevas técnicas), sino también disponer de un entorno seguro y práctico en el que entender cómo explotarlas.
Así que, hagamos precisamente eso. Sigue leyendo para descubrir cómo se puede aprovechar una colisión cartográfica de casos en Unicode, cómo se ve en tiempo real y cómo puedes adoptar la mentalidad de un investigador de seguridad y probarlo por ti mismo.
¿Estás listo para enfrentarte a Case Mapping Collision ahora mismo? Da un paso adelante:

Unicode: complejo, infinitamente personalizable y más que solo emojis
Es posible que «Unicode» no esté en el léxico de la persona promedio, pero es muy probable que la mayoría de las personas lo usen de alguna forma todos los días. Si has utilizado un navegador web, algún software de Microsoft o has enviado un emoji, significa que has estado familiarizado con Unicode de cerca. Es un estándar para la codificación y el manejo consistentes del texto de la mayoría de los sistemas de escritura del mundo, lo que garantiza que todos puedan expresarse (digitalmente) utilizando un único conjunto de caracteres. Tal como están las cosas, hay más de 143 000 caracteres, por lo que no importa si utilizas el islandés, el turco sin puntos o cualquier otro método intermedio.
Debido al gran volumen de caracteres que Unicode tiene en su conjunto, en muchos casos se necesita una forma de convertir los caracteres en otro carácter «equivalente». Por ejemplo, parece sensato que si conviertes una cadena Unicode sin puntos a ASCII, simplemente se convierta en una «i», ¿verdad?
Un gran volumen de codificación de caracteres conlleva un gran potencial de desastre.
Una colisión de mapeo de casos en Unicode es una lógica empresarial un defecto y, en esencia, puede llevar a la apropiación de cuentas que no estén protegidas por la 2FA. Para ilustrar la vulnerabilidad en cuestión, veamos un ejemplo de este error en un fragmento de código real:
app.post (/api/ResetPassword, function (req, res) {
var correo electrónico = req.body.email;
db.get (SELECCIONE ID de fila como identificador, correo electrónico DE los usuarios DONDE correo electrónico =? , [email.toUppercase ()],
(err, usuario) => {
si (err) {
console.error (err.message);
res.status (400) .send ();
} otra cosa {
Generar contraseña temporal (tempPassword) => {
AccountRepository.resetPassword (user.id, tempPassword, () => {
Messenger.SendPasswordResetEmail (correo electrónico, contraseña temporal);
res.status (204) .send ();
});
});
}
});
});
La lógica es más o menos así:
- Acepta la dirección de correo electrónico proporcionada por el usuario y la pone en mayúscula para mantener la coherencia
- Comprueba si la dirección de correo electrónico ya existe en la base de datos
- Si lo hace, establecerá una nueva contraseña temporal (por cierto, esta no es la mejor práctica). En su lugar, usa un enlace con un token que permita restablecer la contraseña)
- A continuación, envía un correo electrónico a la dirección obtenida en el paso 1, que contiene la contraseña temporal (esta es una práctica muy mala, por muchas razones). ¡Ay!)
Veamos qué ocurre con el ejemplo que se muestra en el publicación de blog original, donde un usuario solicita el restablecimiento de la contraseña del correo electrónico John@GıtHub.com (observe la i sin puntos en turco):
- La lógica convierte John@Gıthub.com en JOHN@GITHUB.COM
- Lo busca en la base de datos y encuentra al usuario JOHN@GITHUB.COM
- Genera una nueva contraseña y la envía a John@Gıthub.com
Tenga en cuenta que este proceso termina enviando el correo electrónico altamente confidencial a una dirección de correo electrónico incorrecta. ¡Uy!
Cómo expulsar a este demonio de Unicode
El aspecto interesante de esta vulnerabilidad específica es que hay varios factores que la hacen vulnerable:
- El comportamiento real de conversión de Unicode
- La lógica que determina la dirección de correo electrónico que se va a utilizar, es decir, la dirección de correo electrónico proporcionada por el usuario, en lugar de la que ya existe en la base de datos.
En teoría, puedes solucionar este problema específico de dos maneras, como se identifica en la entrada del blog de Wisdom:
- Convierte el correo electrónico a ASCII con Conversión de Punycode
- Utilice la dirección de correo electrónico de la base de datos, en lugar de la proporcionada por el usuario
Cuando se trata de reforzar el software, es una buena idea no dejar nada al azar y emplear tantos niveles de defensa como sea posible. Por lo que sabemos, es posible que haya otras formas de aprovechar esta codificación, pero aún no las conocemos. Todo lo que puedas hacer para reducir el riesgo y cerrar las ventanas que podrían quedar abiertas para un atacante es valioso.
¿Estás listo para probar esto por ti mismo?
La mayoría de los desarrolladores saben que los datos comprometidos son perjudiciales para las empresas. Sin embargo, los ingenieros conscientes de la seguridad son un poderoso antídoto contra las crecientes vulnerabilidades, infracciones y problemas de ciberseguridad.
Es hora de llevar tus habilidades de codificación segura y concientización al siguiente nivel. Experimenta esta vulnerabilidad de GitHub en una simulación segura e inmersiva, en la que podrás ver el impacto del código incorrecto tanto en el contexto del frontend como del backend. Los atacantes tienen una ventaja, así que igualemos el terreno de juego y apliquemos las habilidades reales con un contragolpe de sombrero blanco.


아래 링크를 클릭하고 이 자료의 PDF를 다운로드하세요.
Secure Code Warrior 귀사의 조직이 소프트웨어 개발 라이프사이클 전반에 걸쳐 코드를 보호하고 사이버보안을 최우선으로 하는 문화를 조성하도록 Secure Code Warrior . AppSec 관리자, 개발자, CISO 또는 보안 관련 담당자라면 누구든, 저희는 귀사의 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.
보고서 보기데모 예약하기마티아스 마두는 보안 전문가, 연구원, CTO이자 Secure Code Warrior 의 공동 설립자입니다. 마티아스는 겐트 대학교에서 정적 분석 솔루션에 중점을 둔 애플리케이션 보안 박사 학위를 취득했습니다. 이후 미국의 Fortify에 입사하여 개발자의 보안 코드 작성을 지원하지 않고 코드 문제만 탐지하는 것만으로는 충분하지 않다는 것을 깨달았습니다. 이를 계기로 개발자를 지원하고 보안에 대한 부담을 덜어주며 고객의 기대를 뛰어넘는 제품을 개발하게 되었습니다. 팀 어썸의 일원으로 책상에 앉아 있지 않을 때는 RSA 컨퍼런스, 블랙햇, 데프콘 등의 컨퍼런스에서 무대에 올라 발표하는 것을 즐깁니다.
Matias는 15년 이상의 소프트웨어 보안 경험을 가진 연구원이자 개발자입니다. 그는 Fortify 소프트웨어와 같은 회사와 자신의 회사를 위한 솔루션을 개발했습니다. Sensei 안전. 그의 경력을 통해, Matias는 상용 제품으로 주도하고 자신의 벨트 아래 10 개 이상의 특허를 자랑하는 여러 응용 프로그램 보안 연구 프로젝트를 주도하고있다. 마티아스는 책상에서 떨어져 있을 때 고급 응용 프로그램 보안 교육을 위한 강사로 일했습니다. courses RSA 컨퍼런스, 블랙 햇, 데프콘, BSIMM, OWASP AppSec 및 브루콘을 포함한 글로벌 컨퍼런스에서 정기적으로 강연합니다.
마티아스는 겐트 대학교에서 컴퓨터 공학 박사 학위를 취득했으며, 프로그램 난독화를 통해 응용 프로그램 보안을 연구하여 응용 프로그램의 내부 작동을 숨깁니다.
Desde 2015, hemos estado involucrando a desarrolladores de todo el mundo con un enfoque proactivo y positivo de la seguridad, ayudándoles a desarrollar las habilidades necesarias para proteger su código, reducir las modificaciones y, con suerte, ver al equipo de seguridad como algo más que una policía divertida.
Seguimos comprometidos a trabajar codo a codo con los desarrolladores para proteger el código de toda la galaxia, pero es hora de cambiar las cosas y llevar a nuestros desarrolladores empedernidos y preocupados por la seguridad al siguiente nivel.
Nos complace anunciar el lanzamiento de una nueva función en la plataforma Secure Code Warrior: Missions. Esta nueva categoría de desafíos es la siguiente fase de la formación en seguridad para desarrolladores, ya que permite a los usuarios dejar de recordar los conocimientos de seguridad para aplicarlos en un entorno de simulación real. Este enfoque de microaprendizaje escalonado desarrolla habilidades de programación potentes y seguras que son relevantes para el trabajo y son mucho más entretenidas que ver (verticalmente) un sinfín de vídeos de formación al fondo de una jornada laboral.
Nuestra primera misión pública y jugable es una simulación de la violación de Unicode en GitHub. Puede parecer engañosamente simple, pero es una vulnerabilidad muy inteligente que es divertido analizar. El investigador de seguridad 0xsha hizo un estudio de caso completo sobre cómo se puede usar este mismo error para explotar Django mediante transformaciones de casos, al tiempo que revela cómo el comportamiento de la vulnerabilidad puede cambiar entre los lenguajes de programación. Hay mucho más por descubrir sobre este problema de seguridad, y nuestra misión es un buen punto de partida.
La colisión frontal de GitHub (mapeo de casos)
En un entrada de blog del 28 de noviembre de 2019, el grupo de investigación de seguridad Wisdom informó sobre un error de seguridad que descubrieron en GitHub. Describieron cómo podían utilizar una colisión de casos en Unicode para provocar que un correo electrónico para restablecer la contraseña se enviara a una dirección de correo electrónico equivocada (o, si pensábamos como la de un atacante, a una dirección de correo electrónico elegida por el autor de la amenaza).
Si bien una vulnerabilidad de seguridad nunca es una buena noticia, los investigadores de seguridad que usan un sombrero blanco sí brindan cierta clemencia (sin mencionar la oportunidad de evitar un desastre) si descubren errores potencialmente explotables en una base de código. Sus blogs e informes suelen ser una lectura excelente, y es genial aprender sobre una nueva vulnerabilidad y su funcionamiento.
Para pasar al siguiente nivel de destreza en la codificación segura, resulta inmensamente poderoso no solo encontrar las vulnerabilidades comunes (especialmente las nuevas e interesantes; todos sabemos que los actores de amenazas malintencionadas buscarán un terreno fértil para desenterrar algunos datos con estas nuevas técnicas), sino también disponer de un entorno seguro y práctico en el que entender cómo explotarlas.
Así que, hagamos precisamente eso. Sigue leyendo para descubrir cómo se puede aprovechar una colisión cartográfica de casos en Unicode, cómo se ve en tiempo real y cómo puedes adoptar la mentalidad de un investigador de seguridad y probarlo por ti mismo.
¿Estás listo para enfrentarte a Case Mapping Collision ahora mismo? Da un paso adelante:

Unicode: complejo, infinitamente personalizable y más que solo emojis
Es posible que «Unicode» no esté en el léxico de la persona promedio, pero es muy probable que la mayoría de las personas lo usen de alguna forma todos los días. Si has utilizado un navegador web, algún software de Microsoft o has enviado un emoji, significa que has estado familiarizado con Unicode de cerca. Es un estándar para la codificación y el manejo consistentes del texto de la mayoría de los sistemas de escritura del mundo, lo que garantiza que todos puedan expresarse (digitalmente) utilizando un único conjunto de caracteres. Tal como están las cosas, hay más de 143 000 caracteres, por lo que no importa si utilizas el islandés, el turco sin puntos o cualquier otro método intermedio.
Debido al gran volumen de caracteres que Unicode tiene en su conjunto, en muchos casos se necesita una forma de convertir los caracteres en otro carácter «equivalente». Por ejemplo, parece sensato que si conviertes una cadena Unicode sin puntos a ASCII, simplemente se convierta en una «i», ¿verdad?
Un gran volumen de codificación de caracteres conlleva un gran potencial de desastre.
Una colisión de mapeo de casos en Unicode es una lógica empresarial un defecto y, en esencia, puede llevar a la apropiación de cuentas que no estén protegidas por la 2FA. Para ilustrar la vulnerabilidad en cuestión, veamos un ejemplo de este error en un fragmento de código real:
app.post (/api/ResetPassword, function (req, res) {
var correo electrónico = req.body.email;
db.get (SELECCIONE ID de fila como identificador, correo electrónico DE los usuarios DONDE correo electrónico =? , [email.toUppercase ()],
(err, usuario) => {
si (err) {
console.error (err.message);
res.status (400) .send ();
} otra cosa {
Generar contraseña temporal (tempPassword) => {
AccountRepository.resetPassword (user.id, tempPassword, () => {
Messenger.SendPasswordResetEmail (correo electrónico, contraseña temporal);
res.status (204) .send ();
});
});
}
});
});
La lógica es más o menos así:
- Acepta la dirección de correo electrónico proporcionada por el usuario y la pone en mayúscula para mantener la coherencia
- Comprueba si la dirección de correo electrónico ya existe en la base de datos
- Si lo hace, establecerá una nueva contraseña temporal (por cierto, esta no es la mejor práctica). En su lugar, usa un enlace con un token que permita restablecer la contraseña)
- A continuación, envía un correo electrónico a la dirección obtenida en el paso 1, que contiene la contraseña temporal (esta es una práctica muy mala, por muchas razones). ¡Ay!)
Veamos qué ocurre con el ejemplo que se muestra en el publicación de blog original, donde un usuario solicita el restablecimiento de la contraseña del correo electrónico John@GıtHub.com (observe la i sin puntos en turco):
- La lógica convierte John@Gıthub.com en JOHN@GITHUB.COM
- Lo busca en la base de datos y encuentra al usuario JOHN@GITHUB.COM
- Genera una nueva contraseña y la envía a John@Gıthub.com
Tenga en cuenta que este proceso termina enviando el correo electrónico altamente confidencial a una dirección de correo electrónico incorrecta. ¡Uy!
Cómo expulsar a este demonio de Unicode
El aspecto interesante de esta vulnerabilidad específica es que hay varios factores que la hacen vulnerable:
- El comportamiento real de conversión de Unicode
- La lógica que determina la dirección de correo electrónico que se va a utilizar, es decir, la dirección de correo electrónico proporcionada por el usuario, en lugar de la que ya existe en la base de datos.
En teoría, puedes solucionar este problema específico de dos maneras, como se identifica en la entrada del blog de Wisdom:
- Convierte el correo electrónico a ASCII con Conversión de Punycode
- Utilice la dirección de correo electrónico de la base de datos, en lugar de la proporcionada por el usuario
Cuando se trata de reforzar el software, es una buena idea no dejar nada al azar y emplear tantos niveles de defensa como sea posible. Por lo que sabemos, es posible que haya otras formas de aprovechar esta codificación, pero aún no las conocemos. Todo lo que puedas hacer para reducir el riesgo y cerrar las ventanas que podrían quedar abiertas para un atacante es valioso.
¿Estás listo para probar esto por ti mismo?
La mayoría de los desarrolladores saben que los datos comprometidos son perjudiciales para las empresas. Sin embargo, los ingenieros conscientes de la seguridad son un poderoso antídoto contra las crecientes vulnerabilidades, infracciones y problemas de ciberseguridad.
Es hora de llevar tus habilidades de codificación segura y concientización al siguiente nivel. Experimenta esta vulnerabilidad de GitHub en una simulación segura e inmersiva, en la que podrás ver el impacto del código incorrecto tanto en el contexto del frontend como del backend. Los atacantes tienen una ventaja, así que igualemos el terreno de juego y apliquemos las habilidades reales con un contragolpe de sombrero blanco.

목차
마티아스 마두는 보안 전문가, 연구원, CTO이자 Secure Code Warrior 의 공동 설립자입니다. 마티아스는 겐트 대학교에서 정적 분석 솔루션에 중점을 둔 애플리케이션 보안 박사 학위를 취득했습니다. 이후 미국의 Fortify에 입사하여 개발자의 보안 코드 작성을 지원하지 않고 코드 문제만 탐지하는 것만으로는 충분하지 않다는 것을 깨달았습니다. 이를 계기로 개발자를 지원하고 보안에 대한 부담을 덜어주며 고객의 기대를 뛰어넘는 제품을 개발하게 되었습니다. 팀 어썸의 일원으로 책상에 앉아 있지 않을 때는 RSA 컨퍼런스, 블랙햇, 데프콘 등의 컨퍼런스에서 무대에 올라 발표하는 것을 즐깁니다.

Secure Code Warrior 귀사의 조직이 소프트웨어 개발 라이프사이클 전반에 걸쳐 코드를 보호하고 사이버보안을 최우선으로 하는 문화를 조성하도록 Secure Code Warrior . AppSec 관리자, 개발자, CISO 또는 보안 관련 담당자라면 누구든, 저희는 귀사의 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.
데모 예약하기다운로드



%20(1).avif)
.avif)
