Biuletyn Bezpieczeństwa PLOUG

Od 2003-04-11 do 2003-08-13

Wojciech Dworakowski
wojtekd@securing.pl

Omawiany okres obfitował w wiele ciekawych odkryć dotyczących
bezpieczeństwa Oracle. Po pierwsze – szereg błędów w Oracle E-Business
Suite. Co ciekawe – nie są to błędy nowe. Fakt, że ujrzały światło
dzienne wynika po prostu z tego, że dopiero teraz ktoś (Stephen Kost z firmy
Integrigy) zajął się badaniem bezpieczeństwa tych produktów. Po drugie
– okazało się że jedna z poprawek wypuszczonych przez Oracle w nowych
wersjach 9i, łata starą dziurę, ale wprowadza nową.

Wszystko to sprowokowało mnie do napisania krótkiego
felietonu – rozważań nad tym czy warto nakładać poprawki producenta.
Artykuł ten operuje przykładami z poniższego Biuletynu Bezpieczeństwa PLOUG.

Błąd typu buffer-overflow w Oracle Net Services

Produkty podatne na zagrożenie:

Wszystkie wersje bazy Oracle posiadające funkcjonalność
Oracle Database Link (9i, 8i, 8, 7)

Data publicznego ujawnienia: 29.04.2003

(data odkrycia błędu i powiadomienia Oracle: 30.09.2002)

Opis:

W kodzie obsługującym Oracle Database Links nie jest
sprawdzana długość bufora wejściowego. W rezultacie dowolny, standardowy użytkownik
bazy może wykorzystać tę lukę i wykonać dowolny kod na serwerze na którym
działa baza Oracle.

Stopień zagrożenia: wysoki

Szczegóły techniczne:

Aby wykorzystać opisywaną lukę, intruz musi posiadać
przywilej „CREATE DATABASE LINK”. Przywilej ten jest w instalacjach
standardowych przypisany do roli „CONNECT”, a większość kont w
Oracle należy do tej roli. Intruz musi utworzyć łącze do innej bazy, podając
jako „connect string” bardzo długi ciąg znaków, który przepełni
bufor. Np.:

CREATE DATABASE LINK ngss
CONNECT TO hr
IDENTIFIED BY hr
USING 'longstring'

Przepełnienie bufora następuje w momencie zadania dowolnego
zapytania do tej bazy:

SELECT * FROM table@ngss

Jeśli podany przez intruza w miejsce „connect string”
ciąg znaków będzie odpowiednio sformatowany, to uda się mu nadpisać adres
powrotu z procedury i w rezultacie będzie mógł wykonać na serwerze dowolny
kod z uprawnieniami użytkownika systemowego będącego właścicielem
instalacji Oracle (użytkownik „oracle” na unixach lub LOCAL_SYSTEM
na Windows).
Jak na razie nie opublikowano exploitu, jednakże ilość
upublicznionych szczegółów jest wystarczająca do napisania odpowiedniego
kodu wykorzystującego lukę.

Usunięcie zagrożenia:

Jedyną możliwością usunięcia błędu jest nałożenie łaty
producenta. Dokładne numery łat różnią się między platformami i są
podane w Oracle Security Alert #54
Błąd został poprawiony w wersji Oracle9i Rel 2 Patchset 3
(9.2.0.3).

Błąd w kodzie zabezpieczającym przed atakami na bazy Oracle (EXTPROC)

Produkty podatne na zagrożenie:

Oracle 9i – 9.2.0.2, 9.2.0.3

Data publicznego ujawnienia: 25.07.2003

Opis:

W standardowych instalacjach Oracle 8i i 9i jest włączana
funkcjonalność Oracle External Procedures. Z funkcjonalnością tą wiąże się
błąd umożliwiający wykonywanie External Procedures zdalnie, bez konieczności
uwierzytelnienia. Błąd ten jest powszechnie znany i dobrze rozpoznany. Opisany
jest m.in. w Oracle Security Alert #29: (http://otn.oracle.com/deploy/security/pdf/plsextproc_alert.pdf).
Omawiałem go również podczas konferencji PLOUG w 2002 roku. Jedynym sposobem
ochrony było zastosowanie różnego rodzaju obejść problemu, lub wyłączenie
funkcjonalności Oracle External Procedures. W wersji Oracle 9.2.0.2 producent
usunął ten dobrze znany błąd. Okazało się jednakże, że poprawka usuwa
stary problem, ale wprowadza nowe zagrożenie, gdyż kod w niej zawarty jest
podatny na ataki typu buffer-overflow.

