
Présentation des missions : la prochaine phase de la formation à la sécurité centrée sur les développeurs
Depuis 2015, nous impliquons les développeurs du monde entier en adoptant une approche proactive et positive de la sécurité, en les aidant à développer les compétences nécessaires pour sécuriser leur code, à réduire le nombre de retouches et de corrections et, espérons-le, à considérer l'équipe de sécurité comme autre chose qu'une police amusante.
Nous sommes toujours déterminés à soutenir les développeurs lorsqu'ils sécurisent le code à travers la galaxie, mais il est temps de changer les choses et de faire passer nos développeurs aguerris et soucieux de la sécurité au niveau supérieur.
Nous sommes ravis d'annoncer la sortie d'une toute nouvelle fonctionnalité sur la plateforme Secure Code Warrior : Missions. Cette toute nouvelle catégorie de défis constitue la prochaine étape de la formation à la sécurité pour les développeurs, qui permettra aux utilisateurs de passer du rappel des connaissances en matière de sécurité à leur application dans un environnement de simulation réel. Cette approche de microlearning échafaudée permet de développer de puissantes compétences de codage sécurisé qui sont pertinentes pour le poste et bien plus divertissantes que de regarder (verticalement) d'interminables vidéos de formation en arrière-plan d'une journée de travail.
Notre première mission publique jouable est une simulation de la faille Unicode de GitHub. Cela peut sembler d'une simplicité trompeuse, mais c'est une vulnérabilité vraiment intelligente qu'il est amusant de décortiquer. Le chercheur en sécurité 0xsha a fait un étude de cas complète sur la façon dont ce même bogue peut être utilisé pour exploiter Django par le biais de transformations de cas, tout en révélant comment le comportement de la vulnérabilité peut changer entre les langages de programmation. Il y a encore beaucoup à découvrir sur ce problème de sécurité, et notre mission est un excellent point de départ.
Collision frontale (cartographie des cas) sur GitHub
Dans un billet de blog à partir du 28 novembre 2019, le groupe de recherche en sécurité Wisdom a signalé un bogue de sécurité découvert sur GitHub. Ils ont expliqué comment ils avaient pu utiliser une collision de mappage de cas en Unicode pour déclencher l'envoi d'un e-mail de réinitialisation du mot de passe à la mauvaise adresse e-mail (ou, si nous pensions à un attaquant, une adresse e-mail choisie par l'acteur de la menace).
Bien qu'une faille de sécurité ne soit jamais une bonne nouvelle, les chercheurs en sécurité qui n'hésitent pas à faire preuve de clémence, sans parler de la possibilité d'éviter un désastre, s'ils découvrent des erreurs potentiellement exploitables dans une base de code. Leurs blogs et leurs rapports sont souvent une excellente lecture, et c'est plutôt cool d'en savoir plus sur une nouvelle vulnérabilité et sur son fonctionnement.
Pour passer à un niveau supérieur de prouesse en matière de codage sécurisé, il est extrêmement puissant non seulement de détecter les vulnérabilités courantes (en particulier les nouvelles vulnérabilités intéressantes, nous savons tous que les acteurs malveillants rechercheront un terrain fertile pour extraire des données grâce à ces nouvelles techniques), mais également de disposer d'un environnement sûr et pratique pour comprendre comment les exploiter également.
Alors, c'est exactement ce que nous faisons. Poursuivez votre lecture pour découvrir comment une collision de mappage de cas en Unicode peut être exploitée, à quoi elle ressemble en temps réel et comment vous pouvez adopter l'état d'esprit d'un chercheur en sécurité et l'essayer vous-même.
Êtes-vous prêt à affronter une collision liée à la cartographie des cas dès maintenant ? Passez à la vitesse supérieure :

Unicode : complexe, personnalisable à l'infini et bien plus que de simples émojis
Le mot « Unicode » ne figure peut-être pas dans le lexique de la personne moyenne, mais il y a de fortes chances que la plupart des gens l'utilisent sous une forme ou une autre tous les jours. Si vous avez utilisé un navigateur Web, un logiciel Microsoft ou envoyé un emoji, c'est que vous avez utilisé Unicode de près. Il s'agit d'une norme pour l'encodage et la gestion cohérents du texte provenant de la plupart des systèmes d'écriture du monde, garantissant que tout le monde peut s'exprimer (numériquement) en utilisant un seul jeu de caractères. Dans l'état actuel des choses, il y a plus de 143 000 caractères, donc vous êtes couvert, que vous utilisiez l'islandais, le turc sans points, ou quelque chose entre les deux.
En raison du volume considérable de caractères que contient Unicode, un moyen de convertir les caractères en un autre caractère « équivalent » est nécessaire dans de nombreux cas. Par exemple, il semble raisonnable que si vous convertissez une chaîne Unicode sans point en ASCII, elle devienne simplement un « i », n'est-ce pas ?
Un grand volume de codage de caractères comporte un grand risque de catastrophe.
Une collision de mappage de cas en Unicode est une logique métier Une faille, et à la base, peut conduire à une prise de contrôle de comptes non protégés par la 2FA. Pour illustrer la vulnérabilité en question, examinons un exemple de ce bogue dans un extrait de code réel :
app.post (/api/ResetPassword, function (req, res) {
var email = req.body.email ;
db.get (SÉLECTIONNEZ Rowid comme identifiant, e-mail DES utilisateurs OÙ e-mail = ? , [email.toUpperCase ()],
(erreur, utilisateur) => {
si (erreur) {
console.error (err.message) ;
res.status (400) .send () ;
} autre {
Générer un mot de passe temporaire ((TempPassword) => {
AccountRepository.ResetPassword (user.id, tempPassword, () => {
messenger.SendPasswordResetEmail (e-mail, TempPassword) ;
res.status (204) .send () ;
}) ;
}) ;
}
}) ;
}) ;
La logique est la suivante :
- Il accepte l'adresse e-mail fournie par l'utilisateur et la met en majuscule pour des raisons de cohérence
- Il vérifie si l'adresse e-mail existe déjà dans la base de données
- Si c'est le cas, il définira un nouveau mot de passe temporaire (ce n'est d'ailleurs pas la meilleure pratique). Utilisez plutôt un lien avec un jeton qui permet de réinitialiser le mot de passe)
- Il envoie ensuite un e-mail à l'adresse récupérée à l'étape 1, contenant le mot de passe temporaire (c'est une très mauvaise pratique, pour de nombreuses raisons). Argh.)
Voyons ce qui se passe avec l'exemple fourni dans le billet de blog original, où un utilisateur demande la réinitialisation du mot de passe pour l'e-mail John@GıtHub.com (notez le i turc sans point) :
- La logique convertit John@Gıthub.com en JOHN@GITHUB.COM
- Il recherche cela dans la base de données et trouve l'utilisateur JOHN@GITHUB.COM
- Il génère un nouveau mot de passe et l'envoie à John@Gıthub.com
Notez que ce processus finit par envoyer l'e-mail hautement sensible à la mauvaise adresse e-mail. Oups !
Comment chasser ce démon Unicode
L'aspect intéressant de cette vulnérabilité spécifique est que de multiples facteurs la rendent vulnérable :
- Le comportement réel du casting Unicode
- La logique qui détermine l'adresse e-mail à utiliser, c'est-à-dire l'adresse e-mail fournie par l'utilisateur, au lieu de celle qui existe déjà dans la base de données.
En théorie, vous pouvez résoudre ce problème spécifique de deux manières, comme indiqué dans le billet de blog de Wisdom :
- Convertissez l'e-mail en ASCII avec Conversion de code Punycode
- Utilisez l'adresse e-mail de la base de données, plutôt que celle fournie par l'utilisateur
Lorsqu'il s'agit de renforcer les logiciels, c'est une bonne idée de ne rien laisser au hasard en utilisant autant de couches de défense que possible. Pour autant que nous sachions, il existe peut-être d'autres moyens d'exploiter cet encodage, mais nous ne les connaissons tout simplement pas encore. Tout ce que vous pouvez faire pour réduire les risques et fermer les fenêtres qui pourraient être laissées ouvertes à un attaquant est précieux.
Prêt à l'essayer par vous-même ?
La plupart des développeurs savent que la compromission de données est néfaste pour les entreprises. Cependant, les ingénieurs sensibilisés à la sécurité constituent un puissant antidote contre les vulnérabilités, les violations et les problèmes de cybersécurité croissants.
Il est temps de faire passer vos compétences en matière de codage sécurisé et de sensibilisation au niveau supérieur. Découvrez cette vulnérabilité de GitHub dans une simulation immersive et sécurisée, qui vous permet de voir l'impact d'un code incorrect dans les contextes frontend et backend. Les attaquants ont un avantage, alors égalisons les règles du jeu et appliquons de véritables compétences avec un contre-coup de chapeau blanc.



Nous sommes ravis d'annoncer la sortie d'une toute nouvelle fonctionnalité sur la plateforme Secure Code Warrior : Missions. Cette toute nouvelle catégorie de défis constitue la prochaine étape de la formation à la sécurité pour les développeurs, qui permettra aux utilisateurs de passer du rappel des connaissances en matière de sécurité à leur application dans un environnement de simulation réel.
Matias Madou, Ph.D. es experto en seguridad, investigador y CTO y cofundador de Secure Code Warrior. Matias obtuvo su doctorado en Seguridad de Aplicaciones en la Universidad de Gante, centrándose en soluciones de análisis estático. Más tarde se incorporó a Fortify en EE.UU., donde se dio cuenta de que no bastaba con detectar problemas de código sin ayudar a los desarrolladores a escribir código seguro. Esto le inspiró para desarrollar productos que ayuden a los desarrolladores, alivien la carga de la seguridad y superen las expectativas de los clientes. Cuando no está en su escritorio como parte de Team Awesome, le gusta estar en el escenario presentando en conferencias como RSA Conference, BlackHat y DefCon.

Secure Code Warrior aquí para ayudar a su organización a proteger el código a lo largo de todo el ciclo de desarrollo de software y a crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es responsable de la seguridad de las aplicaciones, desarrollador, responsable de la seguridad informática o cualquier otra persona involucrada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código no seguro.
Reserve una demostraciónMatias Madou, Ph.D. es experto en seguridad, investigador y CTO y cofundador de Secure Code Warrior. Matias obtuvo su doctorado en Seguridad de Aplicaciones en la Universidad de Gante, centrándose en soluciones de análisis estático. Más tarde se incorporó a Fortify en EE.UU., donde se dio cuenta de que no bastaba con detectar problemas de código sin ayudar a los desarrolladores a escribir código seguro. Esto le inspiró para desarrollar productos que ayuden a los desarrolladores, alivien la carga de la seguridad y superen las expectativas de los clientes. Cuando no está en su escritorio como parte de Team Awesome, le gusta estar en el escenario presentando en conferencias como RSA Conference, BlackHat y DefCon.
Matías es un investigador y desarrollador con más de 15 años de experiencia práctica en seguridad de software. Ha desarrollado soluciones para empresas como Fortify Software y su propia empresa Sensei Security. A lo largo de su carrera, Matías ha dirigido múltiples proyectos de investigación sobre seguridad de aplicaciones que han dado lugar a productos comerciales y cuenta con más de 10 patentes en su haber. Cuando está lejos de su escritorio, Matias ha servido como instructor para la formación de seguridad de aplicaciones avanzadas courses y regularmente habla en conferencias mundiales como la Conferencia RSA, Black Hat, DefCon, BSIMM, OWASP AppSec y BruCon.
Matías es doctor en Ingeniería Informática por la Universidad de Gante, donde estudió la seguridad de las aplicaciones mediante la ofuscación de programas para ocultar el funcionamiento interno de una aplicación.


Depuis 2015, nous impliquons les développeurs du monde entier en adoptant une approche proactive et positive de la sécurité, en les aidant à développer les compétences nécessaires pour sécuriser leur code, à réduire le nombre de retouches et de corrections et, espérons-le, à considérer l'équipe de sécurité comme autre chose qu'une police amusante.
Nous sommes toujours déterminés à soutenir les développeurs lorsqu'ils sécurisent le code à travers la galaxie, mais il est temps de changer les choses et de faire passer nos développeurs aguerris et soucieux de la sécurité au niveau supérieur.
Nous sommes ravis d'annoncer la sortie d'une toute nouvelle fonctionnalité sur la plateforme Secure Code Warrior : Missions. Cette toute nouvelle catégorie de défis constitue la prochaine étape de la formation à la sécurité pour les développeurs, qui permettra aux utilisateurs de passer du rappel des connaissances en matière de sécurité à leur application dans un environnement de simulation réel. Cette approche de microlearning échafaudée permet de développer de puissantes compétences de codage sécurisé qui sont pertinentes pour le poste et bien plus divertissantes que de regarder (verticalement) d'interminables vidéos de formation en arrière-plan d'une journée de travail.
Notre première mission publique jouable est une simulation de la faille Unicode de GitHub. Cela peut sembler d'une simplicité trompeuse, mais c'est une vulnérabilité vraiment intelligente qu'il est amusant de décortiquer. Le chercheur en sécurité 0xsha a fait un étude de cas complète sur la façon dont ce même bogue peut être utilisé pour exploiter Django par le biais de transformations de cas, tout en révélant comment le comportement de la vulnérabilité peut changer entre les langages de programmation. Il y a encore beaucoup à découvrir sur ce problème de sécurité, et notre mission est un excellent point de départ.
Collision frontale (cartographie des cas) sur GitHub
Dans un billet de blog à partir du 28 novembre 2019, le groupe de recherche en sécurité Wisdom a signalé un bogue de sécurité découvert sur GitHub. Ils ont expliqué comment ils avaient pu utiliser une collision de mappage de cas en Unicode pour déclencher l'envoi d'un e-mail de réinitialisation du mot de passe à la mauvaise adresse e-mail (ou, si nous pensions à un attaquant, une adresse e-mail choisie par l'acteur de la menace).
Bien qu'une faille de sécurité ne soit jamais une bonne nouvelle, les chercheurs en sécurité qui n'hésitent pas à faire preuve de clémence, sans parler de la possibilité d'éviter un désastre, s'ils découvrent des erreurs potentiellement exploitables dans une base de code. Leurs blogs et leurs rapports sont souvent une excellente lecture, et c'est plutôt cool d'en savoir plus sur une nouvelle vulnérabilité et sur son fonctionnement.
Pour passer à un niveau supérieur de prouesse en matière de codage sécurisé, il est extrêmement puissant non seulement de détecter les vulnérabilités courantes (en particulier les nouvelles vulnérabilités intéressantes, nous savons tous que les acteurs malveillants rechercheront un terrain fertile pour extraire des données grâce à ces nouvelles techniques), mais également de disposer d'un environnement sûr et pratique pour comprendre comment les exploiter également.
Alors, c'est exactement ce que nous faisons. Poursuivez votre lecture pour découvrir comment une collision de mappage de cas en Unicode peut être exploitée, à quoi elle ressemble en temps réel et comment vous pouvez adopter l'état d'esprit d'un chercheur en sécurité et l'essayer vous-même.
Êtes-vous prêt à affronter une collision liée à la cartographie des cas dès maintenant ? Passez à la vitesse supérieure :

Unicode : complexe, personnalisable à l'infini et bien plus que de simples émojis
Le mot « Unicode » ne figure peut-être pas dans le lexique de la personne moyenne, mais il y a de fortes chances que la plupart des gens l'utilisent sous une forme ou une autre tous les jours. Si vous avez utilisé un navigateur Web, un logiciel Microsoft ou envoyé un emoji, c'est que vous avez utilisé Unicode de près. Il s'agit d'une norme pour l'encodage et la gestion cohérents du texte provenant de la plupart des systèmes d'écriture du monde, garantissant que tout le monde peut s'exprimer (numériquement) en utilisant un seul jeu de caractères. Dans l'état actuel des choses, il y a plus de 143 000 caractères, donc vous êtes couvert, que vous utilisiez l'islandais, le turc sans points, ou quelque chose entre les deux.
En raison du volume considérable de caractères que contient Unicode, un moyen de convertir les caractères en un autre caractère « équivalent » est nécessaire dans de nombreux cas. Par exemple, il semble raisonnable que si vous convertissez une chaîne Unicode sans point en ASCII, elle devienne simplement un « i », n'est-ce pas ?
Un grand volume de codage de caractères comporte un grand risque de catastrophe.
Une collision de mappage de cas en Unicode est une logique métier Une faille, et à la base, peut conduire à une prise de contrôle de comptes non protégés par la 2FA. Pour illustrer la vulnérabilité en question, examinons un exemple de ce bogue dans un extrait de code réel :
app.post (/api/ResetPassword, function (req, res) {
var email = req.body.email ;
db.get (SÉLECTIONNEZ Rowid comme identifiant, e-mail DES utilisateurs OÙ e-mail = ? , [email.toUpperCase ()],
(erreur, utilisateur) => {
si (erreur) {
console.error (err.message) ;
res.status (400) .send () ;
} autre {
Générer un mot de passe temporaire ((TempPassword) => {
AccountRepository.ResetPassword (user.id, tempPassword, () => {
messenger.SendPasswordResetEmail (e-mail, TempPassword) ;
res.status (204) .send () ;
}) ;
}) ;
}
}) ;
}) ;
La logique est la suivante :
- Il accepte l'adresse e-mail fournie par l'utilisateur et la met en majuscule pour des raisons de cohérence
- Il vérifie si l'adresse e-mail existe déjà dans la base de données
- Si c'est le cas, il définira un nouveau mot de passe temporaire (ce n'est d'ailleurs pas la meilleure pratique). Utilisez plutôt un lien avec un jeton qui permet de réinitialiser le mot de passe)
- Il envoie ensuite un e-mail à l'adresse récupérée à l'étape 1, contenant le mot de passe temporaire (c'est une très mauvaise pratique, pour de nombreuses raisons). Argh.)
Voyons ce qui se passe avec l'exemple fourni dans le billet de blog original, où un utilisateur demande la réinitialisation du mot de passe pour l'e-mail John@GıtHub.com (notez le i turc sans point) :
- La logique convertit John@Gıthub.com en JOHN@GITHUB.COM
- Il recherche cela dans la base de données et trouve l'utilisateur JOHN@GITHUB.COM
- Il génère un nouveau mot de passe et l'envoie à John@Gıthub.com
Notez que ce processus finit par envoyer l'e-mail hautement sensible à la mauvaise adresse e-mail. Oups !
Comment chasser ce démon Unicode
L'aspect intéressant de cette vulnérabilité spécifique est que de multiples facteurs la rendent vulnérable :
- Le comportement réel du casting Unicode
- La logique qui détermine l'adresse e-mail à utiliser, c'est-à-dire l'adresse e-mail fournie par l'utilisateur, au lieu de celle qui existe déjà dans la base de données.
En théorie, vous pouvez résoudre ce problème spécifique de deux manières, comme indiqué dans le billet de blog de Wisdom :
- Convertissez l'e-mail en ASCII avec Conversion de code Punycode
- Utilisez l'adresse e-mail de la base de données, plutôt que celle fournie par l'utilisateur
Lorsqu'il s'agit de renforcer les logiciels, c'est une bonne idée de ne rien laisser au hasard en utilisant autant de couches de défense que possible. Pour autant que nous sachions, il existe peut-être d'autres moyens d'exploiter cet encodage, mais nous ne les connaissons tout simplement pas encore. Tout ce que vous pouvez faire pour réduire les risques et fermer les fenêtres qui pourraient être laissées ouvertes à un attaquant est précieux.
Prêt à l'essayer par vous-même ?
La plupart des développeurs savent que la compromission de données est néfaste pour les entreprises. Cependant, les ingénieurs sensibilisés à la sécurité constituent un puissant antidote contre les vulnérabilités, les violations et les problèmes de cybersécurité croissants.
Il est temps de faire passer vos compétences en matière de codage sécurisé et de sensibilisation au niveau supérieur. Découvrez cette vulnérabilité de GitHub dans une simulation immersive et sécurisée, qui vous permet de voir l'impact d'un code incorrect dans les contextes frontend et backend. Les attaquants ont un avantage, alors égalisons les règles du jeu et appliquons de véritables compétences avec un contre-coup de chapeau blanc.


Depuis 2015, nous impliquons les développeurs du monde entier en adoptant une approche proactive et positive de la sécurité, en les aidant à développer les compétences nécessaires pour sécuriser leur code, à réduire le nombre de retouches et de corrections et, espérons-le, à considérer l'équipe de sécurité comme autre chose qu'une police amusante.
Nous sommes toujours déterminés à soutenir les développeurs lorsqu'ils sécurisent le code à travers la galaxie, mais il est temps de changer les choses et de faire passer nos développeurs aguerris et soucieux de la sécurité au niveau supérieur.
Nous sommes ravis d'annoncer la sortie d'une toute nouvelle fonctionnalité sur la plateforme Secure Code Warrior : Missions. Cette toute nouvelle catégorie de défis constitue la prochaine étape de la formation à la sécurité pour les développeurs, qui permettra aux utilisateurs de passer du rappel des connaissances en matière de sécurité à leur application dans un environnement de simulation réel. Cette approche de microlearning échafaudée permet de développer de puissantes compétences de codage sécurisé qui sont pertinentes pour le poste et bien plus divertissantes que de regarder (verticalement) d'interminables vidéos de formation en arrière-plan d'une journée de travail.
Notre première mission publique jouable est une simulation de la faille Unicode de GitHub. Cela peut sembler d'une simplicité trompeuse, mais c'est une vulnérabilité vraiment intelligente qu'il est amusant de décortiquer. Le chercheur en sécurité 0xsha a fait un étude de cas complète sur la façon dont ce même bogue peut être utilisé pour exploiter Django par le biais de transformations de cas, tout en révélant comment le comportement de la vulnérabilité peut changer entre les langages de programmation. Il y a encore beaucoup à découvrir sur ce problème de sécurité, et notre mission est un excellent point de départ.
Collision frontale (cartographie des cas) sur GitHub
Dans un billet de blog à partir du 28 novembre 2019, le groupe de recherche en sécurité Wisdom a signalé un bogue de sécurité découvert sur GitHub. Ils ont expliqué comment ils avaient pu utiliser une collision de mappage de cas en Unicode pour déclencher l'envoi d'un e-mail de réinitialisation du mot de passe à la mauvaise adresse e-mail (ou, si nous pensions à un attaquant, une adresse e-mail choisie par l'acteur de la menace).
Bien qu'une faille de sécurité ne soit jamais une bonne nouvelle, les chercheurs en sécurité qui n'hésitent pas à faire preuve de clémence, sans parler de la possibilité d'éviter un désastre, s'ils découvrent des erreurs potentiellement exploitables dans une base de code. Leurs blogs et leurs rapports sont souvent une excellente lecture, et c'est plutôt cool d'en savoir plus sur une nouvelle vulnérabilité et sur son fonctionnement.
Pour passer à un niveau supérieur de prouesse en matière de codage sécurisé, il est extrêmement puissant non seulement de détecter les vulnérabilités courantes (en particulier les nouvelles vulnérabilités intéressantes, nous savons tous que les acteurs malveillants rechercheront un terrain fertile pour extraire des données grâce à ces nouvelles techniques), mais également de disposer d'un environnement sûr et pratique pour comprendre comment les exploiter également.
Alors, c'est exactement ce que nous faisons. Poursuivez votre lecture pour découvrir comment une collision de mappage de cas en Unicode peut être exploitée, à quoi elle ressemble en temps réel et comment vous pouvez adopter l'état d'esprit d'un chercheur en sécurité et l'essayer vous-même.
Êtes-vous prêt à affronter une collision liée à la cartographie des cas dès maintenant ? Passez à la vitesse supérieure :

Unicode : complexe, personnalisable à l'infini et bien plus que de simples émojis
Le mot « Unicode » ne figure peut-être pas dans le lexique de la personne moyenne, mais il y a de fortes chances que la plupart des gens l'utilisent sous une forme ou une autre tous les jours. Si vous avez utilisé un navigateur Web, un logiciel Microsoft ou envoyé un emoji, c'est que vous avez utilisé Unicode de près. Il s'agit d'une norme pour l'encodage et la gestion cohérents du texte provenant de la plupart des systèmes d'écriture du monde, garantissant que tout le monde peut s'exprimer (numériquement) en utilisant un seul jeu de caractères. Dans l'état actuel des choses, il y a plus de 143 000 caractères, donc vous êtes couvert, que vous utilisiez l'islandais, le turc sans points, ou quelque chose entre les deux.
En raison du volume considérable de caractères que contient Unicode, un moyen de convertir les caractères en un autre caractère « équivalent » est nécessaire dans de nombreux cas. Par exemple, il semble raisonnable que si vous convertissez une chaîne Unicode sans point en ASCII, elle devienne simplement un « i », n'est-ce pas ?
Un grand volume de codage de caractères comporte un grand risque de catastrophe.
Une collision de mappage de cas en Unicode est une logique métier Une faille, et à la base, peut conduire à une prise de contrôle de comptes non protégés par la 2FA. Pour illustrer la vulnérabilité en question, examinons un exemple de ce bogue dans un extrait de code réel :
app.post (/api/ResetPassword, function (req, res) {
var email = req.body.email ;
db.get (SÉLECTIONNEZ Rowid comme identifiant, e-mail DES utilisateurs OÙ e-mail = ? , [email.toUpperCase ()],
(erreur, utilisateur) => {
si (erreur) {
console.error (err.message) ;
res.status (400) .send () ;
} autre {
Générer un mot de passe temporaire ((TempPassword) => {
AccountRepository.ResetPassword (user.id, tempPassword, () => {
messenger.SendPasswordResetEmail (e-mail, TempPassword) ;
res.status (204) .send () ;
}) ;
}) ;
}
}) ;
}) ;
La logique est la suivante :
- Il accepte l'adresse e-mail fournie par l'utilisateur et la met en majuscule pour des raisons de cohérence
- Il vérifie si l'adresse e-mail existe déjà dans la base de données
- Si c'est le cas, il définira un nouveau mot de passe temporaire (ce n'est d'ailleurs pas la meilleure pratique). Utilisez plutôt un lien avec un jeton qui permet de réinitialiser le mot de passe)
- Il envoie ensuite un e-mail à l'adresse récupérée à l'étape 1, contenant le mot de passe temporaire (c'est une très mauvaise pratique, pour de nombreuses raisons). Argh.)
Voyons ce qui se passe avec l'exemple fourni dans le billet de blog original, où un utilisateur demande la réinitialisation du mot de passe pour l'e-mail John@GıtHub.com (notez le i turc sans point) :
- La logique convertit John@Gıthub.com en JOHN@GITHUB.COM
- Il recherche cela dans la base de données et trouve l'utilisateur JOHN@GITHUB.COM
- Il génère un nouveau mot de passe et l'envoie à John@Gıthub.com
Notez que ce processus finit par envoyer l'e-mail hautement sensible à la mauvaise adresse e-mail. Oups !
Comment chasser ce démon Unicode
L'aspect intéressant de cette vulnérabilité spécifique est que de multiples facteurs la rendent vulnérable :
- Le comportement réel du casting Unicode
- La logique qui détermine l'adresse e-mail à utiliser, c'est-à-dire l'adresse e-mail fournie par l'utilisateur, au lieu de celle qui existe déjà dans la base de données.
En théorie, vous pouvez résoudre ce problème spécifique de deux manières, comme indiqué dans le billet de blog de Wisdom :
- Convertissez l'e-mail en ASCII avec Conversion de code Punycode
- Utilisez l'adresse e-mail de la base de données, plutôt que celle fournie par l'utilisateur
Lorsqu'il s'agit de renforcer les logiciels, c'est une bonne idée de ne rien laisser au hasard en utilisant autant de couches de défense que possible. Pour autant que nous sachions, il existe peut-être d'autres moyens d'exploiter cet encodage, mais nous ne les connaissons tout simplement pas encore. Tout ce que vous pouvez faire pour réduire les risques et fermer les fenêtres qui pourraient être laissées ouvertes à un attaquant est précieux.
Prêt à l'essayer par vous-même ?
La plupart des développeurs savent que la compromission de données est néfaste pour les entreprises. Cependant, les ingénieurs sensibilisés à la sécurité constituent un puissant antidote contre les vulnérabilités, les violations et les problèmes de cybersécurité croissants.
Il est temps de faire passer vos compétences en matière de codage sécurisé et de sensibilisation au niveau supérieur. Découvrez cette vulnérabilité de GitHub dans une simulation immersive et sécurisée, qui vous permet de voir l'impact d'un code incorrect dans les contextes frontend et backend. Les attaquants ont un avantage, alors égalisons les règles du jeu et appliquons de véritables compétences avec un contre-coup de chapeau blanc.


Haga clic en el enlace siguiente y descargue el PDF de este recurso.
Secure Code Warrior aquí para ayudar a su organización a proteger el código a lo largo de todo el ciclo de desarrollo de software y a crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es responsable de la seguridad de las aplicaciones, desarrollador, responsable de la seguridad informática o cualquier otra persona involucrada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código no seguro.
Mostrar el informeReserve una demostraciónMatias Madou, Ph.D. es experto en seguridad, investigador y CTO y cofundador de Secure Code Warrior. Matias obtuvo su doctorado en Seguridad de Aplicaciones en la Universidad de Gante, centrándose en soluciones de análisis estático. Más tarde se incorporó a Fortify en EE.UU., donde se dio cuenta de que no bastaba con detectar problemas de código sin ayudar a los desarrolladores a escribir código seguro. Esto le inspiró para desarrollar productos que ayuden a los desarrolladores, alivien la carga de la seguridad y superen las expectativas de los clientes. Cuando no está en su escritorio como parte de Team Awesome, le gusta estar en el escenario presentando en conferencias como RSA Conference, BlackHat y DefCon.
Matías es un investigador y desarrollador con más de 15 años de experiencia práctica en seguridad de software. Ha desarrollado soluciones para empresas como Fortify Software y su propia empresa Sensei Security. A lo largo de su carrera, Matías ha dirigido múltiples proyectos de investigación sobre seguridad de aplicaciones que han dado lugar a productos comerciales y cuenta con más de 10 patentes en su haber. Cuando está lejos de su escritorio, Matias ha servido como instructor para la formación de seguridad de aplicaciones avanzadas courses y regularmente habla en conferencias mundiales como la Conferencia RSA, Black Hat, DefCon, BSIMM, OWASP AppSec y BruCon.
Matías es doctor en Ingeniería Informática por la Universidad de Gante, donde estudió la seguridad de las aplicaciones mediante la ofuscación de programas para ocultar el funcionamiento interno de una aplicación.
Depuis 2015, nous impliquons les développeurs du monde entier en adoptant une approche proactive et positive de la sécurité, en les aidant à développer les compétences nécessaires pour sécuriser leur code, à réduire le nombre de retouches et de corrections et, espérons-le, à considérer l'équipe de sécurité comme autre chose qu'une police amusante.
Nous sommes toujours déterminés à soutenir les développeurs lorsqu'ils sécurisent le code à travers la galaxie, mais il est temps de changer les choses et de faire passer nos développeurs aguerris et soucieux de la sécurité au niveau supérieur.
Nous sommes ravis d'annoncer la sortie d'une toute nouvelle fonctionnalité sur la plateforme Secure Code Warrior : Missions. Cette toute nouvelle catégorie de défis constitue la prochaine étape de la formation à la sécurité pour les développeurs, qui permettra aux utilisateurs de passer du rappel des connaissances en matière de sécurité à leur application dans un environnement de simulation réel. Cette approche de microlearning échafaudée permet de développer de puissantes compétences de codage sécurisé qui sont pertinentes pour le poste et bien plus divertissantes que de regarder (verticalement) d'interminables vidéos de formation en arrière-plan d'une journée de travail.
Notre première mission publique jouable est une simulation de la faille Unicode de GitHub. Cela peut sembler d'une simplicité trompeuse, mais c'est une vulnérabilité vraiment intelligente qu'il est amusant de décortiquer. Le chercheur en sécurité 0xsha a fait un étude de cas complète sur la façon dont ce même bogue peut être utilisé pour exploiter Django par le biais de transformations de cas, tout en révélant comment le comportement de la vulnérabilité peut changer entre les langages de programmation. Il y a encore beaucoup à découvrir sur ce problème de sécurité, et notre mission est un excellent point de départ.
Collision frontale (cartographie des cas) sur GitHub
Dans un billet de blog à partir du 28 novembre 2019, le groupe de recherche en sécurité Wisdom a signalé un bogue de sécurité découvert sur GitHub. Ils ont expliqué comment ils avaient pu utiliser une collision de mappage de cas en Unicode pour déclencher l'envoi d'un e-mail de réinitialisation du mot de passe à la mauvaise adresse e-mail (ou, si nous pensions à un attaquant, une adresse e-mail choisie par l'acteur de la menace).
Bien qu'une faille de sécurité ne soit jamais une bonne nouvelle, les chercheurs en sécurité qui n'hésitent pas à faire preuve de clémence, sans parler de la possibilité d'éviter un désastre, s'ils découvrent des erreurs potentiellement exploitables dans une base de code. Leurs blogs et leurs rapports sont souvent une excellente lecture, et c'est plutôt cool d'en savoir plus sur une nouvelle vulnérabilité et sur son fonctionnement.
Pour passer à un niveau supérieur de prouesse en matière de codage sécurisé, il est extrêmement puissant non seulement de détecter les vulnérabilités courantes (en particulier les nouvelles vulnérabilités intéressantes, nous savons tous que les acteurs malveillants rechercheront un terrain fertile pour extraire des données grâce à ces nouvelles techniques), mais également de disposer d'un environnement sûr et pratique pour comprendre comment les exploiter également.
Alors, c'est exactement ce que nous faisons. Poursuivez votre lecture pour découvrir comment une collision de mappage de cas en Unicode peut être exploitée, à quoi elle ressemble en temps réel et comment vous pouvez adopter l'état d'esprit d'un chercheur en sécurité et l'essayer vous-même.
Êtes-vous prêt à affronter une collision liée à la cartographie des cas dès maintenant ? Passez à la vitesse supérieure :

Unicode : complexe, personnalisable à l'infini et bien plus que de simples émojis
Le mot « Unicode » ne figure peut-être pas dans le lexique de la personne moyenne, mais il y a de fortes chances que la plupart des gens l'utilisent sous une forme ou une autre tous les jours. Si vous avez utilisé un navigateur Web, un logiciel Microsoft ou envoyé un emoji, c'est que vous avez utilisé Unicode de près. Il s'agit d'une norme pour l'encodage et la gestion cohérents du texte provenant de la plupart des systèmes d'écriture du monde, garantissant que tout le monde peut s'exprimer (numériquement) en utilisant un seul jeu de caractères. Dans l'état actuel des choses, il y a plus de 143 000 caractères, donc vous êtes couvert, que vous utilisiez l'islandais, le turc sans points, ou quelque chose entre les deux.
En raison du volume considérable de caractères que contient Unicode, un moyen de convertir les caractères en un autre caractère « équivalent » est nécessaire dans de nombreux cas. Par exemple, il semble raisonnable que si vous convertissez une chaîne Unicode sans point en ASCII, elle devienne simplement un « i », n'est-ce pas ?
Un grand volume de codage de caractères comporte un grand risque de catastrophe.
Une collision de mappage de cas en Unicode est une logique métier Une faille, et à la base, peut conduire à une prise de contrôle de comptes non protégés par la 2FA. Pour illustrer la vulnérabilité en question, examinons un exemple de ce bogue dans un extrait de code réel :
app.post (/api/ResetPassword, function (req, res) {
var email = req.body.email ;
db.get (SÉLECTIONNEZ Rowid comme identifiant, e-mail DES utilisateurs OÙ e-mail = ? , [email.toUpperCase ()],
(erreur, utilisateur) => {
si (erreur) {
console.error (err.message) ;
res.status (400) .send () ;
} autre {
Générer un mot de passe temporaire ((TempPassword) => {
AccountRepository.ResetPassword (user.id, tempPassword, () => {
messenger.SendPasswordResetEmail (e-mail, TempPassword) ;
res.status (204) .send () ;
}) ;
}) ;
}
}) ;
}) ;
La logique est la suivante :
- Il accepte l'adresse e-mail fournie par l'utilisateur et la met en majuscule pour des raisons de cohérence
- Il vérifie si l'adresse e-mail existe déjà dans la base de données
- Si c'est le cas, il définira un nouveau mot de passe temporaire (ce n'est d'ailleurs pas la meilleure pratique). Utilisez plutôt un lien avec un jeton qui permet de réinitialiser le mot de passe)
- Il envoie ensuite un e-mail à l'adresse récupérée à l'étape 1, contenant le mot de passe temporaire (c'est une très mauvaise pratique, pour de nombreuses raisons). Argh.)
Voyons ce qui se passe avec l'exemple fourni dans le billet de blog original, où un utilisateur demande la réinitialisation du mot de passe pour l'e-mail John@GıtHub.com (notez le i turc sans point) :
- La logique convertit John@Gıthub.com en JOHN@GITHUB.COM
- Il recherche cela dans la base de données et trouve l'utilisateur JOHN@GITHUB.COM
- Il génère un nouveau mot de passe et l'envoie à John@Gıthub.com
Notez que ce processus finit par envoyer l'e-mail hautement sensible à la mauvaise adresse e-mail. Oups !
Comment chasser ce démon Unicode
L'aspect intéressant de cette vulnérabilité spécifique est que de multiples facteurs la rendent vulnérable :
- Le comportement réel du casting Unicode
- La logique qui détermine l'adresse e-mail à utiliser, c'est-à-dire l'adresse e-mail fournie par l'utilisateur, au lieu de celle qui existe déjà dans la base de données.
En théorie, vous pouvez résoudre ce problème spécifique de deux manières, comme indiqué dans le billet de blog de Wisdom :
- Convertissez l'e-mail en ASCII avec Conversion de code Punycode
- Utilisez l'adresse e-mail de la base de données, plutôt que celle fournie par l'utilisateur
Lorsqu'il s'agit de renforcer les logiciels, c'est une bonne idée de ne rien laisser au hasard en utilisant autant de couches de défense que possible. Pour autant que nous sachions, il existe peut-être d'autres moyens d'exploiter cet encodage, mais nous ne les connaissons tout simplement pas encore. Tout ce que vous pouvez faire pour réduire les risques et fermer les fenêtres qui pourraient être laissées ouvertes à un attaquant est précieux.
Prêt à l'essayer par vous-même ?
La plupart des développeurs savent que la compromission de données est néfaste pour les entreprises. Cependant, les ingénieurs sensibilisés à la sécurité constituent un puissant antidote contre les vulnérabilités, les violations et les problèmes de cybersécurité croissants.
Il est temps de faire passer vos compétences en matière de codage sécurisé et de sensibilisation au niveau supérieur. Découvrez cette vulnérabilité de GitHub dans une simulation immersive et sécurisée, qui vous permet de voir l'impact d'un code incorrect dans les contextes frontend et backend. Les attaquants ont un avantage, alors égalisons les règles du jeu et appliquons de véritables compétences avec un contre-coup de chapeau blanc.

Índice
Matias Madou, Ph.D. es experto en seguridad, investigador y CTO y cofundador de Secure Code Warrior. Matias obtuvo su doctorado en Seguridad de Aplicaciones en la Universidad de Gante, centrándose en soluciones de análisis estático. Más tarde se incorporó a Fortify en EE.UU., donde se dio cuenta de que no bastaba con detectar problemas de código sin ayudar a los desarrolladores a escribir código seguro. Esto le inspiró para desarrollar productos que ayuden a los desarrolladores, alivien la carga de la seguridad y superen las expectativas de los clientes. Cuando no está en su escritorio como parte de Team Awesome, le gusta estar en el escenario presentando en conferencias como RSA Conference, BlackHat y DefCon.

Secure Code Warrior aquí para ayudar a su organización a proteger el código a lo largo de todo el ciclo de desarrollo de software y a crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es responsable de la seguridad de las aplicaciones, desarrollador, responsable de la seguridad informática o cualquier otra persona involucrada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código no seguro.
Reserve una demostraciónDescargarRecursos para ayudarle a empezar
Temas y contenidos de formación sobre el código seguro
Nuestro contenido de vanguardia evoluciona constantemente para adaptarse al panorama en constante cambio del desarrollo de software, teniendo en cuenta su función. Temas que abarcan desde la IA hasta la inyección de XQuery, ofrecidos para una variedad de puestos, desde arquitectos hasta ingenieros, pasando por jefes de producto y control de calidad. Descubra una visión general de lo que nuestro catálogo de contenidos tiene para ofrecer por tema y por función.
La Cámara de Comercio establece el estándar para la seguridad impulsada por desarrolladores a gran escala
Kamer van Koophandel comparte cómo ha integrado la codificación segura en el desarrollo diario mediante certificaciones basadas en roles, evaluaciones comparativas de Trust Score y una cultura de responsabilidad compartida en materia de seguridad.
Modelado de amenazas con IA: convertir a cada desarrollador en un modelador de amenazas
Saldrá mejor equipado para ayudar a los desarrolladores a combinar ideas y técnicas de modelado de amenazas con las herramientas de IA que ya utilizan para reforzar la seguridad, mejorar la colaboración y crear software más resistente desde el principio.
Recursos para ayudarle a empezar
Cybermon está de vuelta: las missions Beat the Boss ya están disponibles bajo demanda.
Cybermon 2025 Beat the Boss ya está disponible todo el año en SCW. Implemente desafíos de seguridad avanzados relacionados con la IA y el LLM para reforzar el desarrollo seguro de la IA a gran escala.
Explicación de la ley sobre ciberresiliencia: lo que significa para el desarrollo de software seguro desde el diseño.
Descubra qué exige la ley europea sobre ciberresiliencia (CRA), a quién se aplica y cómo los equipos de ingenieros pueden prepararse mediante prácticas de seguridad desde el diseño, la prevención de vulnerabilidades y el refuerzo de las capacidades de los desarrolladores.
Facilitador 1: Criterios de éxito definidos y medibles
El facilitador 1 da inicio a nuestra serie de 10 partes titulada «Facilitadores del éxito», mostrando cómo combinar la codificación segura con resultados comerciales, como la reducción de riesgos y la rapidez, para garantizar la madurez a largo plazo de los programas.




%20(1).avif)
.avif)
