MySQL – eskalacja uprawnień poprzez sytuację wyścigu
Napisał: Patryk Krawaczyński
02/11/2016 w Bezpieczeństwo Brak komentarzy. (artykuł nr 570, ilość słów: 206)
D
awid Golunski w formie. Serwer MySQL oraz jego odmiany (MariaDB, Percona) są podatne na eskalację uprawnień poprzez możliwość wygrania sytuacji wyścigu. Podatność pozwala lokalnemu użytkownikowi systemu na eskalację uprawnień i dowolne wykonanie kodu jako użytkownik bazy danych – najczęściej “mysql” – za pomocą dostępu zwykłego konta do bazy danych z podstawowymi uprawnieniami (CREATE/INSERT/SELECT). Eksploatacja zakończona sukcesem pozwala atakującemu na uzyskanie dostępu do wszystkich baz danych przechowywanych na podatnym serwerze. Wraz z połączeniem z innymi błędami może dojść nawet do pełnej kompromitacji systemu poprzez uzyskanie praw administratora. Wystarczy, że atakujący stworzy bazę danych w tymczasowym katalogu i wykona na niej operację REPAIR
, która pozwoli mu na wygranie wyścigu przed operacją chmod()
. W oknie atakujący może zamienić plik bazy danych na symlink do katalogu /var/lib/mysql
. W ten sposób wcześniej ustawione prawa dostępu bazy np. 777 zostaną przeniesione na katalog, na który wskazuje symlink. Inne wykorzystanie tej luki umożliwia uzyskanie powłoki systemowej z uprawnieniami użytkownika, z którymi został uruchomiony serwer MySQL. Podatne są wersje:
MariaDB: < 5.5.52 < 10.1.18 < 10.0.28 MySQL: <= 5.5.51 <= 5.6.32 <= 5.7.14 Percona Server: < 5.5.51-38.2 < 5.6.32-78-1 < 5.7.14-8 Percona XtraDB Cluster: < 5.6.32-25.17 < 5.7.14-26.17 < 5.5.41-37.0
Więcej informacji: PoC oraz Exploit wraz z szczegółowym opisem podatności