Email or username:

Password:

Forgot your password?
Gabriel
Блог Лаборатории невидимых вещей

Ядро, гипервизор, виртуализация, доверенные вычисления и другие вопросы безопасности на системном уровне

Суббота, 23 апреля 2011 г.

Цирк безопасности Linux: Об изоляции графического интерфейса

Есть одна вещь, которую большинство пользователей Linux не осознают в своих системах Linux... это отсутствие изоляции на уровне графического интерфейса, и то, как она сводит на нет всю безопасность рабочего стола. Я писал об этом несколько раз, я говорил об этом несколько раз, и все же я постоянно сталкиваюсь с людьми, которые не понимают этого.



Итак, позвольте мне подчеркнуть это еще раз: если у вас есть два GUI-приложения, например, текстовый процессор OpenOffice Word Processor и глупая игра Tetris, оба из которых получили доступ к вашему экрану (вашему X-серверу), то между этими двумя приложениями нет никакой изоляции. Даже если они работают под разными учетными записями пользователей! Даже если они каким-то образом изолированы SELinux или чем-то еще! Нет, ноль, ноль, ноль, ноль!



Архитектура X-сервера, разработанная давным-давно счастливыми хиппи, которые считали, что все приложения для людей хороши и не вредоносны, просто позволяет любому GUI-приложению управлять любым другим. Не требуется никаких ошибок, никаких эксплойтов, никаких уловок. Все это сделано специально. Одно приложение может подслушивать или передавать нажатия клавиш другому, делать снимки экрана, занятого окнами, принадлежащими другому приложению, и т.д.



Если вы мне не верите, я предлагаю вам провести простой эксперимент. Откройте окно терминала, как обычный пользователь, и запустите xinput list, который является стандартной диагностической программой для Xorg (на Fedora вам, скорее всего, придется сначала установить его: yum install xorg-x11-apps):

$ xinput list



Он покажет вам все устройства указателя и клавиатуры, о которых знает ваш Xorg. Обратите внимание на ID устройства, указанного как "AT keyboard", а затем выполните команду (как обычный пользователь!):



$ xinput test id



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



Теперь, для лучшего результата, запустите другое окно терминала и переключитесь на root (например, используя su или sudo). Обратите внимание, что xinput, запущенный от имени пользователя, способен перехватить все ваши нажатия клавиш, включая пароль root (для su), а затем все нажатия клавиш, которые вы вводите в сессии root. Запустите какое-нибудь GUI-приложение от имени root или от имени другого пользователя, и снова обратите внимание, как ваш xinput может пронюхать все нажатия клавиш, которые вы вводите в это другое приложение!



Да, я понимаю, что сейчас происходит в вашем уме и сердце... Не волнуйтесь, другие тоже прошли через это. Не стесняйтесь ненавидеть меня, бросать оскорбления в мой адрес и т.д. Я не против, правда (я просто не буду их модерировать). Когда вы успокоитесь, продолжайте читать.



В Qubes вышеописанной проблемы не существует, потому что каждый домен (каждый AppVM) имеет свой собственный локальный, изолированный, фиктивный X-сервер. Главный X-сервер, который работает в Dom0 и обрабатывает реальное отображение, никогда не подвергается прямому воздействию ни одной из AppVM (AppVM не могут подключаться к нему по X-протоколу). Подробности см. в этом техническом обзоре.



Вы можете повторить тот же эксперимент в Qubes. Вам просто нужно использовать ID устройства "qubesdev", как показано в списке xinput (должно быть 7). Запустите xinput в одном из ваших доменов, например, в "красном". Поскольку мы используем одно и то же устройство и для мыши, и для нажатия клавиш, теперь вы должны видеть как сканкоды клавиш, так и все события мыши. Обратите внимание, как ваш xinput способен уловить все события, предназначенные для других приложений, принадлежащих тому же домену, где вы запускаете xinput, и как он не может уловить ничего, предназначенного для других доменов или Dom0.



BTW, Windows - единственная из известных мне основных ОС, которая действительно пытается реализовать некоторую форму изоляции на уровне GUI, начиная с Windows Vista. Смотрите, например, эту древнюю статью, которую я написал в те дни, когда я использовал Vista на своем основном ноутбуке. Конечно, эту изоляцию все еще легко обойти из-за огромного интерфейса, который открывается каждому клиенту GUI (который также включает GPU API). Тем не менее, они по крайней мере пытаются предотвратить это на уровне архитектуры.

