Faille de sécurité sur Les Numériques : modifiez vos mots de passe

Faille de sécurité sur Les Numériques : modifiez vos mots de passe

Des cookies qui manquent de sel

Avatar de l'auteur
Sébastien Gavois

Publié dans

Internet

03/11/2015 2 minutes
61

Faille de sécurité sur Les Numériques : modifiez vos mots de passe

La semaine dernière, nos confrères de Les Numériques ont été victimes d'une cyberattaque ayant entrainé la fuite de logins et de cookies de session. Ces derniers contiennent une empreinte du mot de passe associé au compte, il est donc conseillé d'en changer.

Le site Les Numériques a été victime d'un pirate qui a exploité une faille XSS sur certaines pages du site afin d'exécuter du code JavaScript. Mathias Lallement, directeur technique, explique en effet qu'un « attaquant l'a utilisée pour collecter login+cookie de session, sur certains commentaires d'articles du site, depuis le 25/10 à 17h41 [...] Nous avons été prévenus jeudi soir et avons pu trouver et corriger cette faille entre vendredi et lundi ». 

Il ajoute que « la faille permettait d'être connecté à la place du membre, donc d'accéder à l'édition de son profil sur le site, de connaître l'adresse email associée au compte et de changer les informations liées au compte, comme le mot de passe ». Plus problématique, le cookie de session contient une empreinte (hash) du mot de passe du compte, mais qui n'est pas salé. Il est donc bien plus facile de retrouver le mot de passe original, notamment via des Rainbow tables par exemple.

Les Numériques failles XSS

Quoi qu'il en soit, la procédure est toujours la même en pareille situation : changer de mot de passe sur le site, mais aussi sur n'importe quel autre service où il aurait été utilisé. On ne rappellera en effet jamais assez que réutiliser le même mot de passe n'est pas une bonne idée. Nos confrères précisent enfin que « les attaquants n'ont pas eu accès à nos serveurs ni à la base de données du site », sans plus de précisions sur l'origine de l'attaque ou sur le nombre de comptes impactés. Bien évidemment, ils indiquent qu'une plainte va être déposée.

Écrit par Sébastien Gavois

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Le brief de ce matin n'est pas encore là

Partez acheter vos croissants
Et faites chauffer votre bouilloire,
Le brief arrive dans un instant,
Tout frais du matin, gardez espoir.

Fermer

Commentaires (61)


Comme quoi, il faut toujours saler avant de hasher !


Pas cool de bosser le week-end sur ce genre de galère <img data-src=" />


Bientôt le même problème pour NxI?



<img data-src=" />








Altair31 a écrit :



Comme quoi, il faut toujours saler avant de hasher !





Mais si le cookie n’est pas assez salé, il faut s’en prendre au serveur.



C’est un cauchemar en cuisine mixé avec qui est le meilleur pâtissier.








zitrams a écrit :



Mais si le cookie n’est pas assez salé, il faut s’en prendre au serveur.





Ah ah :)









Tornado_OLO a écrit :



Pas cool de bosser le week-end sur ce genre de galère <img data-src=" />





Pas cool de développer à la rache <img data-src=" />



Et la faille Php exploité sur 000webhost.com (=hostinger en France), personne n’en parle?


Mauvaise gestion des cookies par les devs.

Bonne pratique : un cookie n’est pas fait pour stoker des données mais uniquement un identifiant unique crypté (lisible uniquement par le serveur). De cet identifiant, on récupère ensuite les infos associées coté serveur.

De cette manière, un seul cookie est nécessaire (on y associe autant d’info qu’on veut coté serveur), celui-ci est le plus léger possible, et n’y a plus de risque de fuite d’infos (quand bien même quelqu’un arriverait à décrypter le cookie il ne récupèrerais qu’un identifiant inexploitable en tant que tel..)


<img data-src=" />Et en attendant pas un seul message sur leur propre page d’accueil&nbsp;<img data-src=" />


