Jak zdobyć roota na Ubuntu? Prosto: dirty_sock exploit

13 lutego 2019, 15:48 | W biegu | komentarzy 5
: zin o bezpieczeństwie - pobierz w pdf/epub/mobi.

Świetny opis podatności dającej lokalnie uprawnienia roota na Ubuntu (tzw. privilege escalation ze zwykłego użytkownika do roota). Podatne linie: Ubuntu 18.10, Ubuntu 18.04 LTS, Ubuntu 16.04 LTS, Ubuntu 14.04 LTS.

Opis pokazuje, że tego typu problemy to nie tylko czarna magia i omijanie piętnastu metod antibufferoverflow. Czasem może być prosto. Bardzo prosto.

W skrócie:

  • Domyślnie w Ubuntu działa usługa snapd (z uprawnieniami root)
  • Usługa udostępnia lokalnie (jako plik) UNIX socket (po polsku: „gniazdo dziedziny Uniksa” hmmm ;)
  • Do socketa (do pliku) każdy może pisać (uprawnienia 0666)
  • Po drugiej stronie socketa znajduje się API REST (takie zwykłe, z którym można się komunikować poprzez HTTP), np. tak:
    $ nc -U /run/snapd.socket
    GET / HTTP/1.1
    Host: 127.0.0.1
  • API posiada jednak uprawnienia (nie ma tak łatwo;), ale podłączając się do socketa można wstrzyknąć fragment ;uid=0; – w dość banalny sposób (podając stosowną nazwę socketa podczas połączenia):
    sockfile = „/tmp/sock;uid=0;”
  • Powoduje to, że API z tego ciągu poniżej wydobywa UID – ale błąd w kodzie powoduje, że ostatnie uid napisuje to „normalne”:
    remoteAddr = „pid=5275;uid=1000;socket=/run/snapd.socket;/tmp/sock;uid=0;”
  • Dalej to np. odpalenie metody: POST /v2/create-user i mamy lokalnego roota
  • Autor publikuje dwa przykładowe exploity

dirty sock

Łatać.

–ms

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. kamil

    i na co komu ten snapczat

    Odpowiedz
  2. Marcin

    urywa dupę, zaraz odpalam wirtualkę:)

    Odpowiedz
  3. Brajan

    A gdzie logo? wszystkie podatności mają przecież swoje logo jak heartbleed etc.

    Odpowiedz
  4. miki

    Zdaje sie działa jakiś auto-update bo snap sam mi sie aktualizował do non-vulnr wersji 30 stycznia

    Odpowiedz
  5. ja2

    W 14.04 i 16.04 domyślnie nie działa usługa Snap/Snapcraft, dopiero od 18.04 wzwyż.

    Co prawda można doinstalować samemu, ale na „czystej” instalacji jej nie ma. Zarówno na desktopie jak i na wersji Server.

    Odpowiedz

Odpowiedz