|
| 1 | +--- |
| 2 | +layout: news_post |
| 3 | +title: "Luka pozwalająca na ominięcie sprawdzenia nazwy hosta w kliencie SSL (CVE-2013-4073)" |
| 4 | +author: "nahi" |
| 5 | +translator: "mlen" |
| 6 | +date: 2013-06-27 11:00:00 UTC |
| 7 | +lang: pl |
| 8 | +--- |
| 9 | + |
| 10 | +Luka bezpieczeństwa w kliencie SSL Ruby może umożliwić ataki man-in-the-middle, |
| 11 | +co pozwala atakującemu podszyć się pod domenę korzystając z poprawnego |
| 12 | +certyfikatu wydanego przez zaufany urząd certyfikacji. |
| 13 | + |
| 14 | +Luce został przydzielony identyfikator CVE-2013-4073. |
| 15 | + |
| 16 | +## Podsumowanie |
| 17 | + |
| 18 | +Klient SSL Ruby implementuje sprawdzenie tożsamości nazwy hosta, jednak |
| 19 | +niepoprawnie zachowuje się w przypadku, gdy nazwy hostów zawierają zerowe |
| 20 | +bajty. |
| 21 | + |
| 22 | +## Szczegóły |
| 23 | + |
| 24 | +`OpenSSL::SSL.verify_certificate_identity` implementuje sprawdzenie tożsamości |
| 25 | +serwera opisane w RFC2818 dla klienta SSL Ruby, jednak niepoprawnie obsługuje |
| 26 | +nazwy hostów w polu subjectAltName rozszerzenia X509, które zawierają zerowe |
| 27 | +bajty. |
| 28 | + |
| 29 | +Istniejący kod w `lib/openssl/ssl.rb` wykorzystuje metodę |
| 30 | +`OpenSSL::X509::Extension#value` aby odczytać tożsamość z pola subjectAltName. |
| 31 | +Metoda ta polega na funkcji `X509V3_EXT_print()` zawartej w OpenSSL, która z |
| 32 | +aby odczytać dNSName z subjectAltName korzysta z funkcji `sprintf()`, która nie |
| 33 | +obsługuje poprawnie bajtów zerowych. W rezultacie metoda `Extension#value` |
| 34 | +zwraca 'www.ruby-lang.org', jeśli subjectAltName w rzeczywistości zawiera |
| 35 | +'www.ruby-lang.org\0.example.com' oraz |
| 36 | +`OpenSSL::SSL.verify_certificate_identity` niepoprawnie uznaje, że certyfikat |
| 37 | +należy do domeny 'www.ruby-lang.org'. |
| 38 | + |
| 39 | +Jeśli urząd certyfikacji, któremu ufa klient pozwoli wydać certyfikat |
| 40 | +zawierający zerowy bajt w polu subjectAltName, atakujący może uzyskać |
| 41 | +certyfikat dla 'www.ruby-lang.org\0.example.com', aby podszyć się pod |
| 42 | +'www.ruby-lang.org' i wykonać ataki typu man-in-the-middle między klientem |
| 43 | +Ruby, a serwerem SSL. |
| 44 | + |
| 45 | +## Dotyczy wersji |
| 46 | + |
| 47 | + * wszystkich wersji ruby 1.8 wcześniejszych niż 1.8.7 patchlevel 374 |
| 48 | + * wszystkich wersji ruby 1.9 wcześniejszych niż 1.9.3 patchlevel 448 |
| 49 | + * wszystkich wersji ruby 2.0 wcześniejszych niż 2.0.0 patchlevel 247 |
| 50 | + * wcześniejszych niż rewizja trunk 41671 |
| 51 | + |
| 52 | +## Rozwiązanie |
| 53 | + |
| 54 | +Zaleca się, aby wszyscy użytkownicy zainstalowali wersję Ruby 2.0.0-p247, |
| 55 | +1.9.3-p448 lub 1.8.7-p374. |
| 56 | + |
| 57 | +## Podziękowania |
| 58 | + |
| 59 | +Podatność ta została znaleziona przez William (B.J.) Snow Orvis oraz |
| 60 | +skoordynowana z security@ruby-lang.org przez David Thiel z iSEC Partners. |
| 61 | + |
| 62 | +## Historia |
| 63 | + |
| 64 | + * Opublikowane 2013-06-27 11:00:00 (UTC) |
0 commit comments