Open Source im professionellen Einsatz

Linux Kernel: Buffer Overvlow in Netzwerk-Treiber

Schwachstellen im Linux Kernel sind immer besonders kritisch, da Angreifer darüber meist sehr umfangreiche Rechte erlangen können. Dies ist auch der Fall bei einem nun entdeckten Problem in einem Broadcom-Treiber. Der Programmierfehler befindet sich in der »brcmf_cfg80211_mgmt_tx()«-Funktion in der »drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c«-Datei des Kernels. Hier kann es zu einem Buffer Overflow bei einer Speicheroperation kommen:

memcpy(action_frame->data, &buf[DOT11_MGMT_HDR_LEN], le16_to_cpu(action_frame->len)); 

Der »action_frame->data«-Puffer hat hier eine maximale Länge von »BRCMF_FIL_ACTION_FRAME_SIZE«. Aufgrund der Programmlogik ist es für einen allerdings Angreifer möglich, mehr Daten über diese Länge hinaus in den Speicher zu schreiben. Dies führt dann zu dem Overvlow, den der Angreifer ausnutzen kann, um Befehle auszuführen. Obwohl es sich um einen Fehler im Netzwerk-Code des Kernels handelt, kann die Sicherheitslücke nur von einem lokalen Angreifer ausgenutzt werden. Dies liegt daran, dass dieser Teil des Treibers nur für User-Space-Kommuniation verwendet wird, auf die ein entfernter Angreifer direkt keinen Einfluss hat. Ein lokaler Angreifer kann die Schwachstelle hingegen durch eine geschickt konstruierte »NL80211_CMD_FRAME«-Nachricht via Netlink ausnutzen.

Im Git-Repository des Kernels wurde ein entsprechender Patch eingespielt, so dass die Attacke nicht mehr möglich ist. Konkret wird hier nun die Datenlänge vor dem Kopieren geprüft, und bei zu langen Paketen ein Fehler erzeugt.

Betroffen sind die Kernel Versionen vor 4.12.2.

comments powered by Disqus

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.