Небезопасно ли выполнять код через URL-адрес HTTP?

У меня вызывает подозрение механизм установки Bioconductor. Похоже, он просто выполняет (через source()) R-скрипт с URL-адреса HTTP. Разве это не небезопасный подход, уязвимый для атаки «человек посередине»? Я думаю, что они должны использовать HTTPS. Если нет, может ли кто-нибудь объяснить, почему текущий подход приемлем?


person Will Townes    schedule 26.05.2015    source источник
comment
Хотя мой конкретный вопрос касается Bioconductor, мне было бы интересно услышать общие ответы о том, когда/приемлем ли HTTP для запуска удаленных сценариев, не обязательно только в R.   -  person Will Townes    schedule 26.05.2015
comment
См. также: support.bioconductor.org/p/68458   -  person Will Townes    schedule 07.06.2015


Ответы (2)


Да вы правы.

Загрузка исполняемого кода через открытое текстовое соединение уязвима для MITM.

Если не загружено через HTTPS, где SSL/TLS может использоваться для шифрования и аутентификации соединения, или если код не был подписан и проверено на клиенте, злоумышленник MITM может изменить входной поток и вызвать выполнение произвольного кода в вашей системе.

person SilverlightFox    schedule 27.05.2015

Разрешение выполнения кода через HTTP-запрос GET, по сути, означает, что вы позволяете приложению напрямую обрабатывать пользовательский ввод, что напрямую влияет на поведение приложения. Хотя это часто то, что хотел бы разработчик (скажем, запросить конкретную информацию из базы данных), это может быть использовано способами, как вы уже упоминали (например, MITM). Часто (однако я никоим образом не имею в виду Bioconductor) плохая идея, поскольку она открывает систему для возможных XSS/(B)SQLi-атак среди прочих.

Однако URL — http://bioconductor.org/biocLite.R — это просто файл, размещенный на Веб-сервер и, судя по всему, source() используется для его прямой загрузки. Похоже, что в этом примере нет никакого пользовательского ввода, поэтому нет, я бы не стал отмечать его как небезопасный; однако ваша аналогия действительно верна.

Примечание. Это просто относится к запросам GET — например: http://example.com/artists/artist.php?id=1. Такая небезопасность может быть использована во многих HTTP-запросах, таких как атаки на заголовок узла, однако общая концепция остается той же. Пользовательский ввод не должен никогда напрямую обрабатываться приложением каким-либо образом.

person Juxhin    schedule 26.05.2015
comment
source() не просто загружает файл, но и выполняет его содержимое. Это та часть, которая беспокоит меня. - person Will Townes; 26.05.2015
comment
@WillTownes - Тогда да, это может быть проблемой, которая меня тоже беспокоит. Я предлагаю углубиться в то, как работает source(), поскольку в самой функции могут быть ограничения безопасности, которые мы могли пропустить. Конечно, я буквально ничего не знаю о том, как работает R. - person Juxhin; 26.05.2015