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.

Также доступно видео с подробной демонстрацией атаки.

©  Linux.org.ru