Файл.URL не нужен!
То, что в список ассоциаций не заглядывают даже матёрые админы (большая часть из них) — это факт. Более того, разворачивая в Windows системах какой-либо из интерпретаторов, админы соглашаются с установщиком добавить ассоциации с соответствующими расширениями файлов, а после недоумённо пожимают плечами "как же нас таки поломали?", — в самом то деле?! Windows, чай, не UNIX где для исполнения какого-либо сценария нужно уметь чмодить (хотя в UNIX своих проблем безопасности с ворох газет), так что просто нужно взять на карандаш избегать ассоциаций, предпочитая им колхозные, но более безопасные средства запуска. Для наглядности (командная строка):assoc .url | sed "s/.*=\(.*\)/ftype \1/" | cmd | sed "/=/!d"
Возвращает:InternetShortcut="C:\WINDOWS\system32\rundll32.exe" "C:\WINDOWS\system32\ieframe.dll",OpenURL %l
С виду вроде обычная ассоциативная команда, если бы не одно но. Помимо стандартных протоколов в URL файле в качестве точки назначения может быть указан и локальный файл, причём это может быть как специально сформированный HTML, так и HTA или даже PE:[InternetShortcut] URL=file:///C:\Windows\notepad.exe
Учитывая же, что некоторых разработчиков программ хлебом не корми, но дай понапихать упаковочной плёнки в виде тех же URL файлов в конечный дистрибутив, поднапрячь свои булки всё же стоит, если не взять под пристальный контроль ассоциации. Так что:ftype InternetShortcut=
И\или:assoc .url=
Это снизит риски, но не устранит проблемы полностью. Если вы подумали, что всё же можно будет вызвать URL файл из командной строки так:rundll32 ieframe.dll,OpenURL <путь до URL файла>
можете запахнуть халат, ибо подобный эксгибиционизм отлавливается даже Windows Defender. Так почему же проблема не будет устранена полностью?
С одной стороны, ничто не помешает восстановить ассоциативные связи. С другой, можно вполне обойтись и без ассоциаций. ieframe.dll — это COM (явлющийся к тому же форвардом для shdocvw.dll, поэтому их интерфейсы аналогичны). Глянув содержимое ieframe.dll в OLEView, найдём весьма живописное полотно кисти анонимного танцовщика кода.
В чём прикол? Запускаем pwsh и пишем:[Activator]::CreateInstance(
[Type]::GetTypeFromCLSID('C08AFD90-F2A1-11D1-8455-00A0C91F3880')
).Navigate('file:///C:\Windows\notepad.exe')
Такие коврижки. А ведь на месте Блокнота может оказаться удалённый зловред. В общем, делаем выводы.
Информационная безопасность IT
1.4K постов25.6K подписчиков
Правила сообщества
Обязательно к прочтению для авторов:
1. Если вы добавляете пост, утверждающий об утечке данных или наличии дыр в системе, предоставьте ссылку на источники или технически подкованное расследование. Посты из разряда "Какой-то банк слил данные, потому что мне звонили мошенники" будут выноситься в общую ленту.
2. Все вопросы "Как обезопасить сервер\приложение\устройство" - в лигу "Компьютер это просто".
Обязательно к прочтению для всех:
Добавление ссылки разрешено если она не содержит описание коммерческих (платных) продуктов и/или идентификаторов для отслеживания перехода и для доступа не нужен пароль или оплата в т.ч. интернет-ресурсы, каналы (от 3-х тематических видео), блоги, группы, сообщества, СМИ и т.д.
Запрещены политические holy wars.
По решению модератора или администратора сообщества пользователь будет забанен за:
1. Флуд и оскорбление пользователя, в т.ч. провокация спора, флуда, холивара (высказывание без аргументации о конкретной применимости конкретного решения в конкретной ситуации), требование уже данного ответа, распространение сведений порочащих честь и репутацию, принижающих квалификацию оппонента, переходы на личности.
2. Публикацию поста/комментария не соответствующего тематике сообщества, в том числе обсуждение администраторов и модераторов сообщества, для этого есть специальное сообщество.
3. За обвинение в киберпреступной деятельности.
4. За нарушение прочих Правил Пикабу.