Podatność w aplikacji Gotenberg (wersje przed 8.31.0) umożliwia nieuwierzytelnionemu atakującemu wykonanie dowolnych poleceń systemu operacyjnego poprzez endpoint HTTP do zapisu metadanych PDF. Jest to szczególnie niebezpieczne, ponieważ atak nie wymaga żadnej autoryzacji i pozostaje niewidoczny dla podstawowego monitoringu (serwer zwraca kod HTTP 200 z poprawnym plikiem PDF).
▸ Pokaż oryginał (EN)
Gotenberg is a Docker-powered stateless API for PDF files. Prior to 8.31.0, Gotenberg's /forms/pdfengines/metadata/write HTTP endpoint accepts a JSON metadata object and passes its keys directly to ExifTool via the go-exiftool library. No validation is performed on key characters. A \n embedded in a JSON key splits the ExifTool stdin stream into a new argument line, allowing an attacker to inject arbitrary ExifTool flags — including -if, which evaluates Perl expressions. This achieves unauthenticated OS command execution in a single HTTP request. The response is HTTP 200 with a valid PDF, making the attack transparent to basic monitoring. This vulnerability is fixed in 8.31.0.
Endpoint /forms/pdfengines/metadata/write przyjmuje obiekt JSON z metadanymi i przekazuje jego klucze bezpośrednio do narzędzia ExifTool (poprzez bibliotekę go-exiftool) bez jakiejkolwiek walidacji znaków. Osadzenie znaku nowej linii (\n) w kluczu JSON powoduje podział strumienia stdin ExifTool na nowy wiersz argumentu, co pozwala atakującemu wstrzyknąć dowolne flagi ExifTool. Flaga -if umożliwia ewaluację wyrażeń Perl, co w konsekwencji prowadzi do wykonania dowolnych poleceń systemu operacyjnego w ramach pojedynczego żądania HTTP.
Nieuwierzytelniony atakujący może osiągnąć pełne zdalne wykonanie kodu (RCE) na serwerze hostującym kontener Gotenberg, uzyskując tym samym dostęp do poufnych danych, możliwość modyfikacji systemu lub jego całkowitego przejęcia.
Należy zaktualizować Gotenberg do wersji 8.31.0 lub nowszej, w której podatność została naprawiona. Dodatkowo zaleca się ograniczenie dostępu sieciowego do endpointów API Gotenberg wyłącznie do zaufanych źródeł na poziomie firewalla lub warstwy sieciowej.
Gotenberg (aplikacja Docker) w wersjach wcześniejszych niż 8.31.0
Podatność dotyczy środowisk kontenerowych (Docker). Atak jest szczególnie trudny do wykrycia — serwer zwraca odpowiedź HTTP 200 z poprawnym plikiem PDF niezależnie od tego, czy exploit został wykonany. Szczegóły opublikowano w ramach GitHub Security Advisory GHSA-rqgh-gxv4-6657.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HThecodingmachine Gotenberg
APPThecodingmachine< 8.31.0
Powiązane podatności
SSRF w Gotenberg — ominięcie deny-list przez IPv6-mapped adresy
Gotenberg: injection w wartościach metadanych — zapis plików i symlinki
An incomplete-cleanup vulnerability in the Office rendering engine of Gotenberg through 6.2.1 allows an attack...
A directory traversal vulnerability in file upload function of Gotenberg through 6.2.1 allows an attacker to u...
In Gotenberg through 6.2.1, insecure permissions for tini (writable by user gotenberg) potentially allow an at...