Проблема небезопасной загрузки динамических библиотек вообще характерна для продуктов Microsoft. Она стала причиной уязвимостей MS10-087, MS10-093, MS10-094, MS10-095, MS10-096, MS10-097, MS11-001, MS11-003, MS11-015, MS11-016, MS11-017, MS11-023, MS11-025, KB2533623, MS11-055, MS11-059, MS11-071, MS11-073, MS11-075, MS11-076, MS11-085, MS11-094, MS11-099, MS12-012, MS12-014, MS12-022, MS12-039, MS12-046, MS12-074, MS14-023.
Ответственность за обеспечение безопасности подключения библиотек в первую очередь на разработчиках. Например, при указании при вызове функции LoadLibraryEx() ключа LOAD_LIBRARY_SEARCH_SYSTEM32 поиск библиотеки начинается с system32 (странно, почему Microsoft не мог просто использовать это в скайпе?).
Но что-то в силах сделать и администраторы.
Во-первых, это ключ SafeDllSearchMode (HKEY_LOCAL_MACHINESystemCurrentControlSetControlSession ManagerSafeDllSearchMode), который немного меняет порядок поиска библиотек:
1. Директория, из которой запущно приложение
2. Системная директория
3. Директория Winodws
4. Текущая директория
5. Директории из переменной окружения PATH
Если отключить SafeDllSearchMode, порядок будет такой:
1. Директория, из которой запущно приложение
2. Текущая директория
3. Системная директория
4. Директория Winodws
5. Директории из переменной окружения PATH
Особо интересны два момента:
– Если библиотека с таким именем уже загружена в память, то будет использоваться этот образ
– Если библиотека присутствует в KnownDlls, то она будет загружаться из стандартного пути
На последнем моменте надо остановиться подробнее. Известные библиотеки перечислены в узле реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerKnownDLLs и по умолчанию загружаются ТОЛЬКО из системных директорий. Путь их поиска можно задать ключами HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerKnownDLLs:DllDirectory и HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerKnownDLLs:DllDirectory32.
Поэтому, в общем то, вчерашнюю проблему со скайпом можно решить путем добавления библиотеки в KnownDlls.
Источник: https://t.me/informhardening