Уязвимость Webkit после бесплатного использования влияет на PS4, возможно, вплоть до прошивки 9.00 включительно
В сентябре была выявлена уязвимость, не требующая использования в Webkit (CVE-2021-30858), которая была исправлена. Ранние тесты и исследование исходного кода показывают, что уязвимость также присутствует в версии webkit для PS4, хотя пока неизвестно, до какой прошивки и можно ли превратить эту уязвимость в полноценный эксплойт или нет.
CVE-2021-30858 Бесплатное использование после в таблице Webkit removefromfaceslookup
Исследователь безопасности Мэдди Стоун из команды безопасности Google Project Zero
сообщила и раскрыла уязвимость в Webkit, которую можно использовать бесплатно, еще в сентябре в рамках усилий команды по изучению Webkit от Apple.
Проблема заключается в добавлении недопустимого объекта FontFace в набор шрифтов. Операция добавления не сработает, но затем система все равно попытается удалить объект (который не был добавлен), что приведет к “Использованию после освобождения”.
Код с ошибкой:
void CSSFontFaceSet::removeFromFacesLookupTable(const CSSFontFace& face, const CSSValueList& familiesToSearchFor)
{
for (auto& item : familiesToSearchFor) {
String familyName = CSSFontFaceSet::familyNameFromPrimitive(downcast(item.get()));
if (familyName.isEmpty())
continue;
auto iterator = m_facesLookupTable.find(familyName);
ASSERT(iterator != m_facesLookupTable.end());
bool found = false;
for (size_t i = 0; i < iterator->value.size(); ++i) {
if (iterator->value[i].ptr() == &face) {
found = true;
iterator->value.remove(i);
break;
}
}
ASSERT_UNUSED(found, found);
if (!iterator->value.size())
m_facesLookupTable.remove(iterator);
}
}
Proof of concept javascript
:
var fontFace1 = new FontFace("font1", "", {});
var fontFaceSet = new FontFaceSet([fontFace1]);
fontFace1.family = "font2";
Использование-После того, как уязвимость бесплатного веб-набора повлияет на PS4
Проблема кажется довольно очевидной после факта, и доказательство концептуального кода было легко воспроизведено для тестирования на PS4. У @NazkyYT есть некоторые доказательства того, что концептуальный код работает по адресу
https://nazky.github.io/PS4CVE202130858/. Вы можете указать в браузере PS4 URL-адрес подтверждения концепции, чтобы узнать, в какой степени это повлияло на вашу консоль. (или запустите свой собственный на локальном сервере, если хотите).
Несколько человек подтвердили, что уязвимость действительно воспроизводится на PS4s вплоть до прошивки 8.52, включенной. Некоторые пользователи сообщили, что уязвимость не “работает” на их PS4 под управлением 9.00, но анализ версии Webkit на PS4 9.00, похоже, указывает на то, что ошибка все еще присутствует там. В моих личных тестах 9.00 реагирует на ошибку “недостаточно памяти” при попытке доказательства концепции, что для меня является хорошим знаком, пока не доказано обратное.
Также стоит упомянуть, что прошивка 9.00 была выпущена всего через несколько дней после исправления этой проблемы в Webkit, что означает, что маловероятно, что Sony успела вовремя импортировать исправление
Webkit в прошивку 9.00. Все указывает на проблему, существующую в прошивке 9.00, если бы не несколько ранних отчетов о тестировании

Скриншот исходного кода Webkit в PS4 9.00 (как указано на официальной странице Sony) все еще содержит уязвимость.
|
У меня были опасения, что доказательство концепции было недействительным, учитывая, что конструктор набора шрифтов-это специфическая вещь для Safari (
источник):
В частности, если вы попробуете код PoC в браузере, таком как Chrome, вы получите сообщение об ошибке в форме: “Набор шрифтов не определен”. Это означает, что PoC выходит из строя еще до того, как обнаруживается уязвимость практически в любом браузере, кроме Safari. Но я смог самостоятельно убедиться, что конструктор FonceFaceSet действительно существует на PS4. Другими словами, насколько я мог судить, существует значительная вероятность того, что эта уязвимость повлияет на PS4, включая до 9.00.
PS4 9.00 Потенциально уязвима для использования Webkit-После освобождения, что дальше?
Тот факт, что на PS4 обнаруживается новая уязвимость Webkit, потенциально является большой новостью для сцены PS4. Но многое должно произойти, прежде чем это станет полезным для конечного пользователя.
Прежде всего, какой бы ни была ваша текущая прошивка, не обновляйте ее, если вы намерены воспользоваться этой возможностью. Чем ниже ваша прошивка, тем выше ваши шансы на будущий взлом или эксплойт.
Во-вторых, хакерам PS4 необходимо изучить эту уязвимость webkit, чтобы понять 1) действительно ли ее можно превратить в полезный эксплойт (это может занять значительное количество времени), и 2) действительно ли затронуто 9.00 или нет. Переход от уязвимости к реальному коду, пригодному для использования, не произойдет мгновенно.
Если этот эксплойт Webkit можно использовать на PS4, он может иметь два основных применения:
- Во-первых, этот эксплойт потенциально может быть более “стабильным”, чем текущий эксплойт Webkit, используемый до прошивки 7.55, что означает, что он может быть использован для повышения стабильности существующих джейлбрейков, вплоть до прошивки 7.55.
- Во-вторых, если в будущем будет обнаружен эксплойт ядра для прошивок 8.xx или 9.00, эксплойт Webkit и эксплойт ядра могут быть объединены, чтобы обеспечить джейлбрейк для прошивок 8.xx или, можно мечтать, до 9.00. Это хорошее время, чтобы напомнить всем, что одного эксплойта webkit недостаточно для джейлбрейка. Это точка входа для запуска неподписанного кода, но затем ее необходимо объединить с эксплойтом повышения привилегий (он же эксплойт ядра), чтобы получить реальный джейлбрейк.
Конечно, предстоит пройти долгий путь, прежде чем что-либо из этого произойдет, но это может стать лучшей новостью для сцены PS4 за долгое время.