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

