OliveTin w wersjach do 3000.10.0 włącznie zawiera dwie niezależne podatności klasy command injection (CWE-78), które łącznie umożliwiają nieuwierzytelnionemu atakującemu wykonanie dowolnych poleceń systemowych na hoście. Podatność jest krytyczna ze względu na domyślną konfigurację aplikacji oraz brak dostępnej poprawki w chwili publikacji.
▸ Pokaż oryginał (EN)
OliveTin gives access to predefined shell commands from a web interface. In versions up to and including 3000.10.0, OliveTin's shell mode safety check (`checkShellArgumentSafety`) blocks several dangerous argument types but not `password`. A user supplying a `password`-typed argument can inject shell metacharacters that execute arbitrary OS commands. A second independent vector allows unauthenticated RCE via webhook-extracted JSON values that skip type safety checks entirely before reaching `sh -c`. When exploiting vector 1, any authenticated user (registration enabled by default, `authType: none` by default) can execute arbitrary OS commands on the OliveTin host with the permissions of the OliveTin process. When exploiting vector 2, an unauthenticated attacker can achieve the same if the instance receives webhooks from external sources, which is a primary OliveTin use case. When an attacker exploits both vectors, this results in unauthenticated RCE on any OliveTin instance using Shell mode with webhook-triggered actions. As of time of publication, a patched version is not available.
Pierwszy wektor polega na tym, że funkcja bezpieczeństwa `checkShellArgumentSafety` blokuje wiele niebezpiecznych typów argumentów, lecz pomija typ `password` — użytkownik może więc wstrzyknąć metaznaki powłoki w polu argumentu typu `password`, które są następnie przekazywane do `sh -c` bez sanityzacji. Drugi, niezależny wektor pozwala nieuwierzytelnionemu atakującemu na osiągnięcie RCE poprzez żądania webhook: wartości JSON wyekstrahowane z webhooka trafiają do `sh -c` całkowicie z pominięciem jakichkolwiek sprawdzeń bezpieczeństwa typów. Ponieważ OliveTin domyślnie działa w trybie `authType: none` z włączoną rejestracją, wektor 1 jest dostępny dla każdego uwierzytelnionego użytkownika, a wektor 2 dla każdego, kto może wysłać webhook do instancji.
Atakujący może wykonać dowolne polecenia systemu operacyjnego z uprawnieniami procesu OliveTin, co w praktyce oznacza pełne przejęcie kontroli nad hostem, kradzież danych, instalację malware lub lateral movement w sieci.
W chwili publikacji podatności (2026-02-25) poprawiona wersja nie była dostępna. Należy śledzić repozytorium producenta pod adresem https://github.com/OliveTin/OliveTin/security/advisories/GHSA-49gm-hh7w-wfvf i zastosować patch natychmiast po jego udostępnieniu. Do czasu wydania poprawki zaleca się: wyłączenie trybu Shell mode, zablokowanie dostępu do endpointów webhook z zewnętrznych źródeł (firewall, reguły sieciowe), włączenie silnego uwierzytelniania (zmiana `authType` z wartości domyślnej `none`) oraz ograniczenie uprawnień procesu OliveTin do niezbędnego minimum.
OliveTin (projekt OliveTin) — wszystkie wersje do 3000.10.0 włącznie, działające w trybie Shell mode z włączonymi akcjami wyzwalanymi przez webhook lub z włączoną rejestracją użytkowników
Według opisu w chwili publikacji (2026-02-25) łatka nie była jeszcze dostępna. Połączenie obu wektorów pozwala na nieuwierzytelniony RCE na domyślnie skonfigurowanej instancji OliveTin używającej Shell mode z obsługą webhooków, co jest podstawowym przypadkiem użycia produktu.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HOlivetin
APPOlivetin≤ 3000.10.0
Powiązane podatności
OliveTin gives access to predefined shell commands from a web interface. In 3000.10.2 and earlier, OliveTin’s ...
OliveTin gives access to predefined shell commands from a web interface. Prior to 3000.11.2, when the saveLogs...
OliveTin gives access to predefined shell commands from a web interface. Prior to version 3000.11.1, when JWT ...
OliveTin gives access to predefined shell commands from a web interface. Prior to version 3000.10.2, the Passw...
OliveTin gives access to predefined shell commands from a web interface. Prior to version 3000.10.3, an unauth...