Accès non-autorisés

Bonjour, je voudrais vous faire part d’un problème que j’ai remarqué hier concernant des appareils Jeedom Connect dont je voulais m’assurer qu’il ne soit pas possible de les utiliser pour une période donnée. Je les ai donc désactivés, ce qui selon moi devait sûrement être suffisant.

Seulement je me suis rendu compte que même désactivés, il était possible d’accéder à l’application et même au compte Jeedom complet à partir de Jeedom Connect alors que l’appareil utilisé était censé être désactivé. En fait j’ai eu vraiment beaucoup de mal à réussir à fermer l’accès complètement quand j’ai fait le test: changer les clés d’api de l’utilisateur ne faisait rien, même désactiver l’utilisateur n’empêchait pas qu’il puisse avoir accès. C’était comme s’il n’était pas vraiment possible de désactiver l’accès à un appareil, sans avoir accès à l’appareil et en le déconnectant manuellement.

Il faut dire que la configuration de l’application a une particularité chez moi, elle intègre dans une page un design de Jeedom à partir duquel on peut avoir accès à beaucoup de choses. C’est cette page qui se connectait toujours à Jeedom malgré tous les efforts que je mettais. Même retirer la page de design de la configuration de l’appareil ne fonctionnait pas, l’appareil ne se mettant pas à jour une fois désactivé. Ça m’a fait m’interroger sur la façon dont l’application octroie l’accès à Jeedom car elle semble outrepasser les mécanismes normaux de Jeedom. Notons au passage que le design est accessible malgré que l’option correspondante soit désactivée dans Jeedom Connect (celle qui donne un accès direct depuis les menus de JC) . Je précise aussi que les fonctions des boutons de l’interface spécifique de JC, bien que ne fonctionnant pas, affichaient quand même une version figée de l’état des équipements, plutôt que de fermer totalement l’accès.

J’ajouterais que une fois que j’ai réussi à déconnecter l’accès (je ne suis plus certain comment j’ai fait, mais je crois que c’était de supprimer tous les comptes avec session active dans Jeedom) je n’arrivais plus à redonner l’accès, chaque fois la page en question me renvoyait à la page de login. j’ai dû recréer un nouvel équipement et nouvel utilisateur pour réussir.

Bref il s’agit d’un problème sérieux. Peut-être devriez-vous envisager une fonction de déconnexion à distance des appareils désactivés ou spécifiquement déconnectés manuellement. Surtout si les appareils de JC contournent la sécurité de Jeedom.

  • Jeedom Core : 4.4.19 (master)
    DNS Jeedom : non

Statut Démon : Démarré (2025-03-01 07:36:03)
Version JC : 1.12.0 stable
Version OS : debian 11.11
Version PHP : 7.4.33
Bin : ok / vNotif_2
Dépendances : ok

Equipements :
Tablette B : v1.12.0 stable sur ios [os : 18.2] (ws) - PR
Téléphone B : v1.8.0 stable sur ios [os : 17.5.1] (ws) - PR
Téléphone A : v1.12.0 stable sur ios [os : 18.3.1] - PR
Tablette A : v1.12.0 stable sur ios [os : 18.3.1] (ws) - PR
Téléphone C : v1.8.0 stable [os : 33] (polling) - PR

salut

si c est serieux, alors… on va regarder serieusement !


j ai tjs un peu de mal a comprendre l interet d utiliser JC pour simplement afficher une page de design… peut etre pourras tu m éclairer la dessus !?
si c est vraiment l unique besoin, pourquoi ne pas simplement se connecter via l url du-dit design directement, sans passer par JC ? quelle est la + value de JC dans ce cas la ?
je suis un peu (bcp !!) dubitatif…


bref pour en revenir au sujet, je suis également assez perplexe par plusieurs éléments que tu indiques…
mais il est tard, donc je regarderai plus tard !

alors reprenons notre sujet sérieux …

oui c’est en effet bien suffisant ! (cf ci-dessous)

tout à fait, c’était une demande et un choix fait il y a qlq années …
mais tu ne peux rien faire de particulier sur JC puisque tu restes en mode « hors connexion » donc les actions sur les widgets sont impossibles, et tu ne vois qu’un aperçu des états lors de la dernière connexion.