Roh, les méchants pirates pourraient avoir accès à ma boite /trash&nbsp;<img data-src=" />


Tout à fait d’accord. C’est quoi cette histoire de stocker le hash du mot de passe dans le cookie ? Sérieusement ?


aucun intérêt/sens de chiffrer un cookie,&nbsp; oui pour le reste. il ne doit etre qu’un id permettant de retrouver les informations. Par contre l’attribut HttpOnly, déja ca evite de recupérer l’info via un XSS moisi et si possible le tout communiqué sur SSL bien (mais bon la pub limite visiblement cf les problematique NxI) avec l’attribut secure.


Si si, le crypter évite que le client viennent le bidouiller et/ou le modifier.



Si j’ai un id (en clair) du genre 123456 dans mon cookie et que je remplace par 123457 il y a de grandes chance que je me retrouve connecté avec un autre compte.<img data-src=" /> Si c’est crypté tu peux toujours essayer de le modifier…


Un cookie de session en fait ?


J’aime pas crypter. Chiffrer c’est plus mieux.



Je sors&nbsp;<img data-src=" />


Oui.<img data-src=" />


le problème reste le meme, il ne s’agit pas de crypter, il suffit juste de générer des ID non linéaires et suffisament entropique c’est la qu’est la sécurité, en diminuant la proba que l’utilisateur trouve une chaine de caractère qui corresponde à un ID (si ton chiffré est ridiculement court tu ne résoud pas le problème par exemple) , ce que globalement php et consort savent faire plutot bien de nos jours.


Mais là tu compares un bête ID que tu incrémentes à chaque connexion à un ID aléatoire (le résultat de ton chiffrement). Pas sûr que tu gagnes en sécurité avec le chiffrement si ton ID fait autant de bits et est simplement généré aléatoirement.








maestro321 a écrit :



Mauvaise gestion des cookies par les devs.

Bonne pratique : un cookie n’est pas fait pour stoker des données mais uniquement un identifiant unique crypté (lisible uniquement par le serveur). De cet identifiant, on récupère ensuite les infos associées coté serveur.

De cette manière, un seul cookie est nécessaire (on y associe autant d’info qu’on veut coté serveur), celui-ci est le plus léger possible, et n’y a plus de risque de fuite d’infos (quand bien même quelqu’un arriverait à décrypter le cookie il ne récupèrerais qu’un identifiant inexploitable en tant que tel..)





Chiffré!<img data-src=" />









thinkerone a écrit :



le problème reste le meme, il ne s’agit pas de crypter, il suffit juste de générer des ID non linéaires et suffisament entropique c’est la qu’est la sécurité, en diminuant la proba que l’utilisateur trouve une chaine de caractère qui corresponde à un ID (si ton chiffré est ridiculement court tu ne résoud pas le problème par exemple) , ce que globalement php et consort savent faire plutot bien de nos jours.





On est d’accord, mais le plus simple ça reste de crypter/décrypter, puisque tu n’as justement pas a te soucier du format d’origine de ton ID.

De plus, au final, l’utilité c’est de retrouver les infos associées, et je pense que techniquement dans une base de donnée c’est plus rapide de retrouver un enregistrement par un id linéaire plutôt que par une chaîne.



Pour la faille 000webhost, voici ce que j’ai reçu :

What happened?



A hacker used an exploit in an old PHP version, that we were using on our website, in order to gain access to our

systems. Data that has been stolen includes usernames, passwords, email addresses, IP addresses and names.



Although the whole database has been compromised, we are mostly concerned about the leaked client information.



What did we do about it?



We have been aware of this issue since 27th of October and our team started to troubleshoot and resolve this issue

the same day, immediately after becoming aware of this issue.



In an effort to protect our users we have temporarily blocked access to systems affected by this security flaw. We

will re-enable access to the affected systems after an investigation and once all security issues have been

resolved. Affected systems include our website and our members area. Additionally we have temporarily blocked FTP

access, as FTP passwords have been stolen as well.



