Гонка символических ссылок

Безопасность программного обеспечения

Гонка символических ссылок — это своего рода уязвимость безопасности программного обеспечения , которая возникает из-за того, что программа создает файлы небезопасным образом. [1] Злонамеренный пользователь может создать символическую ссылку на файл, который в противном случае был бы ему недоступен. Когда привилегированная программа создает файл с тем же именем, что и символическая ссылка, она фактически создает вместо этого связанный файл, возможно, вставляя содержимое, желаемое злонамеренным пользователем (см. пример ниже), или даже предоставленное злонамеренным пользователем (в качестве входных данных для программы).

Это называется « гонкой », потому что в типичном проявлении программа проверяет, существует ли файл с таким именем; если его нет, программа создает файл. Злоумышленник должен создать ссылку в промежутке между проверкой и созданием файла .

Гонка символических ссылок может происходить с антивирусными продуктами, которые решают, что они поместят подозрительный файл в карантин или удалят его, а затем продолжают и делают это. В промежутке между решением и действием вредоносное ПО может заменить подозрительный файл системным или антивирусным файлом, который вредоносное ПО хочет перезаписать. [2]

Пример

В этом наивном примере программа Unixfoosetuid. Ее функция — извлекать информацию для учетных записей , указанных пользователем. Для «эффективности» она сортирует запрошенные учетные записи во временный файл ( /tmp/fooестественно) перед выполнением запросов.

Каталог /tmpдоступен для записи всем. Злонамеренный пользователь Mallory создает символическую ссылку на файл /root/.rhostsс именем /tmp/foo. Затем Mallory вызывает fooс помощью userзапрошенной учетной записи. Программа создает (временный) файл /tmp/foo(на самом деле создавая /root/.rhosts) и помещает в него информацию о запрошенной учетной записи (например user password). Она удаляет временный файл (просто удаляя символическую ссылку).

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

В некоторых Unix-системах существует специальный флаг, O_NOFOLLOWпредотвращающий open(2)открытие файла через символическую ссылку (висячую или иную), который был стандартизирован в POSIX.1-2008 .

Обходной путь

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

Ссылки

  1. ^ "CAPEC-27: Использование условий гонки через символические ссылки". CAPEC .
  2. ^ «В 28 антивирусных продуктах обнаружены ошибки гонки символических ссылок». ZDNet .
Взято с "https://en.wikipedia.org/w/index.php?title=Symlink_race&oldid=1228068204"