SA-05:02.sendfile

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
- -------------------------------------------------------------------------
Hosting @mc2 || Copyright © 2018 FreeBSD - Inside. Wszelkie prawa zastrzeżone.