Разработчики проекта GNU Guile, в рамках которого развивается свободная реализация функционального языка программирования Scheme, устранили (https://lists.gnu.org/archive/html/guile-user/2016-10/msg000...) заслуживающую внимания уязвимость, затрагивающую программы, которые принимают сетевые соединения, привязываясь к localhost. Уязвимость позволяет организовать выполнение кода на машине разработчика при открытии в браузере на той же машине специально оформленной web-страницы.
Многие разработчики считают, что привязка к localhost обеспечивает достаточный уровень безопасности и не позволяет обратиться к данному сервису из внешне сети. Тем временем, всё больше программ используются Web API и HTTP в своих сервисах. Если подобные сервис запущен на машине разработчика, то у атакующего появляется возможность отправки запросов к данным локальным сервисам через манипуляции с браузером, запускаемым в той же системе. Например, при открытии подконтрольного атакующему сайта, может быть сформирован запрос ресурса с "http://localhost:6379/" и браузер обратиться к локальному сервису, ожидающему соединений на порту 6379.
Если протокол взаимодействия с сервисом основан на HTTP, то через браузер разработчика сервису можно отправить любую команду. Для скрытия обращения к localhost могут быть использованы произвольные доменные имена, указывающие в DNS на 127.0.0.1. В случае с интерпретатором Guile, который по умолчанию запускает обработчик для запросов с localhost, подобным способом можно организовать выполнение произвольного кода на языке Scheme на машине разработчика. Для локальных сервисов рекомендуется использовать unix-сокеты или именованные каналы, и не полагаться на привязку к localhost. Аналогичные способы атаки ранее были выявлены (http://bouk.co/blog/hacking-developers/) для БД Redis, Elasticsearch и Memcached.URL: https://lists.gnu.org/archive/html/guile-user/2016-10/msg000...
Новость: http://www.opennet.me/opennews/art.shtml?num=45321
Внимание! Утечка борща в третьей зоне. Уровень тревоги -- зелёно-фиолетовый. Рекомендуется погасить все localhost интерфейсы.
Лисперам с личными котелками выстроиться в столовой и ждать указаний.
Внимание...
Главное чтоб дырявых ложек всем хватило.
> Разработчики проекта GNU Guile, в рамках которого развивается свободная реализация функционального языка программирования Scheme, устранили заслуживающую внимания уязвимостьНе льстите себе, всем пофиг. Её никто не использует кроме разработчиков.
Используется в пакетном менеджере GUIX.
...который тоже не использует никто, кроме разработчиков. Они прям созданы друг для друга.
> Её никто не использует кроме разработчиков.Вообще, за редким исключением, языками программирования пользуются разработчики. MS пыталась привить пользователям любовь к васику, из этого ничего не вышло. И guile гораздо приятнее всяких васиков или lua. В том же lilypond'е, например. Он попадается и в других местах, скажем, в гимпе, но на гимп мне плевать, совершенно ненужная программа, по-моему. А вот с lilypond'ом я с удовольствием вожусь, и схема там очень кстати.
Половина gschem (редактор принципиальных схем из gEDA, САПР для электроники) написана на Scheme. gEDA/gaf - набор специализированных утилит в духе UNIX, склеенных между собой скриптами на Scheme (бекенды для обработки списка соединений, экспортеры/импортеры/конвертеры).
Я использую.
pacman -Qii guile
Required By : make
pacman -Qii make
Depends On : glibc guile
точно никто?
Package: make
Source: make-dfsg
Version: 4.0-8.1
Installed-Size: 1057
Maintainer: Manoj Srivastava <srivasta@debian.org>
Architecture: i386
Depends: libc6 (>= 2.17)
Replaces: make-guile <- it's dead, Jim
Suggests: make-doc
Name : make
Version : 4.2.1-1
Description : GNU make utility to maintain groups of programs
Architecture : x86_64
URL : http://www.gnu.org/software/make
Licenses : GPL3
Groups : base-devel
Provides : None
Depends On : glibc guile
Optional Deps : None
Required By : None
Optional For : None
Conflicts With : None
Replaces : None
Installed Size : 1504.00 KiB
Packager : Andreas Radke <andyrtr@archlinux.org>
Build Date : Sat 11 Jun 2016 03:13:41 PM EEST
Install Date : Tue 14 Jun 2016 09:47:13 PM EEST
Install Reason : Explicitly installed
Install Script : No
Validated By : Signature
Backup Files :
(none)
https://www.gnu.org/software/make/manual/make.html#Guile-Int...
И это очень странно
На вид - это скорее в браузерах уязвимость
Вот я тоже об этом подумал.
> На вид - это скорее в браузерах уязвимостьВот не надо грязи. Это не уязвимость, это их основная функция: загрузить неизестно что неизвестно откуда и немедленно выполнить. А уж кто на localhost-е не спратался...
Это в браузере. Если запретить кроссхост, то уязвимости не будет! А поломанные сайты - это проблемы владельцев сайтов... Ну или белый список прикручивать.
А если пойти по ссылке и внимательно почитать?
Есть некий evilsite.tld на котором нехорошая страничка. TTL для A записи стоит в 1 секунду. И 9 секунд из 10 указывает на его настоящий IP, а 1 секунду на 127.0.0.1. При просмотре странички загружается и выполянется js, который раз в секунду пытается отправить запрос на evilsite.tld. И никакого cross-site.
Ну, намёк понял и даже частично согласен, но вообще-то у них там CSP на этот счёт нынче есть. А согласен - в том плане, что на надёжность песочницы рассчитывать - себя не уважать. Либо у тебя недоверенный код не вопоняется в принципе, либо просто надейся, что тебя не поломают.
Однако. Это получается, что чтобы атаковать лиспера, необходимо захватить DNS-сервер, которым он пользуется, вставить в него A-запись для какого-нибудь сайта 127.0.0.1, потом заставить этого лиспера открыть специальную страницу, которая будет слать запросы на этот сайт, и эксплуатировать уязвимость guile, чтобы выполнить на машине разработчика произвольный код...Знаете, наверное этот лиспер должен быть очень важным, раз на него такая изощрённая целевая атака идёт. :)
Или вставить запись в один из популярных host-файлов для блокировки рекламы
Зачем вообще какую-то запись вставлять? Сразу к 127.0.0.1 коннектиться.
Same Origin?
> Зачем вообще какую-то запись вставлять?Чтоб заманить на контролируемую страничку.
> Знаете, наверное этот лиспер должен быть очень важным, раз на него такая изощрённая целевая атака идёт. :)А кто сказал, что атака должна быть целевой? Создаем ресурс, раскручиваем его среди девелоперов(не обязательно лисперов, это не только для них уязвимость), в один прекрасный день собираем урожай. Время от времени повторяем.
> не обязательно лисперов, это не только для них уязвимостьА мне кажется, что речь только про программы на Guile, стало быть обязательно лисперов. :)
Даже уязвимости в scheme не содержат побочных эффектов!
Вот и до админов локалхоста добрались
И что мне теперь делать?
> И что мне теперь делать?Начинай использовать Нью Гайл! Теперь это Настоящий Язык -- с уязвимаостями и секурити фиксами. Пора!
Предлагаю запретить 127.0.0.1 и аналоги в браузерах для домохозяек
> Предлагаю запретить 127.0.0.1 и аналоги в браузерах для домохозяекДевелоперам на гну гайле завезли какие-то "отдельные" броузеры?
> Предлагаю запретить 127.0.0.1 и аналоги в браузерах для домохозяекПредлагаю запретить /etc/hosts
Подозрительный ты админ локалхоста. Это ынтырпрайзные товарищи такое любят обычно.
Действительно подозрительный, для тех кто не понимает сарказма.
Tcp на локалхосте только хипстеры используют. Бородатые мужики - только югикс-сокеты.
То есть авторы GNU Guile недостаточно бородаты? Так и запишем...
Ну что, зоркий глаз, на 15-й год ты заметил что браузер может ходить на локалхост? :)
> Ну что, зоркий глаз, на 15-й год ты заметил что браузер может
> ходить на локалхост? :)Кстати, эти их lisp-хакеры https://lists.gnu.org/archive/html/guile-devel/2016-10/msg00... "просто" сделали https://blog.lizzie.io/exploiting-CVE-2016-8606.html и без DNS-ов и их переключений, а ч-з обычный :-S XMLHttpRequest и немного lisp-магии с переписыванием lisp-программы [как данных], чтоб в ней не было пробелов и кавычек. Секьюрити-иксперты с DNS-костылями курят в сторонке.
Вау!
...Броузер... js... и немедленно исполнить. Прекрасно!
тссс, не подсказывайте им про эрланг
> тссс, не подсказывайте им про эрлангНе, не подсказывайте http://wingolog.org/archives/2016/10/12/an-incomplete-histor... , не надо http://wingolog.org/archives/2016/09/20/concurrent-ml-versus-go .