ldleman / yana-server

Interface PHP de domotique Y.A.N.A (You Are Not Alone)
http://projet.idleman.fr/yana
107 stars 59 forks source link

Faille de sécurité: serveur http #134

Open valentin8709 opened 9 years ago

valentin8709 commented 9 years ago

Bonjour tout le monde! Fan de Yana Server depuis ses débuts, cela fait quelques temps que je me faisais la remarque suivante: Yana s'installe par défaut en http, et sans chiffrement... D'où (j'imagine) le conseil de ne l'ouvrir qu'en local. Bref mon plaisir, c'est quand même de contrôler mon appart où que je sois.

Je fais donc l'expérience suivante: capture réseau pendant que je me logue sur Yana via un autre pc sur le même wifi. Hop je récupère tranquille l'adresse de connexion, le nom d'utilisateur et le mot de passe. Avec ça je peux donc récupérer le token, et faire tout ce dont j'ai envie...

Pas très cool donc... En gros, interdiction absolue d'accéder à Yana sur un wifi publique ou peu sûre... Je me dis alors, passe le serveur en SSL! Ce que je fais sans attendre: Aucun problème, tout fonctionne côté web \o/

Je commence alors quelques tests sur les clients windows et android: connexion impossible. Pour windows, ça ne me dérange point. Le client n'est pas très stable sur mon PC, et est de toute façon rarement allumé. Par contre je me sers plusieurs fois par jour de Yana for Android... =S

Alors que faire? J'avais pensé à tout chiffrer sauf la page /var/www/yana-server/action.php pour que les clients puissent y accéder, mais je n'ai pas testé ça fait un peu "pinaillage". Avez-vous une idée? Ou pensez-vous qu'il faudra nécessairement modifier le code côté client?

Merci d'avoir pris du temps pour me lire =)

F0cks commented 9 years ago

Je vais peut être dire une connerie car j'ai horreur de ce merdier qu est la gestion de certificats sur android ...

Je pense pas que tu puisses simplement chiffrer et authentifier tes trames en espérant que le client les comprenne 😔

Je pense que ça nécessite forcément des modifications côté client : la gestion des certificats pour l'authentification dans l API et la gestion du chiffrement.

C'est pas la mère à boire non plus, faut juste le faire 😄

valentin8709 commented 9 years ago

Okay c'est bien ce qui me semblait, et ce dont j'avais peur... je ne code pas sous Android (Java et moi...). Et même si, il faudrait que le code soit publié. Bref, du coup je vais juste faire en sorte de me connecter uniquement via des réseaux de confiance, et dans le cas contraire ma connexion VPN prendra le relais.

Merci pour ta réponse =)

Le 27 mai 2015 22:07, Geo notifications@github.com a écrit :

Je vais peut être dire une connerie car j'ai horreur de ce merdier qu est la gestion de certificats sur android ...

Je pense pas que tu puisses simplement chiffrer et authentifier tes trames en espérant que le client les comprenne [image: 😔]

Je pense que ça nécessite forcément des modifications côté client : la gestion des certificats pour l'authentification dans l API et la gestion du chiffrement.

C'est pas la mère à boire non plus, faut juste le faire [image: 😄]

— Reply to this email directly or view it on GitHub https://github.com/ldleman/yana-server/issues/134#issuecomment-106057627 .

ldleman commented 9 years ago

J'ignore comment ça se passe sous le client android (il faudrait poker novares a ce sujet), en revanche le client windows est normalement déjà prévu pour gérer le https sans manip particulières ( a part renseigner l'adresse du serveur avec https évidemment)

Tu obtiens quoi comme erreur quand tu passe yana server en https et que tu active le client windows (en ayant bien changé l'adresse du serveur évidemment) ?

Le 28/05/2015 09:12, valentin8709 a écrit :

Okay c'est bien ce qui me semblait, et ce dont j'avais peur... je ne code pas sous Android (Java et moi...). Et même si, il faudrait que le code soit publié. Bref, du coup je vais juste faire en sorte de me connecter uniquement via des réseaux de confiance, et dans le cas contraire ma connexion VPN prendra le relais.

Merci pour ta réponse =)

Le 27 mai 2015 22:07, Geo notifications@github.com a écrit :

Je vais peut être dire une connerie car j'ai horreur de ce merdier qu est la gestion de certificats sur android ...

Je pense pas que tu puisses simplement chiffrer et authentifier tes trames en espérant que le client les comprenne [image: 😔]

Je pense que ça nécessite forcément des modifications côté client : la gestion des certificats pour l'authentification dans l API et la gestion du chiffrement.

C'est pas la mère à boire non plus, faut juste le faire [image: 😄]

— Reply to this email directly or view it on GitHub

https://github.com/ldleman/yana-server/issues/134#issuecomment-106057627 .

— Reply to this email directly or view it on GitHub https://github.com/ldleman/yana-server/issues/134#issuecomment-106204044.

valentin8709 commented 9 years ago

Désolé pour l'énorme temps de réponse, je n'habite plus chez moi pour le moment (stage) donc c'est parfois un peu difficile de tester tout ça. J'ai très récemment viré mon Raspberry B pour un Raspberry 2. J'ai donc refais toute l'installe en ayant un accès http (pour le clien Android) et une version https qui fonctionne très bien via navigateur ainsi que le client Windows. Je n'ai pas encore testé le client Linux, pas trop le temps en ce moment. Ce serait cool de tout passer en https, mais cette solution me convient bien vue que l'accès via mon téléphone (http) se fait quasi-uniquement en 4G, et donc très peu de probabilité d'être sniffé (contrairement à un wifi McDo ou autre...).

ldleman commented 8 years ago

Okay :), content que ça fonctionne. Je préfère eviter le https par défaut, la pluparts des utilisateurs ne sont pas à l'aise avec l'installation de certificats