We reseted all users passwords in our systems and increased the level of encryption to prevent such issues in the

future.



We are still working around the clock to identify and eliminate all security flaws. We will get back to providing

the free service soon. We are also updating and patching our systems.



What do you need to do?





As all the passwords have been changed to random values, you now need to reset them when the service goes live

again.



DO NOT USE YOUR PREVIOUS PASSWORD.



PLEASE ALSO CHANGE YOUR PASSWORDS IF YOU USED THE SAME PASSWORD FOR OTHER SERVICES.





We also recommend that you use Two Factor Authentication (TFA) and a different password for every service whenever

possible. We can recommend the Authy authenticator app and the LastPass password manager.



We are sorry





At 000webhost we are committed to protect user information and our systems. We are sorry and sincerely apologize we

didn’t manage to live up to that.



At 000webhost our top priority remains the same - to provide free quality web hosting for everyone. The 000webhost

community is a big family, exploring and using the possibilities of the internet together.



Our leadership team will closely monitor this issue and will do everything possible to earn your trust every day.







Sincerely,



000webhost CEO,



Arnas Stuopelis








Athropos a écrit :



Pas sûr que tu gagnes en sécurité avec le chiffrement si ton ID fait autant de bits et est simplement généré aléatoirement.





Bha déjà s’il est “généré aléatoirement” t’as une faille car tu peux avoir un doublon.

Le cryptage n’est pas réellement aléatoire.

Pour un id unique, je suis certain que la chaîne cryptée le sera aussi.



Merci d’éviter les HS :)


du coup si je fais la synthèse des échanges, il faudrait un cookie qui contienne l’ID plus un élément aléatoire chiffré par le serveur, qui le déchiffre a chaque fois, récupère l’id dans la chaine pour ensuite requêter les bonnes info?



je sais pas si en perf c’est plus économique que de taper directement sur le contexte associé a ton PHPSESSID par exemple… mais pourquoi pas, je m’y connais pas des masses en optimisation








thinkerone a écrit :



du coup si je fais la synthèse des échanges, il faudrait un cookie qui contienne l’ID plus un élément aléatoire chiffré par le serveur, qui le déchiffre a chaque fois, récupère l’id dans la chaine pour ensuite requêter les bonnes info?





Pourquoi venir “saler” l’id avant le chiffrement? C’est utile pour un hash, mais pour un chiffrement, seul le serveur à la clef (de déchiffrage) ça n’a donc aucun intérêt. Les rainbow table ça n’existe pas en chiffrement.







thinkerone a écrit :



je sais pas si en perf c’est plus économique que de taper directement sur le contexte associé a ton PHPSESSID par exemple… mais pourquoi pas, je m’y connais pas des masses en optimisation





Les cookies restent après la fermeture du navigateur, alors que la session…

Oups, j’avais mal compris, on peut sans doute se servir de PHPSESSID, mais ma solution est “générique”, elle peut théoriquement s’appliquer à n’importe quel projet.

On a souvent des surprises dans la gestion PHP des sessions d’un serveur/projet à l’autre.<img data-src=" />

Je préfère avoir la main/le contrôle sur ce qui est généré.



Mais une question…

Comment un pirate peut récupérer le cookie d’un utilisateur X ?

Il l’a intercepté ? du coup c’est une MitM non ?

il l’a récupéré sur un serveur de lesnumeriques.com ?

il l’a récupéré en étant sur l’ordinateur de l’utilisateur X ?



Enfin c’est un peu la question que je me pose en lisant cette article…


c’est chiant car j’utilise un login et mdp que j’utilise pas mal ailleurs … mais sais pas trop ou <img data-src=" />


Du coup sans aléat tu te retrouves avec un autre problème,&nbsp; ton cookie est toujours le meme pour une personne donnée, donc il suffit que bidule se connecte une fois depuis un poste partagé ou que je me balade sur son poste pendant sa pause café et me voila capable d’usurper sa session quand je veux.



