SA-06:14.fpu
sobota, 23 września 2006 02:28
FreeBSD-SA-06:14.fpu Security Advisory
The FreeBSD Project
Temat: Odkrycie informacji FPU
Kategoria: core
Moduł: sys
Ogłoszono: 2006-04-19
Podziękowania: Jan Beulich
Podatne wersje: All FreeBSD/i386, FreeBSD/amd64
Poprawiono: 2006-04-19 07:00:35 UTC (RELENG_6, 6.1-STABLE)
2006-04-19 07:00:50 UTC (RELENG_6_1, 6.1-RELEASE)
2006-04-19 07:01:12 UTC (RELENG_6_0, 6.0-RELEASE-p7)
2006-04-19 07:01:30 UTC (RELENG_5, 5.5-STABLE)
2006-04-19 07:01:53 UTC (RELENG_5_4, 5.4-RELEASE-p14)
2006-04-19 07:02:23 UTC (RELENG_5_3, 5.3-RELEASE-p29)
2006-04-19 07:02:43 UTC (RELENG_4, 4.11-STABLE)
2006-04-19 07:03:01 UTC (RELENG_4_11, 4.11-RELEASE-p17)
2006-04-19 07:03:14 UTC (RELENG_4_10, 4.10-RELEASE-p23)
Nazwa CVE: CVE-2006-1056
W celu 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
Jednostka zmienno-przecinkowa (FPU), w procesorach o architekturze i386 oraz amd64, jest pochodną oryginalnego zmienno-przecinkowego co-procesora - 8087. W rezultacie, FPU zawiera takie same wpisy FOP, FIP oraz FDP, które przechowują opcode, adres instrukcji oraz adres danych instrukcji najczęściej wykonywanych poprzez FPU.
Procesory, posiadające implementację zbioru instrukcji "SSE", posiadają nową parę instrukcji fxsave/fxrstor, zastępując wcześniejszą parę fsave/fxstor, wykorzystywaną do zapisywania oraz przywracania stanu FPU. Nowe instrukcje, również zapisują oraz przywracają zawartość dodatkowych rejestrów wykorzystywanych poprzez instrukcje SSE.
II. Opis problemu
W procesorach "7 generacji" oraz "8 generacji" produkowanych przez AMD, włączając AMD Athlon, Duron, Athlon MP, Athlon XP, Athlon64, Athlon64 FX, Opteron, Turion oraz Sempron, instrukcje fxsave i fxrstor nie przechowywały FOP, FIP i FDP, dopóki status ES (exception summary bit) w x87 nie zostanie ustawiony na 1, wskazując odkrycie wyjątku x87.
To zachowanie jest zgodne z dokumentacja dostarczaną przez AMD, lecz jest różne od procesorów innych producentów, w których zapisywanie i przywracanie registrantów FOP, FIP oraz FDP nie biorą pod uwagę wartości bitu ES. W rezultacie, pozostałe różnice zostały pominięte i ujawnione teraz, jądro FreeBSD nie przywraca zawartości registrantów FOP, FIP oraz FDP pomiędzy przełącznikami kontekstu.
III. Wpływ
Na maszynie posiadającej podatny procesor, lokalnie atakujący może monitorować wykonywaną ścieżkę procesów, które wykorzystują operacje zmienno-przecinkowe. Umożliwia to atakującemu wykraść klucz lub inna ważną informację.
IV. Obejście
Brak, lecz dla systemów które nie używają procesorów AMD Athlon, Duron, Athlon MP, Athlon XP, Athlon64, Athlon64 FX, Opteron, Turion, lub Sempron nie są podatne.
V. Rozwiązanie
Wykonać jedno z poniższych:
1) Uaktualnić wadliwy system do 4-STABLE, 5-STABLE, 6-STABLE lub do RELENG_6_0, RELENG_5_4, RELENG_5_3, RELENG_4_11, RELENG_4_10 z danej gałęzi bezpieczeństwa wydanej po dacie poprawki.
2) Aby załatać obecny system:
Poniższe poprawki zostały sprawdzone w działaniu z FreeBSD 4.10, 4.11, 5.3, 5.4, 6.0.
a) Pobrać odpowiednią łatkę z lokalizacji podanych poniżej. Sprawdzić podpis PGP, narzędziem jakie posiadasz.
[FreeBSD 4.x]
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-06:14/fpu4x.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-06:14/fpu4x.patch.asc
[FreeBSD 5.x and 6.x]
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-06:14/fpu.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-06:14/fpu.patch.asc
b) Wykonać będąc zalogowanym jako root:
# cd /usr/src
# patch < /path/to/patch
c) Przebudować cały system jak opisano w dokumentacji na stronie:
<URL:http://www.freebsd.org/handbook/kernelconfig.html>
VI. Szczegóły poprawki
Poniższa lista zawiera numery poszczególnych wersji plików które zostały poprawione.
Gałąź
Ścieżka Przegląd
- -------------------------------------------------------------------------
RELENG_4
src/sys/i386/isa/npx.c 1.80.2.4
RELENG_4_11
src/UPDATING 1.73.2.91.2.18
src/sys/conf/newvers.sh 1.44.2.39.2.21
src/sys/i386/isa/npx.c 1.80.2.3.14.1
RELENG_4_10
src/UPDATING 1.73.2.90.2.24
src/sys/conf/newvers.sh 1.44.2.34.2.25
src/sys/i386/isa/npx.c 1.80.2.3.12.1
RELENG_5
src/sys/amd64/amd64/fpu.c 1.154.2.2
src/sys/i386/isa/npx.c 1.152.2.4
RELENG_5_4
src/UPDATING 1.342.2.24.2.23
src/sys/conf/newvers.sh 1.62.2.18.2.19
src/sys/amd64/amd64/fpu.c 1.154.2.1.2.1
src/sys/i386/isa/npx.c 1.152.2.3.2.1
RELENG_5_3
src/UPDATING 1.342.2.13.2.32
src/sys/conf/newvers.sh 1.62.2.15.2.34
src/sys/amd64/amd64/fpu.c 1.154.4.1
src/sys/i386/isa/npx.c 1.152.4.1
RELENG_6
src/sys/amd64/amd64/fpu.c 1.157.2.1
src/sys/i386/isa/npx.c 1.162.2.2
RELENG_6_1
src/UPDATING 1.416.2.22.2.1
src/sys/conf/newvers.sh 1.69.2.11.2.1
src/sys/amd64/amd64/fpu.c 1.157.6.1
src/sys/i386/isa/npx.c 1.162.2.1.2.1
RELENG_6_0
src/UPDATING 1.416.2.3.2.12
src/sys/conf/newvers.sh 1.69.2.8.2.8
src/sys/amd64/amd64/fpu.c 1.157.4.1
src/sys/i386/isa/npx.c 1.162.4.1
- -------------------------------------------------------------------------
VII. Odnośniki
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-1056
Najnowsza wersja jest dostępna pod adresem:
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-06:14.fpu.asc
The FreeBSD Security Team, chciałby podziękować firmie AMD, oraz w szczególności Richard’owi Brunner’owi za natychmiastową odpowiedź wraz z udostępnieniem obszernej analizy w związku z tym problemem.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (FreeBSD)
iD8DBQFEReGUFdaIBMps37IRAnmUAJ4lsl3bpH6duA5u/wssIa01o98BlwCgleWn
a1vJCiLwkkfqHtmBDKxaQ+A=
=4yls
-----END PGP SIGNATURE-----