Podatność w funkcji `execute_code()` systemu PraisonAI umożliwia całkowite ominięcie piaskownicy subprocess poprzez dostęp do modułu `builtins` języka Python i wykonanie dowolnych poleceń systemowych na hoście. Luka jest krytyczna, ponieważ atakujący z minimalnym poziomem uprawnień może przejąć kontrolę nad środowiskiem uruchomieniowym.
▸ Pokaż oryginał (EN)
PraisonAI is a multi-agent teams system. Prior to version 4.6.40 of PraisonAI, corresponding to version 1.6.40 of praisonaiagents, `execute_code()` in `praisonaiagents/tools/python_tools.py` (v1.6.37, subprocess sandbox mode) can be fully bypassed using `print.__self__` to retrieve the real Python `builtins` module, from which `__import__` can be extracted via `vars()` and runtime string construction. This achieves arbitrary OS command execution on the host, completely defeating the sandbox. This is a novel bypass that survives all patches for CVE-2026-39888 (frame traversal), CVE-2026-34938 (str subclass), and CVE-2026-40158 (`type.__getattribute__` trampoline). PraisonAI version 4.6.40 and praisonaiagents version 1.6.40 contain an updated fix.
Podatność polega na tym, że mechanizm sandboxa w pliku `praisonaiagents/tools/python_tools.py` (tryb subprocess, wersja v1.6.37) nie blokuje dostępu do wbudowanego modułu `builtins` poprzez obiekt `print.__self__`. Atakujący może pobrać referencję do prawdziwego modułu `builtins`, a następnie za pomocą funkcji `vars()` oraz dynamicznej konstrukcji ciągu znaków wyodrębnić z niego funkcję `__import__`. To pozwala na zaimportowanie dowolnego modułu i wykonanie poleceń systemu operacyjnego, całkowicie omijając mechanizmy ochronne sandboxa. Opisana technika jest nowym wektorem, który nie był blokowany przez poprzednie poprawki dotyczące CVE-2026-39888, CVE-2026-34938 ani CVE-2026-40158.
Atakujący uwierzytelniony z niskim poziomem uprawnień może wykonać dowolne polecenia systemu operacyjnego na hoście, co prowadzi do pełnego naruszenia poufności, integralności i dostępności systemu oraz potencjalnie do przejęcia kontroli nad całym środowiskiem.
Należy zaktualizować PraisonAI do wersji 4.6.40 oraz praisonaiagents do wersji 1.6.40, które zawierają poprawkę eliminującą opisany wektor ataku. Szczegóły dostępne w referencjach producenta (GitHub Security Advisory GHSA-4mr5-g6f9-cfrh).
PraisonAI w wersjach wcześniejszych niż 4.6.40 oraz praisonaiagents w wersjach wcześniejszych niż 1.6.40
Podatność stanowi nowy bypass (novel bypass) przeżywający wszystkie wcześniejsze poprawki dla powiązanych CVE: CVE-2026-39888 (frame traversal), CVE-2026-34938 (str subclass) oraz CVE-2026-40158 (type.__getattribute__ trampoline), co wskazuje na systematyczne problemy z izolacją środowiska wykonawczego w tej bibliotece.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H