les bonnes pratiques en la matière étant de renouveller le cookie à chaque changement d’état (après authent et après déco ) et que lors de la déco la session soit correctement purgée, si dès que l’utilisateur se réauthentifie on lui ressort le meme cookie ca pose problème.


en fait le XSS est une attaque qui vise l’utilisateur et pas le serveur en injectant du code qui est interpreté par ton navigateur.



&nbsp; bref, l’attaquant a peut être trouvé une faille dans les commentaires par exemple, et a donc posté un commentaire spécial avec du code javascript. S’il s’applique un peu, les artefact sont pas trop visible quand tu regardes la page, mais ton navigateur quand il recoit le contenu de la page, au moment d’afficher le fameux commentaire va afficher ce qu’il comprend etre du texte et interpreter le code qu’il reconnait.



Ce code est généralement “fait une requete vers tel serveur en affichant le login courant et la valeur du cookie de session”



donc ce n’est ni du MitM, ni une attaque du serveur, mais le piégeage de ton navigateur web


Via la faille XSS.

Celle-ci permet à l’attaquant de glisser du code javascript malveillant qui sera exécuté sur un client (celui qui n’aura pas de chance).

Le script permet de venir lire les infos du cookie du client (autrement dit, c’est un vol de cookie), et ces infos sont ensuite renvoyée d’une manière ou d’un autre vers un autre serveur (celui de l’attaquant).



S’il n’y avait pas de faille XSS, l’attaquant ne devrais pas pouvoir ajouter du script javascript a une page.

C’est un peut comme si tu trouvais une faille dans NXI qui te permette de rajouter une photo dans les commentaire. Cette photo serait ensuite visible par les autres utilisateur (le vol peut commencer).





L’autre faille c’est d’être vu coller le hash du mot de passe dans le cookie.<img data-src=" />

Si la première faille est excusable, la seconde ne l’est pas..


Cookie de session ?



Donc ces cookies doivent être transmis en https uniquement. Le bon réflexe est donc de mettre l’attribut Secure sur ses cookies.

De plus, ils ont été volés par une faille XSS, donc il manquait l’attribut httpOnly qui doit être mis sur ce type de cookie.



On ajoutera qu’une politique Content-Security-Policy et l’utilisation de fonction comme htmlspecialchars() auraient évité cet incident.



PS: mince grillé ci-dessus pour les attributs








thinkerone a écrit :



Du coup sans aléat tu te retrouves avec un autre problème,  ton cookie est toujours le meme pour une personne donnée, donc il suffit que bidule se connecte une fois depuis un poste partagé ou que je me balade sur son poste pendant sa pause café et me voila capable d’usurper sa session quand je veux.





Ha! Effectivement, si tu as des contraintes de ce genre à gérer, il faut effectivement faire varier le cookie, mais dans ce cas ça se fait varier en fonction du temps, pas d’une valeur aléatoire. L’aléatoire c’est le mal.<img data-src=" />



Mais avec la certification ISO 1664



(Désolé)


excuser un XSS? tu est trop bon avec eux <img data-src=" />

C’est

pas parce que c’est hyper courant que c’est excusable,&nbsp; avec des

frameworks comme BeeF on fait des choses très sales depuis quelques années maintenant


Oui, j’excuse. C’est toujours moins gênant qu’une faille SQL.. ou des mots de passe stockés en clair.<img data-src=" />

Si le reste du site n’est pas trop mal construit, une faille XSS n’est en principe pas trop virulente.


meuuuuh non ca dépend juste de ta catégorie: utilisateur de debian ou non.<img data-src=" />&nbsp; comme ca par exemple


Je viens de me rendre compte qu’ils n’ont pas de connexion sécurisée pour l’identification sur le forum… Sinon de mon coté c’est fait, mot de passe changé <img data-src=" />


Je savais pas que l’aléatoire “pseudo-aléatoire” était un problème de distribution.

En tout cas le rand() PHP (quelque soit la distrib) est une calamité.<img data-src=" />

