21.01.2015 | 15:50

Adam Haertle

Dziwny błąd wyglądający zupełnie jak tylna furtka w bazach Oracle

Niektóre błędy od razu wyglądają podejrzanie. Szczególne wątpliwości nas ogarniają, gdy nie jest to typowa pomyłka programisty, błąd jest dobrze ukryty przed przypadkową identyfikacją i pozwala na przejęcie kontroli nad systemem.

Oracle wypuścił wczoraj niecałe 170 łat na swoje systemy. Wśród usuniętych błędów znajduje się jeden szczególnie ciekawy. Jak donosi znany badacz bezpieczeństwa systemów bazodanowych David Litchfield, odkrywca problemu, błąd umożliwia przejęcie kontroli nad dowolną bazą danych w produkcie Oracle eBusiness Suite (wersje 12.2.x, 12.1.x, 12.0.x, 11.5.10).

Dziwne uprawnienia w dziwnym miejscu

Błąd CVE-2015-0393 jest ciekawy, ponieważ wynika z nieprawidłowej konfiguracji uprawnień dostępu, pozwalającej dowolnemu użytkownikowi (a wg badacza dzięki innym błędom nie jest nawet potrzebne konto) na wykonywanie poleceń z uprawnieniami administratora. Sam błąd jest „ukryty” w rzadko analizowanym obszarze bazy, dzięki czemu do tej pory umykał uwadze specjalistów. Polega on na tym, że rola PUBLIC posiada uprawnienie INDEX na tablicy DUAL, której właścicielem jest SYS. Oznacza to, że użytkownik, posiadający wiedzę o takiej konfiguracji uprawnień, może wykonywać na bazie polecenia SQL z najwyższymi uprawnieniami SYS i na przykład odczytywać dowolną jej zawartość lub ją modyfikować.

Logo firmy Oracle

Logo firmy Oracle

Jak wykorzystać ten problem do podniesienia uprawnień użytkownika? Opisuje to sam autor odkrycia. Wystarczy korzystając z konta zwykłego użytkownika stworzyć funkcję GETDBA, która przypisuje rolę DBA do roli PUBLIC. Następnie trzeba stworzyć indeks np. EXPLOIT_INDEX na tablicy SYS.DUAL, który wywołuje funkcję GETDBA. Potem wystarczy już tylko wykonać SELECT na tablicy DUAL. Spowoduje to wykonanie funkcje GETDBA i przyznanie uprawnień.

Po co to komu

Litchfield znalazł błąd  przy okazji audytu wykonywanego dla jednego ze swoich klientów i na początku myślał, że trafił na specjalnie skonstruowaną tylną furtkę, która ma umożliwiać atakującemu ciągły dostęp do bazy. Tablica DUAL pełni funkcję stricte techniczną, posiada tylko jeden wiersz i nie ma żadnego powodu, dla którego trzeba by zakładać na niej indeks. Oczywiście nie ma również żadnego uzasadnionego powodu, dla którego rola PUBLIC ma mieć uprawnienie do zakładania takiego indeksu. Dopiero później z zaskoczeniem odkrył, że jest to domyślna konfiguracja produktu Oracle dostarczanego wszystkim klientom.

Litchfield informacje o odkrytym problemie przekazał Oracle jeszcze w czerwcu 2014 wraz z prośbą o ustalenie, w jaki sposób taka podejrzana konfiguracja znalazła się w kodzie produkcyjnym. W odpowiedzi usłyszał, że nie udało się ustalić kto, kiedy ani po co wprowadził taką zmianę do kodu. Nie da się ukryć, że w takiej sytuacji ludzki błąd bardzo trudno odróżnić od celowego działania.

Litchfield opublikował także dokładny opis innych odkrytych przez siebie błędów w bazach Oracle załatanych w ostatniej aktualizacji.

Powrót

