Как стать автором
Обновить

Как заразить видео. Поиск уязвимостей в декодерах H.264

Время на прочтение3 мин
Количество просмотров9.5K
Всего голосов 15: ↑12 и ↓3+15
Комментарии15

Комментарии 15

распространение вирусов начнётся через YouTube и другие популярные видеоплатформы

За другие платформы не скажу, но ютуб пережимает заливаемые к нему видео. Так что без его прямого желания вряд-ли что-то получится. Другое дело если желание появится.

Я не помню чем закончилось, но народ задавался вопросом как залить видео на ютуб так, чтобы оно не перекодироовалось. Точно помню что практические результаты были, но вот избавились ли от перекодирования вообще не знаю.

Значит, сам Ютуб для начала и взломают :)

Выглядит как весьма заманчивая информация для спецслужб всвязи с распростаненностью устройств, проигрывающих видео.

Кажется, мы приходим к вопросу, что нам более важно: скорость или безопасность. Пока нет опции "оба", но, надеюсь, вся языки и среды выполнения будут доработаны в соответствующем ключе

Meltdown, Spectr, куча разных хаков производительности... Глаз Rust'ом замылен, хочется все переписать (чтобы хотя бы сравнить места, где что-то могло быть не учтено)

Программистов и разработчиков железа надо дорабатывать - выход за пределы массива можно проверить и в C, и в Verilog (вставив проверку так, чтобы она минимально влияла на производительность). Общее правило для любого кодека и подобного софта - надо корректно обрабатывать любой мусор на входе.

Если писать код без ошибок, то ошибок и не будет. Жаль, что люди склонны их совершать

Вопрос ещё, конечно, в организации тестирования, code review и т.д. - без этого никакие языки не помогут.

В том то и дело, что проверить можно. То есть пока машина не заставляет делать это каждый раз, то обязательно где-то забудут проверить, а затем кто-нибудь это найдёт.

А если машина везде проверяет сама - сразу падение производительности. А в кодеках это существенно.

Бред, там фиксированное колличество бит выделено в битстриме, т.е. он не может выйти за пределы памяти физически. 264й стар, с кучей различных реализаций кода, прогоните сами стримы на совместость со стандартом, думаю на этом проблема пропадет.

Давайте разъясню свое мнение, в статье все скинуто в кучу, так что пойдем по порядку:

  1. emulation prevention byte counter overflow:

    что такое prevention byte: заголовок каждого из NAL представляет собой синтаксис "0x000001", для того не ошибиться в стрим добавляют 0x3 (0x00000301), не понимаю для чего ведется из подсчет, когда их все нужно удалить из стрима для получения корректных данных, они не несут никаких данных

  2. подстановка типа IDR вместо и некего исходного значения

    Что это даст - некорректный парсинг и выход по ошибке (ну или идентично ошибке в битстриме, есть отдельные тесты для этого и что с этим делать - зависит от имплементации)

  3. переполнение cpb_cnt_minus1

    А ничего, что еще в коде 2015 года (я уж не знаю сколько оно существует на самом деле) есть проверка на это

    pMVCVUI->cpb_cnt_minus1 = (char) read_ue_v("cpb_cnt_minus1", s, &p_Dec->UsedBits);
    assert(pMVCVUI->cpb_cnt_minus1<=31);

    Даже если вы удалили её, до конца пакета около 24 бита + несколько байт, т.е. не соблюдается поверка на окончание NAL. т.е. максимально вы добавите еще пару фреймов, а не как сказано 224. Это надо специально поменять код, чтобы прийти к этому.

В последнем примере красиво переведено, но не указано, что это происходит когда h/w вылетает из-за ошибки и приходится декодировать s/w (а так много говорилось про h/w реализацию).

По факту мы видим, что есть некая попытка "испортить" данные для выхода за пределы размеров, но что-то мне говорит, что даже минимальный тест включает в себя проверку на такие элементарные стримы.

У меня в вк видео часто зависает и появляются подобные артефакты, как на этой картинке. Перзагружаю страницу - всё становится нормально. Может ли это быть вирусами?

нет, это просыпается Скайнет, это просто лаги. Теряются байты, поток декодируется с ошибками.

Почему "начнется"? Когда это уже идет полным ходом. У кого HDD и на них хранятся фильмы, иногда можно заметить при просмотре фильма, по сильному (интенсивному) "шуршанию" жесткого диска что происходит что-то не так.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий