Comments 43
Отчет об уязвимости был отправлен в Доктор Веб и, вроде бы, разработчики все поправили.
А Премию выписали?
Или большое спасибо?
Лицензионное соглашение Dr.Web Security Space 12.0:
9. Пользователю не разрешается без письменного согласия Правообладателя изменять, декомпилировать, дизассемблировать, дешифровать и производить иные действия с объектным кодом ПО, в том числе имеющие целью получение информации о реализации алгоритмов и принципов, используемых в ПО, за исключением случаев, прямо предусмотренных действующим законодательством Российской Федерации.
По идее попытка устранение косяка с обходом подписи вполне себе попадает в это разрешение.
Да уж. Надо быть осторожнее. А может отказаться от использования такого ПО, а использовать либо свободное (в том числе и антивирусы) или самописное?!
Можно получить дистрибутивный комплект программы или даже распакованные файлы без согласия с eula — раз
Два — в такой формулировке явно, что пункт противоречит з-у РФ и следовательно можно все разбирать. Более того, там в тексте eula имеется определение того, что же такое "объектный код"? Если нет, то вообще пункт ни о чем
P.s. согласен с JerleShannara
https://www.consultant.ru/document/cons_doc_LAW_64629/3cbc9e0590122df6ade6baf1d39f9ee34411c24a/
ГК РФ Статья 1280. Право пользователя программы для ЭВМ и базы данных
3'. Лицо, правомерно владеющее экземпляром программы для ЭВМ, вправе без согласия правообладателя и без выплаты дополнительного вознаграждения воспроизвести и преобразовать объектный код в исходный текст (декомпилировать программу для ЭВМ) или поручить иным лицам осуществить эти действия, если они необходимы для достижения способности к взаимодействию независимо разработанной этим лицом программы для ЭВМ с другими программами, которые могут взаимодействовать с декомпилируемой программой, при соблюдении следующих условий:
1) информация, необходимая для достижения способности к взаимодействию, ранее не была доступна этому лицу из других источников;
2) указанные действия осуществляются в отношении только тех частей декомпилируемой программы для ЭВМ, которые необходимы для достижения способности к взаимодействию;
3) информация, полученная в результате декомпилирования, может использоваться лишь для достижения способности к взаимодействию независимо разработанной программы для ЭВМ с другими программами, не может передаваться иным лицам, за исключением случаев, когда это необходимо для достижения способности к взаимодействию независимо разработанной программы для ЭВМ с другими программами, а также не может использоваться для разработки программы для ЭВМ, по своему виду существенно схожей с декомпилируемой программой для ЭВМ, или для осуществления другого действия, нарушающего исключительное право на программу для ЭВМ.
В моем понимании от этого нет смысла защищаться — даже если руками в файле прописать все зависимости по полным путям (я проверял — можно прописать полные пути в таблице импорта и все будет работать). Если приложение работает от имени пользователя, то он имеет почти полный контроль над всем, что происходит в адресном пространстве этого приложения. Не было бы возможности подменить dll — поставил бы хук или просто OpenProcess + WriteProcessMemory.
Тут скорее дело в самой архитектуре фон Неймана — подпись хорошо работает если файл рассматривается как данные. Если файл рассматривается как код, то тут уже все печально.
Другие антивирусные продукты я не рассматривал, а среди не антивирусов я подобную проверку встречал в 3 продуктах — во всех сработал обход типа «обратный dll hijack».
При загрзуке DLL, винда вызовет из ее DllMain и передаст в нее информацию а процессе который загружает dll, из структур prcessinformation или startupinfo можно узначть имя исполняемого файла и путь к нему и проверить у него подпись. Но и сам процесс перед import_DLL может проверить подпись библиотеки, тогда hijackDLL не сработает. В таком случае останется только патчить проверку подписи, и в таком случае подпись исполняемого файла окажется невалидной и о LPE в драйвере можно забыть
В таком сценарии нет смысла копировать приложение к dll, поскольку его кроме нас запускать не будет, а значит и права будут те же. Но в случае, как в статье, это дает возможность запускать свой код от имени подписанного бинаря.
В первом сценарии можно рассматривать проверку подписи, но там есть свои особенности, например, загрузка dll происходит до работы основного кода, поэтому нельзя добавить проверку подписи к загружаемым dll из таблицы импорта. А во втором сценарии это все и вовсе бессмысленно — все действия проходят под контролем пользователя и легко динамически правятся.
года 3 назад я писал в саппорт по e-mail про false positive, ответили через неделю, тогда же и убрали из базы.
Отличная идея!
Я еще добавлю, что почти наверняка, что в составе Dr.Web есть компоненты уровня драйверов (*.sys), с которыми почти наверняка могут взаимодействовать любые приложения ) и там нет проверки того, что за приложение пытается сделать привилегированный вызов.
На такой глупости уже попадались АСУС и прочие вендоры.
Вроде такого — https://www.secureauth.com/labs/advisories/asus-drivers-elevation-privilege-vulnerabilities
От комментария на Хабре к уязвимости в антивирусе Dr. Web