О новом Flash Player 9.0.124 мы уже писали: он поддерживает новую политику безопасности. А что за политика? Большая политика. Речь идет о глобальной AS-уязвимости Flash Player всех версий, кроме самой последней — 9.0.124. И похоже, что флэш-декомпиляторам может прийти крышка от старых добрых манипуляций с байткодом.
Подробно на все вопросы отвечает статья от Nox Noctis: Тотальная уязвимость Flash Player.
Вы не смотрите, что я пишу в шутливом тоне. Это я от волнения. Дело на самом серьезное, читать и понимать статью — срочно.
то что один человек скомпилил, другой завсегда декомпилить сможет... =)
Не знал что манипуляции с байткодом декомпилерам уже пофиг
Любителей bytecode cloacking нужно расстреливать в детстве из рогатки. Сделать код недекомпилируемым можно и без этого.
PS Рост, а предложение в заголовке -- оно на каком языке? ;)
Не понял, а при чём тут декомпиляторы?
Особых причин радоваться не вижу. Да, нашли уязвимость - можно делать bytecode tricks. В следующем апдейте плеера адоб уязвимость закрывает - "защищенные" флешки перестают работать. Кому такое надо?
Если прочитать внимательнее, то можно увидеть, что флешки не должны переставать работать с новыми версиями. Там почти это и написано. Честно говоря, не читал статью Нокса(счас исправлюсь) - использовал для этих целей оригинал. А, вообще, достаточно перепутать типы тегов в SWF-файле и ниодин декомпилер не отдекомпилит. Защитится методов уйма, смотреть нужно только на важность и значимость информации и алгоритмов, которые прячете.
Погорячился с комментарием - всё может быть и по всякому. Я не учёл момента, что не знаю, как адобовцы решили эту проблему. :)))
Уязвимость не в байт-коде, а в теге DefineSceneAndFrameLabelData. Она позволяет записать некоторые заранее заданное значение в некоторую заранее заданную область памяти (в адресном пространстве Flash-плеера).
Но так как набор возможных адресов ограничен, то стандартный в таком случае приём - прямое внедрение кода в какую-либо функцию или модификация адреса какого-либо вызова - сильно усложняется.
Поэтому Марк использует обходной манёвр - с помощью данной уязвимости модифицирует одну из таблиц, используемую верификатором.
Исправляется уязвимость путём закрытия любого из двух багов в обработке тега DefineSceneAndFrameLabelData. Их действительно два: первый состоит в том, что целочисленное значение проверяется как знаковое, а используется как беззнаковое. В результате отрицательное число проходит проверку, но при использовании превращается в большое число. Второй состоит в том, что нет проверки на NULL после вызова mem_Calloc(). Исправление любого из этих багов закроет уязвимость.
При чём тут декомпиляторы и протекторы?
Предыдущий пост
Следующий пост