Записки о Flash

LoaderInfo Vulnerability Fixed?

Похоже, нас услышали.
В Flash 10 AS3 API обнаружилось изменение описания метода getLoaderInfoByDefinition класса LoaderInfo. Было:

getLoaderInfoByDefinition () method

public static function getLoaderInfoByDefinition(object:Object):LoaderInfo

Returns the LoaderInfo object associated with a SWF file defined as an object.

Player Version: Flash Player 9 Update 3.

Parameters object:Object — The object for which you want to get an associated LoaderInfo object.

Returns LoaderInfo — The associated LoaderInfo object. Returns null when called in non-debugger builds (or when debugging is not enabled) or if the referenced object does not have an associated LoaderInfo object (such as some objects used by the AIR runtime).

Throws SecurityError — The caller is not running in the local trusted sandbox.

Стало:

???????? ????? ????????getLoaderInfoByDefinition () method
public static function getLoaderInfoByDefinition(object:Object):LoaderInfo

Language Version : ActionScript 3.0
Player Version : Flash Player 9.0.115.0

Returns the LoaderInfo object associated with a SWF file defined as an object.

Parameters
object:Object — A SWF file object.

Returns
LoaderInfo — The associated LoaderInfo object.

Т.е. теперь возвращается LoaderInfo того swf, который создал объект, переданный в аргументе метода. Таким образом, описанной мной дыры теперь нет.

Проверить это сейчас у меня нет возможности, позже выясню этот вопрос.


4 comments

4 Comments so far

  1. Nox June 2nd, 2008 02:35

    Я прочитал предыдущую бурную дискуссию, но так и не понял, что именно было “дырой”. Ты не мог бы резюмировать? (Изменение в описании метода мне не помогло понять это.)

  2. etc June 2nd, 2008 08:08

    Метод getLoaderInfoByDefinition всегда возвращает ссылку на LoaderInfo основного приложения. Любой ролик, подгруженный даже с совсем другим ApplicationDomain (из которого нельзя получить классы основного приложения обычным getDefinition) может создать экземпляры классов основного приложения. И любой наследник DisplayObject, даже не добавленный в display list может сам себя туда добавить, получив ссылку на stage из LoaderInfo, возвращенного этим методом. Нет никаких других методов, позволяющих получить stage и ApplicationDomain основного приложения на этом этапе выполнения кода, кроме getLoaderInfoByDefinition. Т.е. достаточно подгрузить swf без каких-либо действий и вуаля, в приложении уже кто-то шарится.

    Мы отправили подобное описание в адобовскую Jira, они ответили, что убрали баг в приватный раздел и будут разбираться.

    В бете десятой версии пока ничего не изменилось, кроме описания того, что возвращает метод. Но текст можно перевести двояко. Что подразумевается под «A SWF file object» — непонятно. Сам по себе метод должен учитывать, в какой области видимости и каком домене пытаются вызвать его и на основании этого он должен вернуть LoaderInfo все того же подгруженного swf, например. А ещё лучше, он должен вообще возвращать не LoaderInfo, а какой-нибудь другой объект.

  3. RoLeX July 1st, 2008 23:40

    Здрасте у меня срочный вопрос кто-нибудь может ответить как во флэше можно сделать так чтобы на кнопку во флэш-проигрывателе открывао папку или фаил .exe
    Спасибо!

  4. etc July 1st, 2008 23:54

    Вообще-то это мой личный блог, это не форум и не служба поддержки.

Leave a reply