TCP keep Alive – LD_PRELOAD

Récemment j’ai du débogger une application embarquant un serveur réseau (protocole basé sur TCP) sur une plateforme ARM, avec un développement réalisé avec le MDK de Keil.
Le client maintenait la connexion ouverte même s’il ne générait aucun traffic, et le serveur fermait la connexion de sa propre initiative. J’ai oublié qu’il fallait activer l’option Keep Alive lors de la création de la socket à l’appel de tcp_get_socket.

Pour rappel, lors de l’appel on paramètre un timeout sur une connexion inactive avant fermeture, à moins que l’option keep alive soit activée et dans ce cas le serveur envoit une trame ACK au client pour vérifier ‘sa présence’.

Lors de la recherche du problème j’ai trouvé un article intéressant sur cette option du protocole TCP (traduit en français).

On notera à la fin de cet article la présentation d’une fonctionnalité sous Linux très intéressante, à savoir l’ordonnancement du chargement des bibliothèques dynamiques avec la variable d’environnement LD_PRELOAD.
Dans le cadre de cet article on la présente conjointement avec la bibliothèque libkeepalive (pour forcer l’option sur des programmes sans les modifier).
Cette variable inspire visiblement beaucoup de spécialiste de la sécurité (ou hacker) pour contourner des contraintes réseau ou ou bien contourner des sécurités dans le code.

À propos de Selso

Salut ! Je m'appelle Selso. Je vis à Saint-Etienne depuis 2005. Je suis ingénieur en informatique embarquée en poste chez CIO Systèmes Embarqués.
Cette entrée a été publiée dans Développement, Informatique, avec comme mot(s)-clef(s) , , , . Vous pouvez la mettre en favoris avec ce permalien.

Laisser un commentaire