Ce qui me fait bien marrer, c’est la description de la fonction mt_rand () : Génère une meilleure valeur aléatoire <img data-src=" />








maestro321 a écrit :



Mauvaise gestion des cookies par les devs.

Bonne pratique : un cookie n’est pas fait pour stoker des données mais uniquement un identifiant unique crypté (lisible uniquement par le serveur). De cet identifiant, on récupère ensuite les infos associées coté serveur.

De cette manière, un seul cookie est nécessaire (on y associe autant d’info qu’on veut coté serveur), celui-ci est le plus léger possible, et n’y a plus de risque de fuite d’infos (quand bien même quelqu’un arriverait à décrypter le cookie il ne récupèrerais qu’un identifiant inexploitable en tant que tel..)





Bah si, une interception du cookie permet toujours d’usurper les sessions en cours (pas de récupérer le hash du mot de passe, certes).

&nbsp;



En parlant de sécurité de mdp, étant abonné chez orange (internet fixe) j’avais perdu mon mot de passe. Je demande donc un mdp et il me sort quoi ? mon ancien mot de passe, en clair…. Bizarre non ?


C’est quoi le salage exactement?&nbsp; explication Simple hein.

&nbsp;

&nbsp;


Mais ça, il n’y a rien à y faire en HTTP. La seul parade c’est d’être en HTTPS.


Ah d’accord, donc ça veut dire que les failles xss permette à une personne mal intentionné d’écrire sur le serveur qui contient le code javascript à la base et d’en altérer son contenu.



Ce genre de chose m’étonnera toujours. y’a pas un paramètre dans le serveur qui empêcherait qu’une écriture de ce genre soit possible ? (au niveau de la restriction rwx )

Enfin pour moi un serveur web dans l’idéal serait un point accessible du net (donc vulnérable) mais dont il serait impossible d’écrire dessus sauf lors d’un déploiement/MàJ.








Blood_Man a écrit :



En parlant de sécurité de mdp, étant abonné chez orange (internet fixe) j’avais perdu mon mot de passe. Je demande donc un mdp et il me sort quoi ? mon ancien mot de passe, en clair…. Bizarre non ?





mais comment sais-tu que c’est ton ancien mot de passe puisque tu l’avais perdu. <img data-src=" />



Le HTTPS n’empêche pas le XSS.



Chopage des cookies via XSS, puis immédiatement, usurpation des sessions en cours. Cookie crypté ou non, communications en HTTPS ou non. Bon, normalement certains gestionnaires de sessions gueulent si on réutilise le même cookie depuis plusieurs IP pour éviter ça, mais ça fait aussi merdoyer ces sites sur les hotspots instables ou les connexions avec load balancing.

&nbsp;


Disons qu’une attaque par dictionnaire arriverait à trouver mon mdp ^^.


c’est pas nécessairement stocké dessus, dans ce cas, le XSS est dit reflectif et ne s’applique qu’aux personne qui font la requête directement avec le code dedans (par exemple suite à un phishing ou on amène la victime a cliquer sur un lien spécifique).



Maintenant un serveur où tu n’as aucun moyen d’écrire ce sont certain sites web style an2000, de nos jour ya toujours une partie commentaires ou une partie compte utilisateur ou que sais-je qui fait qu’il est possible d’écrire (rien qu’a la place de mon pseudo je pourrais mettre du code, et sur un site vulnérable, toute personne chargeant une page affichant mon pseudo exécutera le code). les informations sont stockées en base de données mais ça reste une inscription de donnée sur le serveur… la seule protection c’est de filtrer correctement les informations que le serveur reçoit de la part des utilisateur pour s’assurer qu’il n’intègre ou en renvoie rien qui puisse tromper le navigateur de ses visiteurs.



&nbsp;


Mettre dans le cookie un jeton temporaire de connexion, lié dans la bdd à un compte utilisateur dont on mémorise l’ip de dernière authentification, et vérifier la correspondance IP/JETON ca doit marcher non?



(je précise, le jeton est lié a un COMPTE unique, pas juste a une ip. L’ip est une info enregistrée dans le compte :)

&nbsp;

Le pirate récupère le cookie, mais a moins d’avoir la meme ip que le visiteur il ne pourra rien faire.

&nbsp;







Keizo a écrit :



Mais une question…

Comment un pirate peut récupérer le cookie d’un utilisateur X ?

Il l’a intercepté ? du coup c’est une MitM non ?

il l’a récupéré sur un serveur de lesnumeriques.com ?

il l’a récupéré en étant sur l’ordinateur de l’utilisateur X ?



Enfin c’est un peu la question que je me pose en lisant cette article…







Alors concrétement :

* Soit un logiciel qui vole les cookies dans les navigateurs (ca accompagne parfois les voleurs de mots de passe)

* Soit il profite d’une faille XSS dans un site.



Imagine une page web : tu a une zone de saisie de texte où l’on ne controle pas assez ce que les gens mettent.

Et le contenu se retrouve inséré dans la bdd/page web après. Comme un commentaire tient :)



&lt;script&gt;alert(“Vive des chouquettes”)&lt;/script&gt; . A chaque chargement de la page tu aurait un message à, la noix.

Il suffit d’écrire un script a peine plus elaboré (avec document.cookie) pour envoyer le contenu du cookie de la page a un serveur distant contrôlé par l’attaquant.



Ca c’est pour la XSS persistante.



&nbsp;Il existe aussi des cas ou la XSS est juste temporaire, quand on ne contrôle pas le contenu des variables d’une URL en général et qu’on les affiche directement dans la page.&nbsp; Dans ce cas le pirate t’envoie un lien piégé



http://www.nextinpact.com/a=1&b=2&c=“code html inséré par le pirate”(avec tout un code de faux formulaire de login par exemple)

&nbsp;



&nbsp;



C’est une suite de caractères ajoutée au mot de passe pour rendre le hachage plus difficile à inverser. Jette un oeil à la page Wikipedia sur le sujethttps://fr.wikipedia.org/wiki/Salage_(cryptographie)








zir0faive a écrit :



C’est une suite de caractères ajoutée au mot de passe pour rendre le hachage plus difficile à inverser. Jette un oeil à la page Wikipedia sur le sujethttps://fr.wikipedia.org/wiki/Salage_(cryptographie)





Merci, ta réponse est quand même plus simple et compréhensible que celle de kikipedia.

&nbsp;



