ActiveX-скрипты¶
ActiveX — это технология, разработанная корпорацией Microsoft в 1996 году, представляющая собой набор программных компонентов и интерфейсов, позволяющих создавать интерактивные элементы (элементы управления) для веб-страниц и приложений, работающих в среде Windows. Технология основана на модели COM (Component Object Model) и предназначена для повторного использования кода, а также для расширения функциональности веб-браузеров, в первую очередь Internet Explorer.
¶История
¶Предпосылки и создание
Технология ActiveX была представлена как преемница более ранних технологий Microsoft — OLE (Object Linking and Embedding) и OCX (OLE Custom Controls). В середине 1990-х годов, с ростом популярности Всемирной паутины, Microsoft стремилась интегрировать свои настольные технологии в веб-среду. ActiveX был анонсирован в 1996 году на конференции Professional Developers Conference (PDC) как часть стратегии Microsoft по созданию «активного контента» в Интернете. В отличие от статичных HTML-страниц, ActiveX позволял внедрять в браузер полноценные приложения, написанные на языках C++, Visual Basic или Delphi.
¶Развитие и пик популярности
Наибольшее распространение технология получила в конце 1990-х — начале 2000-х годов, когда Internet Explorer занимал доминирующее положение на рынке браузеров (до 95% в 2002–2003 годах). ActiveX использовался для создания:
- мультимедийных проигрывателей (Windows Media Player);
- офисных плагинов (просмотр документов Word и Excel в браузере);
- систем дистанционного банковского обслуживания (в частности, в России для работы с электронными подписями и криптопровайдерами);
- игр и анимации (например, в некоторых онлайн-играх начала 2000-х).
¶Упадок и критика
С середины 2000-х годов технология начала подвергаться критике из-за проблем с безопасностью. ActiveX-элементы управления имели полный доступ к операционной системе, что делало их привлекательной целью для злоумышленников. Многочисленные уязвимости (например, в элементе управления DirectAnimation.PathControl или в MSHTML) приводили к массовым заражениям компьютеров через drive-by download-атаки. В ответ на это:
- Браузеры-конкуренты (Mozilla Firefox, Google Chrome, Opera) принципиально отказались от поддержки ActiveX, используя вместо него плагины на основе NPAPI (Netscape Plugin Application Programming Interface) или собственные расширения.
- Начиная с Windows Vista, Microsoft ввела механизм «защищённого режима» (Protected Mode) в Internet Explorer, который ограничивал права ActiveX-элементов.
- В 2015 году Microsoft анонсировала прекращение поддержки ActiveX в новом браузере Microsoft Edge, сделав ставку на современные веб-стандарты (HTML5, JavaScript, WebAssembly).
Окончательно технология была выведена из активного использования с выходом Windows 10 и прекращением поддержки Internet Explorer 11 в 2022 году. Однако в некоторых корпоративных и государственных системах (особенно в России и странах СНГ) ActiveX-скрипты продолжали использоваться вплоть до середины 2020-х годов в режиме совместимости (IE Mode) в Microsoft Edge.
¶Архитектура и принцип работы
¶Компонентная модель
ActiveX основан на COM (Component Object Model) — стандарте, определяющем способ взаимодействия программных компонентов. Каждый ActiveX-элемент представляет собой COM-объект, зарегистрированный в системном реестре Windows. Для работы в браузере элемент должен реализовывать интерфейсы IUnknown, IClassFactory и IDispatch (для поддержки скриптов).
¶Сценарии использования
ActiveX-скрипты обычно встраиваются в HTML-страницу с помощью тега <object>: ``html <object classid="clsid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" codebase="http://example.com/control.cab" width="400" height="300"> </object> ``
classid— уникальный идентификатор CLSID (Class Identifier), указывающий на зарегистрированный в системе COM-компонент.codebase— URL-адрес, откуда браузер может загрузить и установить элемент управления, если он отсутствует на компьютере пользователя.- Параметры передаются через вложенные теги
<param>.
¶Языки программирования
Разработка ActiveX-элементов велась на:
- C++ (с использованием ATL — Active Template Library или MFC — Microsoft Foundation Classes);
- Visual Basic 6.0 (создание простых элементов управления);
- Delphi (через поддержку COM).
Для написания сценариев, управляющих ActiveX-элементами, использовались языки VBScript (Visual Basic Scripting Edition) и JScript (реализация JavaScript от Microsoft). Эти скрипты могли вызывать методы, изменять свойства и обрабатывать события ActiveX-объектов.
¶Классификация ActiveX-элементов
¶По типу функциональности
- Элементы управления (Controls) — визуальные компоненты (кнопки, списки, календари, графики).
- Документы (Documents) — позволяют отображать в браузере документы других приложений (например, Word или Excel).
- Кодексы и фильтры — для обработки мультимедиа (например, декодеры видео).
- Серверные компоненты — используются на стороне веб-сервера (например, в ASP — Active Server Pages) для обработки запросов.
¶По степени доверия
- Подписанные (Signed) — содержат цифровую подпись разработчика, что позволяет браузеру проверить издателя и целостность кода. Подпись не гарантирует безопасность, но даёт пользователю возможность принять решение об установке.
- Неподписанные (Unsigned) — считаются потенциально опасными; в современных версиях Windows их установка по умолчанию блокируется.
¶Проблемы безопасности
¶Основные уязвимости
ActiveX стал одной из самых критикуемых технологий в истории веба из-за присущих ей рисков:
- Полный доступ к системе — элемент управления может выполнять любые действия от имени текущего пользователя: читать и записывать файлы, изменять реестр, запускать программы.
- Отсутствие изоляции — в отличие от современных браузерных песочниц (sandbox), ActiveX-элементы работают в том же процессе, что и браузер.
- Установка без ведома пользователя — при использовании параметра
codebaseбраузер мог автоматически загрузить и установить элемент управления (если пользователь соглашался на диалоговое окно). - Уязвимости в популярных элементах — злоумышленники активно эксплуатировали дыры в элементах управления, поставляемых с Windows (например,
MSXML,WebBrowser,Shockwave Flash).
¶Известные инциденты
- В 2008 году через уязвимость в элементе управления
SnapStream Mediaбыло заражено более 1 миллиона компьютеров в Китае. - В 2014 году Microsoft выпустила экстренное обновление для устранения критической уязвимости в элементе управления
Internet Explorer(CVE-2014-1776), которая использовалась для целевых атак на правительственные организации. - В 2019 году компания FireEye сообщила о продолжающемся использовании ActiveX-уязвимостей в атаках на промышленные предприятия.
¶Применение в России
¶Особенности использования
В России технология ActiveX получила широкое распространение в корпоративном и государственном секторах, что было связано с:
- Криптографией — многие системы электронной подписи (например, «КриптоПро CSP») использовали ActiveX-элементы для взаимодействия с браузером при подписании документов на веб-порталах (госуслуги, электронные торги, системы документооборота).
- Банковскими системами — «клиент-банк» и системы ДБО (дистанционное банковское обслуживание) часто требовали установки ActiveX-компонентов для работы с USB-токенами и смарт-картами.
- Государственными информационными системами — порталы госзакупок, судебных дел, налоговой службы (ФНС) до 2020 года активно использовали ActiveX.
¶Переход на альтернативы
С 2020 года, в связи с прекращением поддержки Internet Explorer и требованиями импортозамещения, российские разработчики начали массово переходить на:
- NPAPI-плагины (для Firefox ESR);
- Native Messaging (для Chrome и Chromium);
- Веб-расширения на основе JavaScript;
- Собственные браузеры (например, «Яндекс.Браузер» с режимом совместимости).
Тем не менее, по состоянию на 2024 год, в некоторых унаследованных системах (legacy systems) ActiveX-скрипты продолжают использоваться в режиме эмуляции Internet Explorer в Microsoft Edge.
¶Интересные факты
- Название «ActiveX» было выбрано как маркетинговый ход, подчёркивающий «активность» и «интерактивность» технологии по сравнению с пассивным HTML.
- Технология ActiveX была одной из причин антимонопольного дела против Microsoft в США (1998–2001), где утверждалось, что компания незаконно связывала Internet Explorer с Windows, используя ActiveX для вытеснения конкурентов.
- Несмотря на упадок, некоторые ActiveX-элементы управления до сих пор поставляются с Windows 10 и 11 (например,
Microsoft Web Browser Control), но их использование в браузере заблокировано.
¶Источники
- Microsoft Corporation. «ActiveX Controls» // MSDN Library, 1996–2020.
- Howard, M., LeBlanc, D. «Writing Secure Code» // Microsoft Press, 2002.
- «The Death of ActiveX» // Ars Technica, 2015.
- «ActiveX Security: A History of Vulnerabilities» // Symantec Security Response, 2008.
- «Обзор технологий электронной подписи в России» // Институт развития информационного общества, 2021.