rien à voir avec JC donc … cf la fin de ce msg.


regardons de plus prêt

1. pour une 1ère connexion :

a. équipement désactivé :

b. utilisateur inactif :

→ les contrôles me semblent donc OK ici, on ne peut pas se connecter à l’app !


2. pour une connexion déjà initialisée :

a. équipement désactivé :

b. utilisateur inactif :

petit loupé ici en effet, puisqu’on ne revérifie pas les infos de connexion !
je viens d’ajouter un contrôle pour tomber dans la même cas de figure que l’équipement désactivé. (dispo dans la version de ce jour)

→ dans les 2 cas, l’app reste en mode « hors connexion » et aucun action n’est possible :


pour cette partie je ne sais pas répondre… (mais j’attends toujours tes réponses aux questions posées dans mon 1er message ???)

il s’agit d’une simple interface agissant comme un browser. Pourquoi jeedom ne fait pas de nouveaux contrôles sur l’utilisateur pour savoir s’il est actif ou non … je ne saurai pas dire

d’ailleurs il est très facile de reproduire exactement le même cas de figure sur ton pc :

  1. connecte toi en « admin » sur ton browser
  2. connecte toi en « X » sur ton browser en navigation privée
  3. depuis le compte « admin », désactive le compte « X »
  4. rafraichi ta page sur ton navigateur en privé ==> la connexion ne saute pas, tu as tjs accès à tout, peut réaliser n’importer quelle action, …

du coup non … l’app ne fait que se substituer à ton navigateur web, rien de plus.

« tous les comptes » non, mais toutes les sessions avec le compte en question oui

je ne comprends pas que tu sois étonné …
si tu désactives l’équipement c’est justement pour ne plus rien y faire …
au moment de la connexion l’app vérifie si elle peut se connecter avant de faire quoi que ce soit, donc forcément si l’éq est désactivé elle ne récupèrera pas sa dernière configuration …

si tu veux que les données soient effacées de l’appareil en question, tu peux utiliser la commande nommée … Effacer les données (!) pour que ca … efface les données ! (malinx le lynx !)

mais ca n’enlevera pas l’accès au menu « interface web » !
dans ce cas précis, ce que je ferai :

  • désactiver l’option Accès Interface web sur l’équipement
  • créer un widget webview qui point sur le design en question
  • ajouter le widget à l’équipement
  1. ca permet de n’avoir accès qu’au design en question, et non pas à toute l’interface web
  2. dans le pire des cas, avec l’option d’effacement des données, il n’a plus accès à rien cette fois

je rajoute malgré tout dans la boite à idée, le fait d’avoir une commande pour forcer la déconnexion complete.

1 « J'aime »

Bon je dois dire en premier lieu que je suis étonné et déçu de cette attitude alors que le risque est bien réel. Peut-être que ceci dépasse simplement Jeedom Connect et touche aussi certains aspects de Jeedom lui-même. Mais restons dans les limites de ce qui vous concerne.

Premièrement mon utilisation de l’application Jeedom Connect ne se limite pas à une page de design. C’est simplement qu’elle intègre un design particulier, en fait plusieurs, dans les menus de l’application en plus de plein d’autres choses configurées avec les composants de JC. Le problème d’accès vient toutefois de cette page de design intégrée donc dans un webview.

Je ne sais pas exactement comment Jeedom Connect fonctionne pour ce qui est d’accéder aux pages de Jeedom, ici on ne passe pas par l’api, il faut bien sûr se connecter d’une façon ou d’une autre pour avoir accès aux pages web. Seulement la connexion par l’application JC ne passe pas par le login normal de Jeedom, selon ce que je peux constater (on pourrait en discuter en détail en privé si vous voulez débattre sur ce point).

Donc je résume le problème autrement : L’accès aux pages intégrées avec un webview dans les équipements désactivés de Jeedom Connect se fait quand même. Que la fonction « accès interface web » soit activée ou non, cela ne change rien, ces pages sont accessibles à partir du moment où elles sont intégrées dans les équipements. Donc la désactiver ne réglera pas le problème. L’accès interface web dont vous parlez ne fait qu’ajouter cette option aux menus.