Ce qu’on m’avait présenté comme bonne pratique, c’est un truc long, aléatoire (généré par un outil de qualité, qui lave plus aléatoire que les générateurs <img data-src=" />), et vérification que l’id n’ait jamais été utilisé (pas même par une session passée). L’id doit changer à chaque session, bien entendu.

Ce qui est essentiel, c’est que l’id ne puisse pas être deviné, donc pas de n° qui se suivent ou de timestamp (pas même hashés), ni de construction à partir des infos du clients (son IP, MAC, id…).



Le point ‘jamais utilisé’ me semble légèrement overkill, et peut-être pas très facilement scalable. Après, tel que j’ai compris le sujet, si on a une section aléatoire suffisamment longue et une section non aléatoire qui assure l’unicité, c’est bien sécurisé : la longue partie aléatoire assure la non-devinabilité, l’autre partie assure l’unicité, peu importe si elle peut être devinée.

Attention toutefois à ce que cette partie qui assure l’unicité ne contienne pas d’info sensible, donc pas d’id ou de mdp. Un compteur incrémenté fait l’affaire.








Zerdligham a écrit :



Ce qu’on m’avait présenté comme bonne pratique, c’est un truc long, aléatoire (généré par un outil de qualité, qui lave plus aléatoire que les générateurs <img data-src=" />), et vérification que l’id n’ait jamais été utilisé (pas même par une session passée).

[…]

Le point ‘jamais utilisé’ me semble légèrement overkill, et peut-être pas très facilement scalable.





Comme tu dis, pour répondre à cette contrainte : “chaine aléatoire sans doublon”, c’est la merde à mettre en place (faut en générer suffisamment à l’avance, ou bien stocker et vérifier à chaque génération si ce n’est pas un doublon), t’es obligé de faire un outil spécifique.

Avec un chiffrement tu t’en fout, tu sais que ta chaine de sortie sera illisible, immodifiable ET unique (tant que l’id d’entré est unique, mais pour ça un simple auto-incrément suffit).



Oui, mais avec un simple id chiffré, si un pirate arrive à récupérer la clé (par exemple en analysant ses cookies successifs), il peut ensuite très facilement prédire tous les identifiants futurs. C’est certes très difficile, mais si quelqu’un y arrive, c’est catastrophique. D’où l’intérêt de mélanger les deux, ce qui est à la fois techniquement facile, et très robuste.

D’ailleurs, php génère ses id de session à peu près comme ça (à la différence qu’ils ne garantissent pas de façon absolue l’unicité, c’est seulement très improbable d’avoir une collision). Je ne sais pas pourquoi ils n’ont pas garanti l’unicité avec un truc genre auto-increment, il doit y avoir une subtilité qui m’échappe.








Zerdligham a écrit :



Oui, mais avec un simple id chiffré, si un pirate arrive à récupérer la clé (par exemple en analysant ses cookies successifs), il peut ensuite très facilement prédire tous les identifiants futurs. C’est certes très difficile, mais si quelqu’un y arrive, c’est catastrophique. D’où l’intérêt de mélanger les deux, ce qui est à la fois techniquement facile, et très robuste..





A ce moment là, ce n’est pas que mon site qui est en danger, mais le web en entier, ça veut dire que les algos de chiffrages sont faillibles.<img data-src=" />

Et si un pirate à ce genre de capacité, il trouvera une autre faille sans aucune difficulté.<img data-src=" />



L’écrasante majorité des chiffrements symétriques sont basés sur des clé générées aléatoirement, et périmées rapidement. Le risque qu’un pirate puisse retrouver la clé en analysant en détail une connexion existe, mais ça ne lui donne pas le moyen de déchiffrer toutes les communications futures.

Pour ton id de session c’est pareil : si tu chiffres avec une clé aléatoire, unique et à faible durée de vie, c’est probablement super-sécure. Par contre tu reportes la difficulté le la génération de l’id sur la génération de la clé. Si tu chiffres toujours avec la même clé, la difficulté pour remonter à la clé est toujours la même, mais si quelqu’un y arrive, c’est une porte d’entrée durable.

Sinon même sans considérer que c’est l’algo de chiffrement qui tombe, une clé de chiffrement peut s’obtenir par d’autres moyens (chantage…). Le nombre aléatoire à le bon goût de ne pas être divulguable à l’avance.



Pour un petit site perso, ça n’a pas une très grande importance, mais si tu gères des données vraiment sensibles, mieux vaut éviter.



Après, tu as peut-être raison de dire qu’il existe souvent des moyens plus simple d’entrer, mais c’est pas parce que la porte de derrière ferme mal qu’il faut laisser les fenêtres ouvertes!








Zerdligham a écrit :



Après, tu as peut-être raison de dire qu’il existe souvent des moyens plus simple d’entrer, mais c’est pas parce que la porte de derrière ferme mal qu’il faut laisser les fenêtres ouvertes!





Sauf qu’il ne s’agit pas d’entrer par une fenêtre ouverte, mais d’entrer par la grande porte blindée de la banque.

Trouver une clef de cryptage (par la simple analyse du cookie) d’un algo de chiffrement récent et puissant n’est pas à la hauteur du premiers venu, je ne sais même pas si les services secret d’état en sont capable (pas pour rien qu’ils pondent des lois pour récupérer directement les clefs).

Alors le jour où ça arrivera je pense que j’aurais d’autres soucis..



Et sinon comme tu dis, suffit de faire varier de temps en temps la clef de cryptage/algo de cryptage, mais quand on en arrive à ce point là de la parano, il faut remettre en cause toute la chaîne de sécurité (logiciel, matériel, humain) et on s’en sort jamais.<img data-src=" />









maestro321 a écrit :



Trouver une clef de cryptage (par la simple analyse du cookie) d’un algo de chiffrement récent et puissant n’est pas à la hauteur du premiers venu, je ne sais même pas si les services secret d’état en sont capable (pas pour rien qu’ils pondent des lois pour récupérer directement les clefs).





Le contexte est différent. Dans le cas de l’inversion d’un cookie, tu sais exactement ce que tu cherches. Ça reste difficile, mais ça l’est largement moins que le problème général de déchiffrement d’une archive type truecrypt.







maestro321 a écrit :



quand on en arrive à ce point là de la parano, il faut remettre en cause toute la chaîne de sécurité (logiciel, matériel, humain) et on s’en sort jamais.<img data-src=" />





C’est pas vraiment une question de parano, simplement de compromis. La sécurité c’est toujours soupeser le risque vs le coût de la protection.

Ici, des solutions sont nativement intégrées dans pleins d’outils. Sauf adhérence à un outil spécifique incompatible le coût de la protection est nul, donc aussi petit soit le risque, il n’y a pas de raison de le tolérer.

Dans le cas de la reprise d’un projet bourré de failles, ce n’est effectivement pas le premier sujet dont je me préoccuperais <img data-src=" />









Zerdligham a écrit :



Le contexte est différent. Dans le cas de l’inversion d’un cookie, tu sais exactement ce que tu cherches. Ça reste difficile, mais ça l’est largement moins que le problème général de déchiffrement d’une archive type truecrypt.





Ha bon? Si je te dit que c’est un simple ID numérique tu sais quoi chercher.. Mais encore faut-il que je te dises ce que tu dois chercher.<img data-src=" />

Sinon, un simple sallage fixe de l’id suffit.. Tu ne sais plus quoi chercher.. (pas besoin d’ajouter de l’aléatoire)



Si je sais que f(x & sel) = qdmcjadica, f(x+1 & sel) = qo^finpqocve, f(x+2 & sel) = dqsùvknaevn ; potentiellement, ça me donne un angle d’attaque (d’ailleurs, le sel, s’il est constant, n’apporte absolument rien). On est d’accord que ça reste quelque chose de pas trivial.

Mais surtout, si j’y arrive, que ce soit par chance, par astuce ou en tapant suffisamment fort sur ton admin, je peux prédire tous tes futurs id de session, et usurper l’identité de qui je veux.



En fait ta méthode c’est un peu comme hasher les mots de passe avec un sel constant.

En soit, c’est pas mauvais, parce que ça reste très difficile d’inverser l’algo de hachage, mais le problème c’est que si quelqu’un se procure son mdp haché hors-ligne, il peut prendre tout son temps pour le casser et en déduire le sel. Avec cette info, il aura beaucoup plus de facilité à casser les autres mots de passe s’il arrive à se procurer leurs hashs.



La critique ne porte pas sur la facilité à casser un mécanisme donné, mais sur le fait que réussir à en casser un ouvre la porte à tous les autres. Pour reprendre ta métaphore de la porte blindée, c’est comme si forcer tranquillement une porte blindée dans mon garage me permet d’en déduire comment fabriquer la clé de toutes les portes blindées de la même marque à travers le monde. Elle peut être aussi solide qu’elle veut, ça en fait une porte blindée médiocre.



C’est pour ça qu’il est recommandé de façon générale d’utiliser des valeurs aléatoires pour tout ce qui doit être difficile à deviner, et n’a pas besoin d’être retenu par un humain. C’est pour les sels de mots de passe, les jetons CSRF, les id de session…


Arf, j’ai dit une connerie sur le hash.

Ce qu’il va avoir ton son temps pour faire, c’est construire sa rainbowtable, évidemment pas trouver le sel, qui n’a rien de secret.