Уязвимость в GNU tar, позволяющая перезаписать сторонние файлы
В утилите GNU tar выявлена уязвимость (CVE-2016-6321), позволяющая при раскрытии архива осуществить запись за пределы целевого каталога, заданного в командной строке.
Подготовив специальным образом архив атакующий может добиться записи файлов в сторонние каталоги при распаковке, например, подменить ключ входа по SSH или сценарии автозапуска bash. В случае если архив распаковывается пользователем root возможно организовать перезапись системных файлов и получить полномочия суперпользователя (например, переписав crontab). Интересно, что информация о проблеме была отправлена сопровождающему GNU tar еще в марте, но он не посчитал указанную проблему уязвимостью, поэтому проблема на момент публикации эксплоита остается неисправленной.
Уязвимость связана с некорректным вырезанием символов ".." из путей в архиве - при наличии ".." осуществляется удаление части пути, предшествующей "..". Например, подготовив архив с файлом "etc/motd/../etc/shadow", атакующий может переписать /etc/shadow в случае попытки раскрытия файла etc/motd (tar удалит "etc/motd/../", но оставит "etc/shadow", который будет обработан относительно корня целевой директории). Условием успешного проведения атаки является необходимость соответствия части присутствующего в архиве пути с задаваемой при распаковке целевой директорией, т. е. часть до символов ".." должна совпадать с заданной для распаковки директорией или соответствовать заданной через опцию "--wildcards" маске распаковки. Данное ограничение сужает область применения атаки системами с предсказуемыми путями распаковки, например, приложениями распаковывающими архивы в заранее известные директории.