Die Korrekturversionen der Programmiersprache Python 3.7.10 und 3.6.13 sind verfügbar, in denen eine Sicherheitsanfälligkeit (CVE-2021-3177) behoben wurde, die zu einer Codeausführung führen kann, wenn nicht überprüfte Fließkommazahlen in Handlern verarbeitet werden, die C-Funktionen über den ctypes-Mechanismus aufrufen. Das Problem betrifft auch die Versionen Python 3.8 und 3.9, für die sich die Updates jedoch derzeit im Status des Release-Kandidaten befinden (die Veröffentlichung ist für den 1. März geplant).
Das Problem wird durch einen Pufferüberlauf in der ctypes-Funktion PyCArg_repr() verursacht, der aufgrund der unsicheren Verwendung von sprintf auftritt. Insbesondere wurde ein statischer Puffer mit einer Größe von 256 Bytes ("char buffer[256]") für die Verarbeitung des Ergebnisses des Aufrufs 'sprintf(buffer, "", self->tag, self->value.b)' reserviert, während das Ergebnis diesen Wert überschreiten konnte. Um die Anfälligkeit von Anwendungen zu überprüfen, kann versucht werden, den Wert "1e300" zu übergeben, der bei der Verarbeitung mit der Methode c_double.from_param zu einem Absturz führt, da die resultierende Zahl 308 Zeichen enthält und nicht in den 256-Byte-Puffer passt. Beispiel für fehlerhaften Code: import ctypes; x = ctypes.c_double.from_param(1e300); repr(x)
Das Problem bleibt in Debian, Ubuntu und FreeBSD unbehandelt, wurde jedoch bereits in Arch Linux, Fedora und SUSE behoben. In RHEL tritt die Schwachstelle nicht auf, da die Pakete im FORTIFY_SOURCE-Modus kompiliert werden, der solche Pufferüberläufe in String-Funktionen blockiert.
Quelle: opennet.ru
