IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

Problème openssl peu banal: wifi or not wifi?


Sujet :

Sécurité

  1. #1
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut Problème openssl peu banal: wifi or not wifi?
    Je suis arrivé il y a trois semaines dans une équipe de développement (C++ essentiellement) pour résoudre un problème vraiment peu banal

    Le système complet est composé de trois appareils: une unité d'acquisition nommée UTL (Debian 5.0 Lenny), une station de commande (un tablet-pc sous Windows XP) et un petit routeur dont je ne connais plus la marque pour l'instant

    Pour être plus précis, sur l'UTL tourne une application gérant la communication vers l'extérieur, nommé trans(-mission). Elle communique avec les autres modules de l'UTL, sans soucis.
    Elle communique avec le routeur via un câble Ethernet, en envoyant des trames SSL (via openSSL).

    L'utilisateur dispose de la station, sur laquelle sont installées les applications requises à l'interaction avec l'UTL: un serveur apache, openSSL et nos quelques applications fournissant l'interface graphique.
    Il peut se connecter au routeur soit directement en Ethernet soit par Wifi.

    C'est là que tout devient subtil.
    Pour des raisons de sécurité, lors de son démarrage, l'UTL désactive la fonction Wifi du routeur, et si aucun message de maintient de connexion venant de la station n'est reçut dans la première minute, elle réactive ce Wifi.
    Donc si la station est branchée en Ethernet, le Wifi reste éteint.

    Le cycle standard de l'application est le suivant:
    1. Démarrage autonome (ou presque) de l'UTL et de la station,
    2. L'utilisateur utilise la station pour paramétrer la mission qu'il souhaite accomplir,
      • La station envoie un message nommé READY,
      • L'UTL répond par un RREADY,
      • La station envoie une demande des paramètres actuels,
      • L'UTL répond par l'envoi des dits paramètres,
      • L'utilisateur les modifie pour les besoin de la mission,
      • La station envoie les nouveaux valeurs
    3. L'utilisateur démarre la mission,
    4. L'utilisateur termine la mission.


    Voici le moment tant attendu:
    Lorsque la station est reliée par une liaison filaire, tout se passe bien.
    Lorsqu'au contraire le Wifi est utilisé, le message de RREADY est refusé par la station.

    Présentation des symptômes plus précis:
    le module trans, qui utilise libcURL pour envoyer le RREADY, signale "ssl: couldn't create context!" (rapportée comme une erreur curl_out_of_memory...)
    lorsque apache (chargé de recevoir les messages sur la sta) est remplacé par openssl en mode serveur, on voit que le message est recu mais rejeté. 11 bytes sont attendus, mais 0 sont disponibles.

    Quelques logs ont été ajouté a openssl via libcurl, on obtient les événements suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    creating connection #0
    testing <ip of sta>... connected
    connection closed
    aborting connection #0
    ssl: couldn't create context! (ce dernier message est créé par curl)
    Un ensemble de certificats est utilisé pour sécuriser la connexion.

    Nous disposons d'une version antérieur de l'installation logicielle complète, qui est fonctionnelle. J'ai lu l'intégralité des diffs des sources des binaires que nous déployons, et je n'ai rien vu qui puissent impacter la connexion. Il n'y a d'ailleurs aucun changement concernant de trans.

    Si quelqu'un a une idée, je suis preneur.

    Compléments d'information technique:
    versions logicielles sur l'UTL:
    debian 5.0 lenny,
    openssl 0.9.8g-15+lenny6,
    libcurl 7.18.2-8lenny4
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    La source du problème est trouvée: une librairie compilée avec les binaires de l'UTL, mais qui n'est pas déployé au même endroit que ceux-ci, contrairement à ce que je pensais.

    Reste à trouver précisément l'erreur et à la corriger.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    La réponse est à la fois simple et douloureuse.
    Le code nécessite une refonte majeure.

    En effet, il suffit de modifier les déclarations de quelques fonctions pour faire disparaitre les symptomes.

    Ces trois fonctions recevaient des char*, sans les modifier. En remplaçant par des const char*, tout fonctionne.
    Je soupçonne qu'un appel à ses fonctions se faisait avec une chaine littérale.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/10/2013, 12h45
  2. Réponses: 11
    Dernier message: 17/08/2010, 00h21
  3. Réponses: 7
    Dernier message: 29/07/2010, 05h15
  4. Réponses: 2
    Dernier message: 13/06/2008, 07h58
  5. Routeur Wifi et Routeur Wifi Multiservices
    Par Dev-FX dans le forum Hardware
    Réponses: 3
    Dernier message: 28/09/2007, 17h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo