Симлинк Эксплоиты в Python - PullRequest
       23

Симлинк Эксплоиты в Python

1 голос
/ 24 декабря 2010

Читая о сценариях оболочки и обработке временных файлов, я наткнулся на эксплойты Symlink. http://www.linuxsecurity.com/content/view/115462/151/ - основная идея. Мне было интересно, проверяет ли Python open () файл, который он собирается открыть, чтобы увидеть, является ли он символической ссылкой, и пытался открыть файл символической ссылки в режиме 'w'. К моему удивлению, он открыл ссылку и, следовательно, переписал файл, на который ссылалась ссылка. Теперь, если моя программа на Python выполняет большую часть обработки файлов, и это тоже предсказуемым образом, невозможно, чтобы злоумышленник создал ссылку по имени файла, который должна создать моя программа, и связал его с критическим системным файлом. Это перезапишет системный файл и приведет к сбою системы? Я использовал Python 2.4. Следующие версии Python решают эту проблему?

Или это вообще проблема?

Ответы [ 3 ]

2 голосов
/ 24 декабря 2010

Если ваша программа работает с повышенными привилегиями (например, root), то вы можете предотвратить этот тип атаки, не записывая файлы в каталог, где пользователи с более низкими привилегиями могут создавать символические ссылки.

Эта проблема не может быть решена с помощью языка или библиотеки времени выполнения, но должна решаться в среде, в которой работает программа.

(Обратите внимание, что если ваша программа не работает с повышенными привилегиями, то пользователь, создавший символическую ссылку, не позволит им сделать то, что он не мог бы сделать самостоятельно без вашей программы.)

1 голос
/ 24 декабря 2010

Проблема возникает только в том случае, если вы создаете временные файлы (ну, в общем случае - запись в файлы), которые имеют предсказуемые имена и расположены в каталоге, в который другие пользователи могут писать.Так что, если ваш скрипт пишет только в ваш домашний каталог, у вас все в порядке.Если вам нужно создать временные файлы в каталоге с общей записью, например, / tmp, вы должны использовать что-то вроде http://docs.python.org/library/tempfile.html

1 голос
/ 24 декабря 2010

Прежде всего, пользователь, который запускает скрипт, не должен иметь права на запись критических системных файлов.Во-вторых, это не задача питонов для решения этой проблемы.Это задача разработчика сценария.Python предоставляет tempfile как минимум с версии 2.3.

...