Biuletyn Bezpieczeństwa PLOUG

Od 2003-11-24 do 2004-01-31

Wojciech Dworakowski
wojtekd@securing.pl

W omawianym okresie czasu światło dzienne ujrzał tylko
jeden oficjalny Oracle Security Alert (dotyczący błędów w implementacji SSL).
Jednakże źródła niezależne podały informacje o dwóch innych poważnych
podatnościach. O ile na informacje o podatności w Oracle HTTP Server producent
mógł nie zdążyć zareagować (została ujawniona 24.01.2004), to podatności
związane z błędami typu buffer-overflow w procedurach bazy są znane od połowy
grudnia, a jak do tej pory nie zostały uwzględnione
w Oracle Security Alerts. Wiadomo jedynie że błędy zostały usunięte
w wersji 9.2.0.3.

Liczne błędy w implementacji protokołu SSL

Produkty podatne na zagrożenie:

  • Oracle Database Server – wszystkie wersje (zarówno 8i
    jak i 9i).
  • Oracle 9i Application Server – wszystkie wersje.
  • Oracle HTTP Server – wszystkie wersje.

Data publicznego ujawnienia:

  • 01.10.2003 – publikacja CERT
  • 04.12.2003 – Oracle Security Alert #62

Opis:

W różnych implementacjach protokołu SLL odnaleziono błędy
pozwalające na atak techniką buffer-overflow. Podatne procedury wiążą się
z interpretacją certyfikatów X.509 przez serwer. Implementacja SSL użyta we
wszystkich produktach Oracle jest również podatna na tego typu ataki.
Skutkiem pomyślnego ataku może być zakłócenie pracy
serwera lub nawet wykonanie dowolnego kodu w systemie operacyjnym. Zagrożenie
jest tym większe, że w dużej ilości instalacji wykorzystujących Application
Server do obsługi użytkowników z Internetu jest włączona funkcjonalność
SLL. Ponadto są publicznie dostępne exploity wykorzystujące tę podatność.

Stopień zagrożenia: bardzo duży

Szczegóły techniczne:

Opisywane błędy mają swoją genezę w błędach w pakiecie
OpenSSL, na którym opiera się implementacja SSL w produktach Oracle. Błędy są
spowodowane brakiem ścisłego sprawdzania parametrów wejściowych przy
przetwarzaniu certyfikatu jakim przedstawia się klient. Jednakże część błędów
jest możliwa do wykorzystania zawsze – nie tylko w tych konfiguracjach, w
których jest wykorzystywany certyfikat klienta.

Usunięcie zagrożenia:

Oracle udostępniło poprawki dla następujących wersji
swoich produktów:

  • Oracle9i Database Server Release 2, Version 9.2.0.4
  • Oracle9i Database Server Release 2, Version 9.2.0.3
  • Oracle9i Database Server Release 1, Version 9.0.1.4
  • Oracle8i Database Server Release 3, Version 8.1.7.4
  • Oracle9i Application Server Release 1, Version 1.0.2.2
  • Oracle9i Application Server Release 1, Version 1.0.2.1s