Переведено при помощи Deepl
Источник: https://theinvisiblethings.blogspot.com/2011/04/linux-security-circus-on-gui-isolation.html?m=1
15 comments
дух прошлого

@Gaberiel
емнип маны по запуску игорей в отдельных х-серверах появились году так в 12м.🤭чем не изоляция

Gabriel
@azatot Маны для быдла, судя по всему большинство не в курсе как это делать, например я не в теме.
дух прошлого

@Gaberiel
у меня гдет в 15м была необходимость:). толь вов не стартовало толь гильдворс2.. уж не помню. потом рещко вайн обновился.. я и забил.
а так.. ну перехватывает и... до сих пор линуксь малварь ориентированна на сервера. в экосистеме с вменяемыми апдейтами и дождаться такое то🤭малореально

Gabriel
@azatot Открою страшный секрет сервер от не сервера не отличается ничем. Уязвим сервер уязвим и десктоп, только сервера знают как защищаться а пользователи десктопа нет.
И нет ты не прав, десктопят линукс в европейских странах, в китае да даже в рф. Так-что атаковать есть что.
дух прошлого

@Gaberiel
c 11го года полностью на линях... ни в одной системе ничего не словил. багтреки и секуры почитывпю.. эпидемий десктоп вирей или червей не встречал.

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

Gabriel
@azatot Так нет никаких разграничений прав на линях у каждого приложения абсолютный доступ к файловой системе, содержимому других приложений и api. Чтобы искать уязвимости в механизмах защиты нужно чтобы они хотя-бы были.
дух прошлого

@Gaberiel
вот и получаетс, что все вири лезут в окна а не к нам. и это хорошо

Gabriel
@azatot Все вири уже давно сделали вас частью ботнета и украли у вас данные карточек ведь вы обьективно никак на линуксе не можете запретить им это делать, им даже взламывать ничего не нужно по большому счёту.
дух прошлого

@Gaberiel
это уже теория заговора. или ты спецом что то трояеишь, а потом к себе впихивакшь...
ставь тогда хардеденд дженту.. фундоо или пиши lfs

Gabriel
@azatot Hardened gentoo мертва. Grsec разорвал отношения с гентой и это взаимно.
Gabriel
@azatot Касперскому расскажешь про то что js, pdf и офис вирусов не бывает и что линукс к ним не уязвим он с тебя поржёт.
дух прошлого replied to Gabriel

@Gaberiel
я с него самого давно ржу..
но сути это не меняет. эпидемии десктоп линуксов не было и нет.
ждемс ебилдов

Gabriel replied to дух
@azatot Может ли сайт на js подделать нажатие? Да может иначе бы файловый менеджер не открывался при нажатии на кнопку сайту, может ли он сохранить файл? Да может. Будет ли у файла право на запуск? Конечно будет если он заранее его проставил там откуда качает, либо может чмоднуть т.к он хозяин. Дальше идут вариации. Либо мы делаем xinput и ждём когда человек введёт sudo и тогда зная пароль судошимся и делаем что хотим.
Либо начинаем подделывать нажатия в x-ах например меняем настройки браузера и фаервола.
Либо просто запускаем эксплойт на интерпрмтируемых языках или опасные документовые форматы с эксплойтом.
Это при том если для самого JS нет эксплойта а они частенько встречаются, большинство уязвимостей браузера тор связанны с JS.
@azatot Может ли сайт на js подделать нажатие? Да может иначе бы файловый менеджер не открывался при нажатии на кнопку сайту, может ли он сохранить файл? Да может. Будет ли у файла право на запуск? Конечно будет если он заранее его проставил там откуда качает, либо может чмоднуть т.к он хозяин. Дальше идут вариации. Либо мы делаем xinput и ждём когда человек введёт sudo и тогда зная пароль судошимся и делаем что хотим.
Gabriel replied to дух
@azatot Эпидемии виндовс тоже нету это говорит о том что винда безопасна?
1lyaP

@Gaberiel Хехе. Я эту статью как-то всем своим линуксоидам знакомым отправил. И в фейсбуке запостил. Реакция околонулевая: поставили 3 лайка, пожали плечами и пользуются дальше)

Go Up