ReportLab w wersji do 3.5.26 zawiera podatność umożliwiającą zdalne wykonanie kodu (RCE) poprzez wywołanie funkcji eval() na niezaufanych danych wejściowych. Atakujący może osadzić dowolny kod Python w spreparowanym dokumencie XML i doprowadzić do jego wykonania na serwerze.
▸ Pokaż oryginał (EN)
ReportLab through 3.5.26 allows remote code execution because of toColor(eval(arg)) in colors.py, as demonstrated by a crafted XML document with '<span color="' followed by arbitrary Python code.
W pliku colors.py biblioteki ReportLab funkcja toColor() wywołuje eval() na argumencie przekazanym z atrybutu 'color' znacznika XML. Atakujący może spreparować dokument XML zawierający fragment '<span color="' a następnie dowolny kod Python, który zostanie dosłownie wykonany przez interpreter. Ponieważ nie ma żadnej walidacji ani sanityzacji danych wejściowych przed przekazaniem ich do eval(), dowolne wyrażenie Python jest wykonywane w kontekście aplikacji przetwarzającej dokument.
Atakujący bez żadnego uwierzytelnienia może wykonać dowolny kod Python na serwerze przetwarzającym dokumenty, co prowadzi do pełnego przejęcia kontroli nad systemem, wycieku danych lub zniszczenia zasobów.
Należy zaktualizować bibliotekę ReportLab do wersji nowszej niż 3.5.26. Dostępne są również patche dystrybucyjne Red Hat (RHSA-2020:0195, RHSA-2020:0197, RHSA-2020:0201, RHSA-2020:0230) oraz aktualizacja dla openSUSE. Należy zastosować patche dostępne u producenta zgodnie z referencjami.
ReportLab w wersjach do 3.5.26 włącznie
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HReportlab
APPReportlab≤ 3.5.26
Powiązane podatności
ReportLab paraparser — RCE przez wykonanie kodu Python w elemencie unichar
Reportlab up to v3.6.12 allows attackers to execute arbitrary code via supplying a crafted PDF file.
All versions of package reportlab are vulnerable to Server-side Request Forgery (SSRF) via img tags. In order ...