Uwaga: Według informacji Oracle, udostępniona łata
poprawia również inne, starsze błędy związane z OpenSLL. Błędy te są
opisane w bazie CVE (http://cve.mitre.org) pod następującymi numerami:
CVE-2002-0082, CAN-2003-0078, CAN-2003-0147, CAN-2003-0131.

Podatności typu buffer-overflow w zmiennych TIME_ZONE, NUMTOYMINTERVAL, NUMTODSINTERVAL, FROM_TZ

Produkty podatne na zagrożenie:

Oracle Database Server 9i – wszystkie wersje do
9.2.0.3.

Data publicznego ujawnienia: 12.12.2003

Opis:

W procedurach TIME_ZONE, NUMTOYMINTERVAL, NUMTODSINTERVAL i
FROM_TZ istnieją poważne błędy, mogące prowadzić do możliwości zakłócenia
pracy serwera lub wykonania dowolnych operacji na systemie operacyjnym. Błędy
mogą zostać wykorzystane przez dowolnego użytkownika. Standardowo wszyscy użytkownicy
mają dostęp do tych procedur. Warto zwrócić uwagę,
że w niektórych konfiguracjach procedury te mogą być dostępne z Internetu
(np. przez mod_plsql).

Stopień zagrożenia: wysoki

Szczegóły techniczne:

W wyżej wymienionych procedurach istnieją błędy związane
z brakiem sprawdzania długości wprowadzanych parametrów. Atakujący może
wprowadzić bardzo długą wartość parametru podatnej procedury i doprowadzić
do przepełnienia bufora. Podając bardzo długą wartość parametru i
odpowiednio manipulując jego zawartością, intruz może wykorzystać metodę
buffer overflow do wykonania dowolnego kodu na serwerze. Kod ten zostanie
wykonany
z uprawnieniami użytkownika „oracle” (na unixach) i LOCAL_SYSTEM
(na Windows). Może to prowadzić do przejęcia kontroli nad bazą danych
i systemem operacyjnym. Uwaga: Standardowo procedury te są dostępne dla każdego
użytkownika bazy danych.
Exploity wykorzystujące opisane podatności nie są szeroko
dostępne, jednak odkrywca błędów podał dużą ilość szczegółów
technicznych, które mogą pomóc w samodzielnym stworzeniu odpowiedniego kodu.

Usunięcie zagrożenia:

Błąd został poprawiony w wersji 9.2.0.3. Prawdopodobnie
nie są dostępne poprawki na poprzednie wersje bazy (stan na dzień
30.01.2004).

Podatność typu Cross-Site Scripting w OHS

Produkty podatne na zagrożenie:

Oracle HTTP Server – moduł isqlplus.

Data publicznego ujawnienia:
24.01.2004

Opis:

Moduł isqlplus nie sprawdza szczegółowo parametrów wejściowych.
Dzięki temu można spowodować, że parametry przekazane z przeglądarki WWW do
modułu isqlplus zostaną zinterpretowane jako kod HTML. Umożliwia to ataki na
użytkownika – np: wykradnięcie identyfikatora sesji, czy innych danych z
cookie klienta. Błąd jest stosunkowo łatwy do wykorzystania.

Stopień zagrożenia: średni

Szczegóły techniczne:

Opisywany moduł jest składnikiem aplikacji webowych
wykorzystujących Oracle Application Server lub Oracle HTTP Server, wchodzący w
skład Oracle Database Server.
Technika cross-site scripting wykorzystuje podatność w
module działającym po stronie serwera, która umożliwia zinterpretowanie
parametrów przekazywanych w zleceniu GET jako kodu HTML. Dzięki temu intruz może
zmusić swoją ofiarę (użytkownika podatnego serwisu) do wykonania tego kodu
HTML, w tym również wrogiego kodu JavaScript. Przykładowy URL wykorzystujący
tę podatność do uruchomienia kodu JavaScript w przeglądarce ofiary:

http://host/isqlplus?action=<script>alert('XYZ')</script>

Jeśli wszystkie warunki dodatkowe zostaną spełnione, to
atakujący może wykorzystać tę podatność przez odpowiednie skonstruowanie
URL-a zawierającego wrogi kod JavaScript. Gdy ofiara kliknie na tak
skonstruowany URL (np. przesłany e-mailem) to wrogi kod wykona się w jego
przeglądarce. Celem tego typu ataku jest wykradnięcie danych użytkownika.
Najczęściej celem są dane przechowywane w cookie użytkownika – np.
identyfikator sesji. Przejęcie identyfikatora sesji umożliwia podszycie się
pod użytkownika aplikacji webowej.
Podatne są tylko aplikacje wykorzystujące moduł isqlplus.

Usunięcie zagrożenia:

W tej chwili nie istnieje poprawka naprawiająca tę podatność.
Obejściem problemu może być „opakowanie” modułu
isqlplus w swój moduł, który będzie filtrował szczegółowo parametry wejściowe
i przekazywał wszystkie parametry do oryginalnego modułu isqlplus.
Ochronić przed tego typu atakami mogą również firewalle
aplikacyjne, filtrujące parametry przekazywane do serwisu WWW na poziomie
serwera HTTP.