Stopień zagrożenia: wysoki

Szczegóły techniczne:

Łata na „stary” problem działa w ten sposób,
że próby załadowania biblioteki zewnętrznej są logowane i odrzucane, chyba
że wywołanie pochodzi z tego samego serwera. W kodzie obsługującym to
logowanie, popełniono błąd, który umożliwia klasyczny atak przez przepełnienie
bufora wejściowego. Co za tym idzie – wykonanie dowolnego kodu na
serwerze,
z uprawnieniami użytkownika systemowego będącego właścicielem instalacji
Oracle (użytkownik „oracle” na unixach lub LOCAL_SYSTEM na
Windows).
Uwaga: Oracle w Security Alert #57 ocenia zagrożenie związane
z omawianym błędem jako niskie. Wynika to z prawdopodobnie fałszywego
przekonania, iż błąd ten może wykorzystać tylko użytkownik posiadający
przywileje „CREATE LIBRARY”. Odkrywcy opisywanej luki – David
Litchfield i Chris Anley, wielokrotnie podkreślali, że firma Oracle źle oceniła
zagrożenie i może je wykorzystać intruz nie posiadający nawet żadnego konta
w bazie. Jako dowód swojej tezy, zaprezentowali taki atak w praktyce, podczas
konferencji Black Hat Briefings Europe 2003.

Usunięcie zagrożenia:

Opisywaną lukę można usunąć przez nałożenie kolejnej
łaty Oracle:

  • 9.2.0.3 – 2988114
  • 9.2.0.2 – 2988086

Nadal jest oczywiście zalecane wyłączenie funkcjonalności
Oracle External Procedures lub zastosowanie obejścia problemu opisywanego w
dokumencie: http://otn.oracle.com/deploy/security/pdf/plsextproc_alert.pdf

Nieautoryzowany dostęp do informacji o konfiguracji systemu w Oracle
E-Business Suite

Produkty podatne na zagrożenie:

Oracle E-Business Suite 11i (wszystkie wersje)
Oracle Applications (wszystkie wersje)

Data publicznego ujawnienia: 23.07.2003

Opis:

Moduł AOL/J Setup Test Suite (instalowany standardowo razem
z Oracle E-Business Suite), może zostać użyty do zdalnego, nieautoryzowanego
uzyskania dostępu do informacji o konfiguracji, w tym haseł użytkowników i
kluczy aplikacji.

Stopień zagrożenia: wysoki

Szczegóły techniczne:

Podstawą oprogramowania Oracle Applications / Oracle
E-Business Suite, jest Oracle Applications Self-Service Framework.
Oprogramowanie to zawiera moduł testowy – „AOL/J Setup Test Suite”.
Jest on zaimplementowany w postaci JSP (główna strona to „aoljtest.jsp”).
Moduł ten służy do sprawdzania poprawności instalacji i konfiguracji całości
oprogramowania.
Może on zostać użyty przez intruza mającego dostęp do
serwera WWW, przez który Oracle Applications wystawia swój interfejs, do
uzyskania nieautoryzowanego dostępu do wielu wartościowych informacji, takich
jak: hasło użytkownika GUEST, oraz kluczy serwera aplikacji.

Usunięcie zagrożenia:

Jedynym sposobem ochrony przed opisywanym zagrożeniem jest
nałożenie poprawki nr 2939083.
Na Metalinku jest dostępny dokument zawierający wskazówki,
co do ogólnego zabezpieczania serwerów Oracle E-Business:
Metalink Note 189367.1 „Best Practices for Keeping Your
E-Business Suite Secure”.

Błąd w Report Review Agent (Oracle E-Business Suite) pozwala na
nieuprawniony dostęp plików

