Wiele podatności w Gurux GXDLMS Director – zdalne wykonanie kodu

Gurux GXDLMS Director to otwarte narzędzie do obsługi liczników energii przy użyciu protokołu DLMS/COSEM.

Program posiada mechanizm aktualizacji bibliotek z rozszerzeniami oraz plików zawierających kody OBIS (definicje specyficzne dla konkretnych urządzeń potrzebne do komunikacji z licznikiem).

CVEID: CVE-2020-8809
Podatny produkt i jego wersja: Gurux GXDLMS Director (wszystkie wersje poniżej 8.5.1905.1301)
Typ podatności: CWE-494: Pobieranie kodu bez weryfikacji kryptograficznej

CVEID: CVE-2020-8810
Podatny produkt i jego wersja: Gurux GXDLMS Director (wszystkie wersje)
Typ podatności: CWE-23: Path Traversal

Podsumowanie: podatności Gurux GXDLMS Director

Wszystkie wersje programu Gurux GXDLMS Director poniżej 8.5.1905.1301 posiadają mechanizm aktualizacji rozszerzeń i kodów OBIS zrealizowany przy pomocy nieszyfrowanego protokołu HTTP.Ponadto, wszystkie wersje posiadają podatność typu path traversal przy pobieraniu kodów OBIS. Błędy te mogą zostać wykorzystane przez atakującego w celu zdalnego wykonania kodu.

Opis

Atakujący w pozycij man-in-the-middle (np. operator złośliwej sieci Wi-Fi) może wyświetlić użytkownikowi komunikat o dostępnej aktualizacji poprzez modyfikację zawartości plików gurux.fi/obis/files.xml I gurux.fi/updates/updates.xml. Atakujący może też ingerować w pobierane pliki. W przypadku rozszerzeń (jeżeli użytkownik z nich korzysta), będzie to oznaczało możliwość wykonania kodu przez atakującego. W przypadku kodów OBIS (które są niezbędnym komponentem program bez którego niemożliwa jest komunikacja z licznikami), atakujący może doprowadzić do wykonania kodu wykorzystując podatność path traversal.

W trakcie pobierania kodów OBIS, program nie sprawdza czy otrzymane pliki faktycznie zawierają kody OBIS i nie weryfikuje ścieżek pod kątem podatności path traversal. Oznacza to, że atakujący może przesłać pliki wykonywalne I umieścić je w jednym z katalogów autostartu systemu Windows (zostaną one uruchomione przy następnym starcie systemu), lub przesłać biblioteki i umieścić je wewnątrz istniejącej instalacji programu GXDLMS Director (zostaną one uruchomione przy następnym uruchomieniu programu). Te techniki pozwalają na osiągnięcie wykonania kodu nawet w sytuacji w której użytkownik nie korzysta z rozszerzeń.

Reprodukcja

1. Uruchom serwer HTTP
2. W głównym katalogu serwera, stwórz katalog obis.
3. Stwórz plik obis/files.xml z następującą zawartością:

<files>
<file modified=”28-09-2099″ name=”Iskraemeco”>../../../../../../../../../../Users/Public/Documents/test.txt</file>
</files>

4. Stwórz katalog Users/Public/Documents.
5. Stwórz plik Users/Public/Documents/test.txt.
6. Na komputerze z systemem Windows, edytuj plik C:\Windows\system32\drivers\etc\hosts I dodaj do niego następującą linię: 127.0.0.1 gurux.fi (jeżeli serwer HTTP nie znajduje się na tym samym urządzeniu, zastąp 127.0.0.1 adresem IP serwera).
7. Uruchom Gurux GXDLMS Director. Zaakceptuj pobieranie aktualizacji.
8. Zweryfikuj, że w katalogu C:\Users\Public\Documents\ powstał plik test.txt.

Rozwiązanie

Zaktualizuj Gurux GXDLMS Director do najnowszej wersji.

Dodaj komentarz

0 komentarzy

Wyślij komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *