Odcinek 9: Adrian Taylor w Mountain View (grudzień 2019 r.)
Poprzednie odcinki
Może się okazać, że zostaniesz poproszony o naprawienie szczególnie ważnych błędów w zabezpieczeniach wykrytych przez usługę ClusterFuzz. Co to jest? Czy trzeba traktować te błędy poważnie? Jak możesz pomóc?
Przesyłanie danych przez usługę ClusterFuzz do Chrome i sprawdzanie błędów. W niektórych kompilacjach Chrome włączono dodatkowe sprawdzanie, na przykład AddressSanitizer, który szuka błędów związanych z bezpieczeństwem pamięci.
ClusterFuzz przypisuje komponenty na podstawie lokalizacji awarii i przypisuje wagę na podstawie typu awarii oraz tego, czy nastąpiła ona w procesie piaskownicy. Na przykład atak typu „use-after-free” będzie miał wysoki poziom ważności, chyba że występuje w procesie przeglądarki. W takim przypadku kluczowy jest problem (brak piaskownicy, który ogranicza wpływ):
class Foo {
Widget* widget;
};
void Foo::Bar() {
delete widget;
...
widget->Activate(); // Bad in the renderer process, worse in the
// browser process. Obviously, real bugs are
// more subtle. Usually.
Usługa ClusterFuzz generuje dane wejściowe z fuzzerów lub błędów przesłanych z zewnątrz.
Niektóre filtry rozmywające korzystają z technologii libFuzzer, która rozwija dane wejściowe, aby zwiększyć pokrycie kodu. Niektórzy rozumieją gramatykę języka wejściowego przekonwertowanego na protobufs
. Gdy usługa ClusterFuzz znajdzie awarię, spróbuje zminimalizować ilość danych wejściowych, a nawet podzielić ją na dwa, aby znaleźć nieprawidłowe zatwierdzenie.
Znajduje dużo...
Możesz pomóc:
- Wyprzedź paranoję w kwestii czasu życia obiektów i przepełniania się liczbami całkowitymi.
- Dodaj nowe elementy rozmywające, zwłaszcza jeśli przetwarzasz niewiarygodne dane lub IPC (patrz linki poniżej, często poniżej 20 wierszy kodu).
- Naprawianie błędów zgłaszanych przez ClusterFuzz: heurystyka poziomu ważności jest godna zaufania, ponieważ opierają się na rzeczywistych możliwościach wykorzystania: nawet przepełnienie jednobajtowe kodu doprowadziło do przypadkowego wykonania kodu przez atakującego.
Zasoby
- Testowanie luk w Chromium: jak dodać do ClusterFuzz nowe formaty danych lub zasługiwać się znajdowaniem świetnych wulgaryzmów.
- Aktualizacja programu Chrome Fuzzer i instrukcje: twórcy aplikacji Fuzzers tworzą też zewnętrzni współpracownicy. Poznaj ich wrażenia i dowiedz się, jak łatwo można zacząć z nich korzystać.