Dans mes tests ce que j’ai pu constater, c’est que:
1- Malgré que l’équipement soit désactivé, le webview lui ne l’était pas. Et donc il continuait à donner accès.
2- Malgré que l’utilisateur soit désactivé au niveau de Jeedom, à chaque ouverture de l’application JC, l’accès au webview était maintenu (connexion toujours active) donc sans aucune vérification si l’utilisateur est actif ou pas (peut-être est-ce ici un problème de jeedom lui-même, mais JC pourrait implémenter des contrôles supplémentaires et/ou initiler une nouvelle session à chaque nouvelle ouverture de l’application)
3 - Oui en effet je ne m’y attendais pas vraiment mais rendu là, la seule façon que je voyais de désactiver l’accès via le webview c’était de le retirer de l’application, je n’ai pas essayé de réactiver l’équipement pour qu’il se mette à jour, mais probablement que ça aurait pu marcher. Mais je maintiens que l’accès au webview n’aurait pas dû être possible sur un équipement désactivé!

Pour ce qui est de la commande Effacer les données, je ne sais pas de quoi vous parlez. Je n’ai pas cette option dans mes équipements. En tout cas pas à partir de Jeedom. Ici je parle de contrôler l’accès à Jeedom Connect alors que nous n’avons pas accès aux appareils eux-mêmes.

Je vous mets devant un cas de figure, imaginez Madame X une utilisatrice de Jeedom et de JC, elle met son mari à la porte après avoir été victime de violence. Elle désactive l’application de son téléphone pour qu’il ne puisse pas déverrouiller la porte avec leur serrure intégrée à Jeedom, mais il a toujours accès malgré tout… Alors, il entre et l’étrangle… Ok c’est un exemple un peu mélo mais vous comprenez l’importance de la sécurité dans le contexte d’une application de domotique. Chaque brèche potentielle peut mener à des vies brisées.

Donc je crois ici que d’empêcher l’ouverture des webviews d’un équipement désactivé est la solution de ce problème et ne devrait pas être un enjeu majeur à mettre en place. Dans un deuxième temps s’il serait possible de pallier au manque de sécurité des sessions Jeedom en vérifiant la validité de l’utilisateur avant de permettre à une session de continuer d’être active, ou à la limite d’empêcher l’accès à l’interface web et aux webviews, cela complèterait la résolution de ce problème.

Il n’est pas normal qu’un équipement désactivé avec un utilisateur désactivé continue à donner accès à Jeedom! Ça c’est du sérieux!

Dans ce cas, je lui proposerai de simplement lui interdire l’accès au Wifi car sur le LAN, il y a certainement d’autres accès sensibles (dont un accès direct à la serrure).

1 « J'aime »

je pense que ce que tu avais plutot en tête c’était :
« tout d’abord, merci pour le temps que tu as passé sur ton dimanche après midi pour étudier ma demande plus en profondeur, d’avoir pris le temps de me faire une réponse complète avec des captures écran, et en plus d’avoir réaliser un fix aussi rapidement !
c’est vraiment appréciable d’avoir autant de réactivé »

heureusement que je sais lire entre les lignes !! :sunglasses:

sache que c’est donc pour moi un vrai plaisir de passer qlq heures de mon dimanche après midi pour toi, plutôt que de le passer à jouer avec mon fils

13 « J'aime »

Non mais sérieux !!! On parle de domotique open source, là !
Peut-être que dans ton exemple (malsain) on changera les serrures…la pauvre dame aura d’autres soucis que de désactiver l’équipement JC de son mari !

Pour aller plus loin dans ta reflexion, quelqu’un qui a eu un acces admin à Jeedom un n’a pas besoin de JC pour lancer des actions, il suffit de se mettre de coté les clé API pour ensuite lancer des commandes, d’anticiper le truc et de se créer des virtuels qui vont bien …

1 « J'aime »

Alors merci pour le fix du dimanche après-midi et la réactivité. C’est très apprécié.