SA-05:02.sendfile
poniedziałek, 04 kwietnia 2005 15:18
FreeBSD-SA-05:02.sendfile Security Advisory
The FreeBSD Project
Temat: Ujawnienie pamięci jądra przez sendfile
Kategoria: core
Moduł: sys_kern
Ogłoszono: 2005-04-04
Podziękowania: Sven Berkvens [sven{@}berkvens.net]
Marc Olzheim [zlo{@}zlo.nu]
Dotyczy: Wszystkie wydania FreeBSD 4.x
Wszystkie wydania FreeBSD 5.x do 5.4-RELEASE
Poprawiono: 2005-04-04 23:52:02 UTC (RELENG_5, 5.4-STABLE)
2005-04-04 23:52:35 UTC (RELENG_5_4, 5.4-RELEASE)
2005-04-04 23:53:24 UTC (RELENG_5_3, 5.3-RELEASE-p7)
2005-04-04 23:53:36 UTC (RELENG_4, 4.11-STABLE)
2005-04-04 23:53:56 UTC (RELENG_4_11, 4.11-RELEASE-p2)
2005-04-04 23:54:13 UTC (RELENG_4_10, 4.10-RELEASE-p7)
2005-04-04 23:54:33 UTC (RELENG_4_8, 4.8-RELEASE-p29)
Nazwa CVE: CAN-2005-0708
Dla pogłębienia informacji dotyczącej Ogłoszeń Bezpieczeństwa FreeBSD, włączając opisy pól powyżej, gałęzi bezpieczeństwa oraz poniższych sekcji proszę odwiedzić:
[URL:http://www.freebsd.org/security/]
I. Podstawy
Wywołanie funkcji systemowej sendfile(2) umożliwia aplikacjom serwerowym ( takim jak serwery HTTP lub FTP ) przesłać zawartość pliku poprzez połączenie sieciowe bez ówczesnego skopiowania jej do pamieci aplikacji. Wysoko wydajnościowe serwery takie jak Apache i ftpd używaja sendfile.
II. Opis problemu
Jeżeli plik podczas transmisji zostanie obcięty po tym jak transfer sie rozpocznie ale przed tym jak transmisjia zostanie zakończona, funkcja sendfile(2) przekaże zawartość losową części pamieci jądra i wstawi w miejsce obciętej cześci pliku.
III. Wpływ
Użytkownik lokalny może stworzyć duży plik i obciąć go podczas przesyłu go do siebie, w ten sposób uzyska część pamieci systemu do której normalnie nie bedzie miał dostępu. Pamięć ta może zawierać różne informacje, takie jak części plik cache'u lub buforu terminala. Informacje te mogą być bezpośrednio użyte, lub mogą mieć wpływ w pewnym przypadku przy uzyskaniu wyższych uprawnień. Na przykład, bufor terminala może zawierać wpisane hasło przez użytkownika.
IV. Obejście
Brak.
V. Rozwiązanie
Wykonać jedno z poniższych:
1) Uaktualnić wadliwy system do 4-STABLE lub 5-STABLE, ewentualnie RELENG_5_3, RELENG_4_11, RELENG_4_10 lub RELENG_4_8 gałęzi bezpieczeństwa wydane po dacie poprawki.
2) Aby załatać obecny system:
Poniższe łaty zostały sprawdzone z systemami FreeBSD 4.8, 4.10, 4.11 i 5.3.
a) Pobrać odpowiednią łatkę z lokalizacji podanych poniżej. Sprawdzić podpis PGP.
[FreeBSD 4.x]
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-05:02/sendfile_4.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-05:02/sendfile_4.patch.asc
[FreeBSD 5.3]
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-05:02/sendfile_5.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-05:02/sendfile_5.patch.asc
b) Wykonać będąc zalogowanym jako root:
# cd /usr/src
# patch < /ścieżka/do/łatki
c) Przebudować cały system jak opisano w:
[URL:http://www.freebsd.org/doc/handbook/makeworld.html]
VI. Szczegóły poprawki
Poniższa lista zawiera numery poszczególnych wersji plików które zostały poprawione..
Gałąź Wersja
Ścieżka
- -------------------------------------------------------------------------
RELENG_4
src/sys/ufs/ffs/ffs_inode.c 1.56.2.6
RELENG_4_11
src/UPDATING 1.73.2.91.2.3
src/sys/conf/newvers.sh 1.44.2.39.2.6
src/sys/ufs/ffs/ffs_inode.c 1.56.2.5.12.1
RELENG_4_10
src/UPDATING 1.73.2.90.2.8
src/sys/conf/newvers.sh 1.44.2.34.2.8
src/sys/ufs/ffs/ffs_inode.c 1.56.2.5.10.1
RELENG_4_8
src/UPDATING 1.73.2.80.2.33
src/sys/conf/newvers.sh 1.44.2.29.2.29
src/sys/ufs/ffs/ffs_inode.c 1.56.2.5.6.1
RELENG_5
src/sys/ufs/ffs/ffs_inode.c 1.93.2.2
RELENG_5_4
src/UPDATING 1.342.2.24.2.1
src/sys/ufs/ffs/ffs_inode.c 1.93.2.1.2.1
RELENG_5_3
src/UPDATING 1.342.2.13.2.10
src/sys/conf/newvers.sh 1.62.2.15.2.12
src/sys/ufs/ffs/ffs_inode.c 1.93.4.1
src/crypto/telnet/telnet/telnet.c 1.4.2.5.6.1
src/sys/conf/newvers.sh 1.44.2.29.2.29
src/usr.bin/telnet/telnet.c 1.8.2.3.6.1
RELENG_5
src/contrib/telnet/telnet/telnet.c 1.14.6.1
RELENG_5_3
src/UPDATING 1.342.2.13.2.9
src/contrib/telnet/telnet/telnet.c 1.14.8.1
src/sys/conf/newvers.sh 1.62.2.15.2.11
- -------------------------------------------------------------------------