2010-04-06 2 views
4

J'essaye d'écrire un programme qui vérifiera que tous les biscuits envoyés de la machine vont en fait au domaine d'où ils viennent. Cela fait partie d'un projet de sécurité plus vaste visant à détecter les attaques malveillantes basées sur des cookies (telles que XSS). Le problème principal de ce projet est la détection des cookies sortants. Quelqu'un peut-il me diriger dans la bonne direction pour surveiller le trafic HTTP sortant pour l'information de cookie? Autres informations sur le projet: Il s'agit d'une application Windows écrite en C et de nombreux langages de script. Merci beaucoup pour l'aide.Comment puis-je surveiller si un cookie est envoyé à un domaine autre que celui d'où il provient?

+0

Mon application n'envoie ni ne reçoit pas elle-même de cookies. Mon programme s'exécute en arrière-plan et vérifie que tous les cookies envoyés depuis la machine sur laquelle ils s'exécutent vont au domaine d'où ils proviennent. Idéalement, cette application doit fonctionner quel que soit le navigateur utilisé par un client. Ainsi, je suppose qu'il aura besoin de renifler tout le trafic http provenant de mon ordinateur pour obtenir des informations sur les cookies.Ensuite, une fois les informations de cookie trouvées, vérifiez qu'elles vont dans le même domaine que celui d'où elles proviennent. Mon problème est donc: Comment puis-je surveiller mon trafic http sortant pour tous les cookies? – Bsaltafo

+2

Le système de sécurité que vous proposez n'est pas possible. Vous ne pouvez pas contrôler les actions du client de cette manière. De plus, la charge utile XSS pourrait encoder le cookie lors de sa transmission, donc même si vous pouviez sniffer le trafic des clients, vous ne pourrez jamais trouver l'identifiant de session que vous recherchez. – rook

+1

+1 pour patcher votre XSS. C'est beaucoup plus facile. –

Répondre

0

Vous ne pouvez pas détecter les cookies dans une demande sortante. En supposant que vous obtenez les expressions rationnelles pour les formats d'identification de session habituels, cela ne résout toujours rien. Un attaquant va simplement casser plusieurs requêtes et échapper à votre filtre. Ou peut-être le cryptera-t-il d'une manière ou d'une autre.

Si son site un email/forum qui a une vulnérabilité XSS, l'attaquant pourrait tout simplement poster le cookie au même site Web public, puis lire l'identifiant de session. Votre filtre est inutile, car même s'il détecte un cookie dans la requête, il est envoyé sur le même site Web. Vous ne pouvez donc pas déclencher d'exception.

Il existe d'innombrables façons d'échapper à votre filtre. Je ne pense pas que ce soit un projet réalisable.

1

Vous pouvez utiliser un Firefox Add-on pour lire tous les cookies que le navigateur utilise, le navigateur sait ce que les cookies qu'il a et le domaine qui les possède. Ensuite, vous pouvez modifier Tamper-Data pour renifler toutes les demandes http sortantes et rechercher la valeur du cookie, de plus vous pouvez déposer une demande ou la modifier avant qu'elle ne soit transmise.

Cela jamais arrêter un attaquant. Il est trivial pour un attaquant de masquer/encoder/chiffrer la valeur du cookie avant la transmission.

HttpOnlyCookies est une meilleure solution (mais pas complète) à ce problème. Si cet élément d'en-tête est défini et que le navigateur le supporte, javascript ne pourra pas accéder à document.cookie. Mais l'attaquant peut utiliser XmlHttpRequest pour falsifier des requêtes contre le système, et ainsi "chevaucher" la session authentifiée.

Vous devez PATCH VOTRE XSS, protection contre XSRF, utilisez https pour la session entière et permettent HttpOnlyCookies. Je vous ai recommandé de lire A3: "Broken Authentication and Session Management" dans The Owasp Top 10 for 2010.

0

Vous pouvez détecter les éléments non-SSL que votre navigateur envoie autour de vous en faisant passer son trafic via un serveur proxy. . Vous pouvez également faire en sorte que le proxy intercepte SSL si vous êtes prêt à accepter les avertissements «certificat non sécurisé».

D'autre part, si, par exemple le nom de domaine servive est compromise dans votre voisinage, qui sait où envoie vraiment votre navigateur choses.

Je suis d'accord avec tout le monde qui suggère que l'écoute clandestine comme cela ne va pas nécessairement prouver quoi que ce soit. Aussi, une application capricieuse peut transmettre quelque chose mais que vous allez manquer à cause de l'obfuscation.

Questions connexes