Die Vielzahl an Technologien bringt die Einschränkungen mit sich, die zur Notwendigkeit der Fragmentierung von IP-Paketen führen können. Unterschiedliche Übertragungssysteme haben nämlich unterschiedliche MTUs (Maximum Transfer Units). Die MTU gibt die maximale IP-Paketlänge/-größe für einen gegebenen Netzwerktyp bzw. ein Übertragungssystem an. Die MTU ist durch das Netzwerk nach oben beschränkt, kennt nach in der Paketgröße nach unten jedoch keine Limitierung. Je kleiner sie ist, desto mehr werden die Nutzdaten bei der Übertragung fragmentiert. Hierbei fällt im Zusammenhang mit dem Begriff „MTU“ oft die Bezeichnung „MSS“ (Maximum Segment Size). Beide stehen in einem Zusammenhang, dürfen aber nicht verwechselt werden. Die MTU ist die maximale Größe des kompletten Datenpakets, wobei die MSS die Größe der Nutzdaten innerhalb des Pakets angibt.
Der Unterschied von MTU und MSS bei TCP/IP:
Description of an ethernet frame (©Link11)
Unterschiedliche MTU-Größen verschiedener Netzwerktypen in Bytes:
Netzwerktyp | MTU |
Ethernet | 1500 |
Token Ring 4Mbps | 4464 |
Token Ring 16Mbps | 17914 |
IEEE 802.3 | 1492 |
X.25 | 576 |
FDDI | 4352 |
Die IP-Fragmentierung teilt die Pakete/Datagramme so auf, dass diese über den entsprechenden Netzwerktyp übertragen werden können. Der erneute Zusammenbau wird dem Ziel überlassen. Folgende Felder des IP-Headers spielen hierbei eine Rolle:
Sequence | Identifier | Total Length | DF May/Don’t | MF Last/More | Fragment Offset |
0 | 567 | 5180 | 0 | 0 | 0 |
Sequence | Identifier | Total Length | DF May/Don’t | MF Last/More | Fragment Offset |
0:0 | 567 | 1500 | 0 | 1 | 0 |
0:1 | 567 | 1500 | 0 | 1 | 185 |
0:2 | 567 | 1500 | 0 | 1 | 370 |
0:3 | 567 | 740 | 0 | 0 | 555 |
IP-Fragmentierung kann in mehrfacher Hinsicht für Angriffe missbraucht werden. Sie kann genutzt werden, um beim Zielsystem die IP-Kommunikation zu attackieren, aber auch, um Sicherheitskomponenten auf dem Weg zum Zielsystem zu attackieren.
Der erneute Zusammenbau (Defragmentierung) kann erst dann erfolgen, wenn alle Fragmente eingetroffen sind. UDP/ICMP-basierte Fragmentierungsangriffe senden meist gefälschte Fragmente, die nicht defragmentiert werden können. Das Vorhalten der Fragmente erfordert Speicher und kann somit im schlimmsten Falle zu einer Erschöpfung der Ressourcen im Bereich Speicher führen. Ein solcher Angriff könnte in Paketen folgender Art erfolgen:
Sequence | Identifier | Total Length | DF May/Don’t | MF Last/More | Fragment Offset |
0:0 | 100 | 1500 | 0 | 1 | 0 |
1:0 | 200 | 1500 | 0 | 1 | 0 |
2:0 | 300 | 1500 | 0 | 1 | 0 |
3:0 | 400 | 1500 | 0 | 1 | 0 |
4:0 | 500 | 1500 | 0 | 1 | 0 |
… | |||||
n:0 | X | 1500 | 0 | 1 | 0 |
Jedes Fragment stellt das erste Fragment eines Datagramms dar und kündigt weitere Fragmente an. Auf den bearbeitenden Hosts und Layer 7-Sicherheitskomponenten werden somit für alle „n“ Kommunikationen Ressourcen reserviert:
A TCP-based fragmentation attack (©Link11)
TCP-basierte Fragmentierungsangriffe (auch als Teardrop bekannt) hingegen attackieren meist die Defragmentierungsmechanismen der Zielsysteme oder Sicherheitskomponenten. Es werden überlappende Pakete gesendet, die je nach Betriebssystem sogar zu einem Absturz der Zielsystems führen können.