Bien qu'il soit à un niveau équivalent au protocole IP (si l'on tente de rapprocher le modèle OSI au modèle TCP/IP), un paquet ICMP est néanmoins encapsulé dans un datagramme IP. Dans le cadre de l'IPv4, la forme générale d'un tel paquet est la suivante :
Bit 0 - 7 | Bit 8 - 15 | Bit 16 - 23 | Bit 24 - 31 |
---|---|---|---|
Version/IHL | Type de service | Longueur totale | |
Identification (fragmentation) | flags et offset (fragmentation) | ||
Durée de vie(TTL) | Protocole | Somme de contrôle de l'en-tête | |
Adresse IP source | |||
Adresse IP destination | |||
Type de message | Code | Somme de contrôle | |
Bourrage ou données | |||
Données (optionnel et de longueur variable) |
Un tel datagramme est composé :
Les différents incidents possibles sont reportés ci-dessous, avec le code d'erreur correspondant.
L'argentin Fernando Gont, professeur, administrateur système et chercheur en réseau, a découvert en août 2004 plusieurs failles de sécurité dans le protocole ICMP. Il a tenté d'alerter les organismes concernés (auteurs de système d'exploitation comme Microsoft Windows ou Linux), mais également Cisco Systems (qui vend, entre autres, des routeurs), mais tous n'ont pas répondu, et Cisco a même tenté de breveter ces failles.
Parmi les failles, on peut citer :
Les messages ICMP de type 5 (redirection) peuvent être utilisés de manière malhonnête pour traverser un pare-feu. L'attaque consiste à faire passer un ordinateur par un chemin détourné qui va éviter le pare-feu. La solution consiste à configurer l'ordinateur pour ignorer ce genre de message.