Produkty podatne na zagrożenie:

Oracle E-Business Suite 11i (do rel 8 włącznie)
Oracle Applications 10.7 i 11.0

Data publicznego ujawnienia: 10.04.2003

Opis:

Moduł Report Review Agent (inna nazwa – FNDFS –
FND File Server) może zostać wykorzystany przez intruza do pobrania pliku z
serwera, bez konieczności uwierzytelnienia w systemie, bazie danych lub
aplikacji.

Stopień zagrożenia: średni

Szczegóły techniczne:

Protokół jakim posługuje się Report Review Agent (FNDFS)
działa na bazie protokołu TNS i Oracle Listenera. Intruz który ma dostęp do
portu Oracle Listenera, wchodzącego w skład Oracle Concurrent Manager, może
obejść mechanizmy uwierzytelniania i pobrać dowolny plik z systemu
operacyjnego, do którego ma dostęp użytkownik „oracle” lub
„applmgr”. W tym m.in. pliki zawierające hasła i inną wrażliwą
informację.
Jedynym warunkiem koniecznym do wykorzystania tego błędu
jest dostęp do portu Oracle Listenera działającego na serwerze Oracle
Concurrent Manager. Warto przy tej okazji zauważyć, że FNDFS korzysta z
innego portu niż standardowy Oracle Listener (1521/tcp), tak więc na firewallu
należy zadbać o ochronę wszystkich portów wykorzystywanych przez daną
instalację E-Business Suite.
Według informacji producenta, Report Review Agent (FNDFS)
jest instalowany standardowo jako element Oracle E-Business Suite. W przypadku
Oracle Applications – jest instalowany tylko na węźle skonfigurowanym
jako „Concurrent Processing node”.

Usunięcie zagrożenia:

Oracle opracowało nową wersję protokołu komunikacyjnego.
Jest ona dostępna po zainstalowaniu poprawki nr 2782945 (11i) i 2782950 (11.0).
Uwaga: Użytkownicy ADI (Application Desktop Integrator) muszą
nałożyć również poprawkę nr 2778660, w przeciwnym razie klienci ADI nie będą
umieli skorzystać z nowego protokołu FNDFS.
Warto przy tej okazji zadbać o bezpieczeństwo FNDFS TNS
Listenera, stosując wskazówki przedstawione przez odkrywców opisywanej luki: http://www.integrigy.com/info/Integrigy_OracleDB_Listener_Security.pdf

Błąd typu buffer-overflow w programie Oracle Applications Web Report Review

Produkty podatne na zagrożenie:

Oracle E-Business Suite 11i (do rel 8 włącznie)
Oracle Applications (wszystkie wersje)

Data publicznego ujawnienia: 23.07.2003

Opis:

Moduł Oracle Applications Web Report Review (FNDWRR.exe) może
zostać wykorzystany do zdalnego wywołania kodu intruza na serwerze i przejęcia
kontroli nad serwerem. Moduł ten jest dostępny przez serwis webowy Oracle
Applications i E-Business Suite.

Stopień zagrożenia: średni

Szczegóły techniczne:

Oracle Web Report Review (FNDWRR) jest standardową i
zasadniczą częścią oprogramowania Oracle E-Business Suite i Oracle
Applications. Służy do przeglądania raportów i logów za pomocą przeglądarki
WWW. Oprogramowanie to jest zaimplementowane w postaci skryptu CGI o nazwie
FNDWRR.exe (na Unixach i Windows). W skrypcie tym istnieje możliwość przepełnienia
bufora wejściowego, a co za tym idzie – zdalnego wykonania dowolnego kodu
na serwerze.
Jak na razie nie został upubliczniony exploit a ilość
podanych informacji nie jest zbyt duża. W związku z tym, wykorzystanie tej
luki nie jest trywialne. Należy jednak zauważyć, że podatny moduł jest
standardowo dostępny za pośrednictwem serwera WWW, który udostępnia
E-Business Suite.

Usunięcie zagrożenia:

Jedynym sposobem ochrony przed opisywanym zagrożeniem jest nałożenie
poprawki nr 2919943.