• CWE-781: Improper Address Validation in IOCTL with METHOD_NEITHER I/O Control Code

Das Produkt definiert eine IOCTL, die für die I/O METHOD_NEITHER verwendet, validiert die bereitgestellten Adressen jedoch nicht oder fehlerhaft.

CWE-781: Improper Address Validation in IOCTL with METHOD_NEITHER I/O Control Code

CWE ID: 781
Name: Improper Address Validation in IOCTL with METHOD_NEITHER I/O Control Code

Beschreibung

Das Produkt definiert eine IOCTL, die für die I/O METHOD_NEITHER verwendet, validiert die bereitgestellten Adressen jedoch nicht oder fehlerhaft.

Erweiterte Beschreibung

Wenn eine IOCTL die Option METHOD_NEITHER für die I/O-Steuerung verwendet, liegt es in der Verantwortung der IOCTL, die ihr übergebenen Adressen zu validieren. Fehlt diese Validierung oder ist sie fehlerhaft, können Angreifer beliebige Speicheradressen bereitstellen, was zu Codeausführung oder einem Denial of Service führen kann.

Risikominderungsmaßnahmen

Maßnahme (Implementation)

Effektivität: Unknown
Beschreibung: Wenn METHOD_NEITHER für die IOCTL erforderlich ist, muss sichergestellt werden, dass alle Adressen im User-Space vor dem ersten Zugriff ordnungsgemäß validiert werden. Hierfür stehen die Routinen ProbeForRead und ProbeForWrite zur Verfügung. Zudem müssen die vom User bereitgestellten Buffers angemessen geschützt und verwaltet werden, da der I/O Manager dies nicht durchführt, wenn METHOD_NEITHER verwendet wird. Siehe Referenzen.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Soweit möglich, sollte die Verwendung von METHOD_NEITHER in der IOCTL vermieden und stattdessen Methoden gewählt werden, die die Puffergröße effektiv kontrollieren, wie z.B. METHOD_BUFFERED, METHOD_IN_DIRECT oder METHOD_OUT_DIRECT.

Maßnahme (Architecture and Design)

Effektivität: Unknown
Beschreibung: Wenn die IOCTL Teil eines Treibers ist, der ausschließlich von vertrauenswürdigen Benutzern genutzt werden soll, ist die Implementierung geeigneter Zugriffskontrollen für das zugehörige Device oder Device Namespace unerlässlich. Siehe Referenzen.