24

Файл.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. Так почему же проблема не будет устранена полностью?

Файл.URL не нужен! Информационная безопасность, Powershell, Командная строка, Windows, Длиннопост

С одной стороны, ничто не помешает восстановить ассоциативные связи. С другой, можно вполне обойтись и без ассоциаций. ieframe.dll — это COM (явлющийся к тому же форвардом для shdocvw.dll, поэтому их интерфейсы аналогичны). Глянув содержимое ieframe.dll в OLEView, найдём весьма живописное полотно кисти анонимного танцовщика кода.

Файл.URL не нужен! Информационная безопасность, Powershell, Командная строка, Windows, Длиннопост

В чём прикол? Запускаем pwsh и пишем:

[Activator]::CreateInstance(
[Type]::GetTypeFromCLSID('C08AFD90-F2A1-11D1-8455-00A0C91F3880')
).Navigate('file:///C:\Windows\notepad.exe')

Такие коврижки. А ведь на месте Блокнота может оказаться удалённый зловред. В общем, делаем выводы.

Правила сообщества

Обязательно к прочтению для авторов:

1. Если вы добавляете пост, утверждающий об утечке данных или наличии дыр в системе, предоставьте ссылку на источники или технически подкованное расследование. Посты из разряда "Какой-то банк слил данные, потому что мне звонили мошенники" будут выноситься в общую ленту.
2. Все вопросы "Как обезопасить сервер\приложение\устройство" - в лигу "Компьютер это просто".

Обязательно к прочтению для всех:

Добавление ссылки разрешено если она не содержит описание коммерческих (платных) продуктов и/или идентификаторов для отслеживания перехода и для доступа не нужен пароль или оплата в т.ч. интернет-ресурсы, каналы (от 3-х тематических видео), блоги, группы, сообщества, СМИ и т.д.


Запрещены политические holy wars.

По решению модератора или администратора сообщества пользователь будет забанен за:

1. Флуд и оскорбление пользователя, в т.ч. провокация спора, флуда, холивара (высказывание без аргументации о конкретной применимости конкретного решения в конкретной ситуации), требование уже данного ответа, распространение сведений порочащих честь и репутацию, принижающих квалификацию оппонента, переходы на личности.

2. Публикацию поста/комментария не соответствующего тематике сообщества, в том числе обсуждение администраторов и модераторов сообщества, для этого есть специальное сообщество.

3. За обвинение в киберпреступной деятельности.

4. За нарушение прочих Правил Пикабу.