Komentarze

  • 2015.01.21 16:29 Duży Pies

    Ciekawe ile jeszcze zostanie odkrytych takich niby-błędów w rodzinach baz: MS SQL, Oracle, IBM DB, Sybase? Od kiedy MySQL został wykupiony przez Oracla, też już bym tej bazie nie ufał – to niepokojące bo wiele serwisów WWW stoi właśnie na niej.
    .
    Duże korpa IT, szczególnie z amerykańskim rodowodem, nie mogą działać nie współpracując z NSA. Co jakiś czas warto to sobie uzmysłowić, bo w natłoku codziennych spraw, nie myślimy o tym. Ale NSA myśli…
    .
    No to zostaje tylko MariaDB i PostgreSQL, jeśli chodzi o bazy relacyjne.
    Pytanie 1: Czy są bezpieczne?
    Pytanie 2: Jakiej bazy używać?
    Pytanie 3: Jak żyć?

    Odpowiedz
    • 2015.01.22 15:02 niemammaila

      Duzy Psie, szanuje Cie ze wzgledu na wiedze jaka posiadasz (czytam twoje komentarze pod prawie kazdym arykulem), pamietaj ze pomiedzy srodkami ostroznosci, a paranoja jest cienka linia i latwo jest sie zgubic.

      Odpowiedz
      • 2015.01.22 16:38 Duzy Pies

        Wiem o tym. Ale perfekcjonizm nie daje mi spokoju;) Każdy ma jakieś kuku, ja mam takie;)
        .
        Jeśli nadal uważasz że przesadzam, to polecam Ci zaznajomienie się z casusem doktora Samsona. To był psychoterapeuta i gwiazda różnych telewizji śniadaniowych. Przekop archiwa sprzed około 10 lat. Samson wszędzie występował jako ekspert w TV, radio, udzielał wywiadów w gazetach. A potem stało się coś strasznego… Okazało się że nobliwy pan psycholog jest pedofilem. Zebrano mocne dowody i poszedł siedzieć.
        .
        Gdybym uczył młodych adeptów bezpieczeństwa informacji albo kryminalistyki (to mój konik), dałbym im ten casus do opracowania. Okropne w tym wszystkim było także to, że pedofil wykorzystywał dzieci z dysfunkcjami psychicznymi, więc one nigdy by o tym nikomu nie powiedziały.
        .
        To co tutaj napiszę jest trochę perwersyjne ale chyba prawdziwe: jeśli w tym całym okropieństwie które się stało, jest jeszcze jakiś sens, to niech tym sensem będzie to, że powinniśmy nauczyć się takiej „zdrowej” nieufności. Niech inni nazywają to paranoją, mam to w dupie. Jeśli chcesz być naprawdę dobrym w bezpieczeństwie (i kryminalistyce), to nie ufaj nikomu! Nikomu, czyli także mnie – osobie która Ci mówi żebyś nie ufał… Naucz się tego i stosuj to, a będziesz niezwyciężony! Czego Ci życzę! Pozdrawiam, Duży Pies

        Odpowiedz
        • 2015.01.29 10:38 XY

          jednak paranoja…

          Odpowiedz
          • 2015.01.29 12:43 Sraka

            jednak wieśniak…

    • 2015.01.23 00:05 Wujek

      > Pytanie 2: Jakiej bazy używać?

      Tylko SQLite – szybki, prosty, bezpieczny.

      Odpowiedz
  • 2015.01.21 17:01 Łukasz

    A Scott dla kogo opracował projekt bazy danych? Przecież samo Oracle ma mocne podwaliny w… ” Nazwa Oracle pochodzi od nazwy kodowej jednego z projektów sponsorowanych przez CIA, nad którymi pracował współzałożyciel korporacji Oracle – Larry Ellison.”

    Odpowiedz
  • 2015.01.22 13:22 k0sM3n

    Ja uzywam progresql. Baza stoi za firewallem a dostep jedynie przez vpn. Czy to bezpieczne? Nsa wszedzie pakuje te swoje lapska

    Odpowiedz
  • 2015.01.22 14:59 niemammaila

    Jak odoznic (szczegolnie w tym wypadku) ze byl to „blad” celowo wprowadzony?

    Odpowiedz
  • 2015.01.22 15:36 NieSiejciePaniki

    Przetestowalem i atak NIE dziala na bazach standardowych Oracle 11.2.0.3.x i 11.2.0.4.x nawet bez CPUJan2015, Litchfield cos kreci bo raz pisze o engine’ie DB a raz o aplikacji EBS, standardowo nowe releasy (11.2, 12.1) nie maja przypisanych takich uprawnien do roli PUBLIC, chyba ze ktos im je explicte nada – tutaj nadala je aplikacja – tez od Oracle.

    Odpowiedz
    • 2015.01.22 15:47 Adam

      A gdzie w artykule mowa o standardowych bazach? Mowa tylko o EBS.

      Odpowiedz
  • 2015.01.29 10:42 XY

    Ten kto czytał „Rewolucję w kryptografii” ten wie, że każda technologia, każde rozwiązanie ma lub będzie miało tylną furtkę. Tylko sposoby są coraz bardziej wyrafinowane.

    Odpowiedz

Zostaw odpowiedź do k0sM3n

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

Dziwny błąd wyglądający zupełnie jak tylna furtka w bazach Oracle

Komentarze