CVE-2026-64527 in Linux
Zusammenfassung
von VulDB • 25.07.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
drm/hyperv: Validierung der VMBus-Paketgröße im Empfangs-Callback
hyperv_receive_sub() liest msg->vid_hdr.type und leitet die Verarbeitung in einen von vier Nachrichten-Typ-Zweigen weiter, ohne zu wissen, wie viele Bytes der Host in hv->recv_buf geschrieben hat. Der Abschlusspfad führt anschließend memcpy(hv->init_buf, msg, VMBUS_MAX_PACKET_SIZE) aus, sodass der Verbraucher, der auf wait_for_completion_timeout() wartet, bis zu 16 KiB Reste einer vorherigen Nachricht als Antwort-Payload lesen kann.
bytes_recvd wird an hyperv_receive_sub() übergeben und jedes Paket, das den Pipe- + Synthvid-Header nicht vollständig abdeckt, wird zurückgewiesen. Eine einzige switch-Anweisung auf msg->vid_hdr.type berechnet anschließend die typspezifische Payload-Größe: Die drei Abschluss steuernden Typen (SYNTHVID_VERSION_RESPONSE, SYNTHVID_RESOLUTION_RESPONSE, SYNTHVID_VRAM_LOCATION_ACK) fallen in einen gemeinsamen Exit-Zweig, der diese Größe vor memcpy/complete erfordert, während SYNTHVID_FEATURE_CHANGE seine eigene Payload validiert und zurückkehrt, bevor is_dirt_needed gelesen wird. Unbekannte Typen werden verworfen.
SYNTHVID_RESOLUTION_RESPONSE ist variabler Länge: Der Host füllt resolution_count-Einträge auf, nicht das gesamte SYNTHVID_MAX_RESOLUTION_COUNT-Array. Zuerst wird das feste Präfix validiert, damit resolution_count gelesen werden kann; dieser Wert wird gegen das Array begrenzt und es wird nur ein array-großes Segment benötigt, sodass die kürzeren Antworten des Hosts akzeptiert werden.
Der Sub-Handler wird nur ausgeführt, wenn vmbus_recvpacket() erfolgreich zurückgegeben hat. Die memcpy-Länge ist bytes_recvd, welches bei einem erfolgreichen Empfang nur durch VMBUS_MAX_PACKET_SIZE begrenzt ist; bei -ENOBUFS meldet vmbus_recvpacket() stattdessen die erforderliche Länge, welche hv->recv_buf überschreiten kann, sodass das Kopieren von bytes_recvd über die 16-KiB-Puffer hinaus lesen und schreiben würde. Die Bedingung des erfolgreichen Rückgabewerts hält den Kopiervorgang begrenzt. Der Pfad mit einem Nicht-Null-Rückgabewert ist selbst ein Fall einer fehlerhaften Nachricht und wird nun protokolliert, anstatt stillschweigend übersprungen zu werden; eine Kanalwiederherstellung wird nicht versucht.
Abgelehnte Pakete werden über drm_err_ratelimited() gemeldet, anstatt sie stillschweigend zu verwerfen, was dem CoCo-härtungsmuster in hv_kvp_onchannelcallback() entspricht.
If you want to get best quality of vulnerability data, you may have to visit VulDB.