Описание
gopacket provides packet processing capabilities for Go. Through version 1.7.0, multiple layer decoders use attacker-controlled lengths, counts, or offsets before validating them against packet buffers, allowing a crafted packet decoded through DecodingLayerParser or DecodeFromBytes to trigger an unrecovered panic and remotely deny service. A patch commit is available at 210f25f.
A flaw was found in gopacket, a Go library for packet processing. Multiple layer decoders in gopacket use attacker-controlled lengths, counts, or offsets without proper validation against packet buffers. A remote, unauthenticated attacker can exploit this by sending a specially crafted packet, which, when decoded, triggers an unrecovered panic. This can lead to a remote Denial of Service (DoS) condition, making the affected system unavailable.
Отчет
A flaw was found in gopacket, a Go library for packet processing. Multiple protocol layer decoders (TLS, DHCPv4, sFlow, IPSec AH, VRRPv2, Diameter, GTPv1-U, ERSPAN II, LCM, RadioTap, Dot11, and others) use attacker-controlled length, count, or offset fields to index or slice packet buffers without first validating them against the actual buffer size. A single malformed packet triggers an out-of-bounds slice or unsigned-integer underflow panic. When packets are decoded via the high-performance DecodingLayerParser or direct DecodeFromBytes path — the common pattern used by network monitors and intrusion-detection systems — the panic is not recovered and crashes the process, causing an unauthenticated remote denial of service. Applications using only gopacket.NewPacket with default options recover the panic into an error and are not crashed. Red Hat Network Observability components (CLI and eBPF agent) ship gopacket v1.5.0 and use it for packet capture, making them vulnerable.
Меры по смягчению последствий
- Upgrade gopacket to a version containing commit 210f25f or later.
- If upgrading is not immediately possible, restrict network access to services that process untrusted packet data using gopacket. Where possible, use the recovering
gopacket.NewPacket(..., gopacket.Default)code path instead ofDecodingLayerParseror directDecodeFromBytescalls, accepting the performance trade-off. Ensure that packet capture interfaces are not exposed to untrusted network segments.
Затронутые пакеты
| Платформа | Пакет | Состояние | Рекомендация | Релиз |
|---|---|---|---|---|
| Network Observability Operator | network-observability/network-observability-cli-rhel9 | Affected | ||
| Network Observability Operator | network-observability/network-observability-ebpf-agent-rhel9 | Affected |
Показывать по
Ссылки на источники
Дополнительная информация
Статус:
EPSS
7.5 High
CVSS3
Связанные уязвимости
gopacket provides packet processing capabilities for Go. Through version 1.7.0, multiple layer decoders use attacker-controlled lengths, counts, or offsets before validating them against packet buffers, allowing a crafted packet decoded through DecodingLayerParser or DecodeFromBytes to trigger an unrecovered panic and remotely deny service. A patch commit is available at 210f25f.
gopacket provides packet processing capabilities for Go. Through version 1.7.0, multiple layer decoders use attacker-controlled lengths, counts, or offsets before validating them against packet buffers, allowing a crafted packet decoded through DecodingLayerParser or DecodeFromBytes to trigger an unrecovered panic and remotely deny service. A patch commit is available at 210f25f.
gopacket: Multiple layer decoders panic on crafted packets (out-of-bounds/underflow) enabling unauthenticated remote DoS via DecodingLayerParser
gopacket provides packet processing capabilities for Go. Through versi ...
EPSS
7.5 High
CVSS3