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):LoaderInfoLanguage Version : ActionScript 3.0
Player Version : Flash Player 9.0.115.0Returns 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
Leave a reply
Я прочитал предыдущую бурную дискуссию, но так и не понял, что именно было “дырой”. Ты не мог бы резюмировать? (Изменение в описании метода мне не помогло понять это.)
Метод getLoaderInfoByDefinition всегда возвращает ссылку на LoaderInfo основного приложения. Любой ролик, подгруженный даже с совсем другим ApplicationDomain (из которого нельзя получить классы основного приложения обычным getDefinition) может создать экземпляры классов основного приложения. И любой наследник DisplayObject, даже не добавленный в display list может сам себя туда добавить, получив ссылку на stage из LoaderInfo, возвращенного этим методом. Нет никаких других методов, позволяющих получить stage и ApplicationDomain основного приложения на этом этапе выполнения кода, кроме getLoaderInfoByDefinition. Т.е. достаточно подгрузить swf без каких-либо действий и вуаля, в приложении уже кто-то шарится.
Мы отправили подобное описание в адобовскую Jira, они ответили, что убрали баг в приватный раздел и будут разбираться.
В бете десятой версии пока ничего не изменилось, кроме описания того, что возвращает метод. Но текст можно перевести двояко. Что подразумевается под «A SWF file object» — непонятно. Сам по себе метод должен учитывать, в какой области видимости и каком домене пытаются вызвать его и на основании этого он должен вернуть LoaderInfo все того же подгруженного swf, например. А ещё лучше, он должен вообще возвращать не LoaderInfo, а какой-нибудь другой объект.
Здрасте у меня срочный вопрос кто-нибудь может ответить как во флэше можно сделать так чтобы на кнопку во флэш-проигрывателе открывао папку или фаил .exe
Спасибо!
Вообще-то это мой личный блог, это не форум и не служба поддержки.