Почему можно делать скриншот без прав root?

В Ubuntu я могу сделать снимок экрана с содержимым всего экрана, используя инструмент screenshot , работающий в пространстве пользователя. Почему это возможно? И не означает ли это, что любой процесс может в любое время шпионить за содержимым экрана, чтобы прочитать конфиденциальную информацию без необходимости получения привилегий root?

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

0
задан 7 June 2020 в 07:46

3 ответа

Вы можете потратить время, чтобы никто, кроме пользователя root , не запускал программу скриншотов. Однако другие программы по-прежнему могут видеть «экран», любой «монитор» и любое «открытое окно».

Например, мой маленький скрипт на python «читает» изображение экрана, собирает информацию о мониторе и управляет любым окном:

mmm screenshot.png

тот же сценарий Python также приостанавливает / воспроизводит фильмы на левом мониторе, регулирует яркость и цветовую температуру на любом мониторе и даже управляет лампой 120 В переменного тока за телевизором, включая и выключая его.

То, что вы считаете недостатком или «дырой в безопасности», на самом деле является преимуществом или «свободой» для других. Ведь речь идет о «персональных компьютерах». Даже в бизнес-условиях часто пользователям с низким энергопотреблением необходимо делать снимки экрана. Одним из примеров является снятие скриншота программы и отправка его в корпоративную службу поддержки для поддержки.

2
ответ дан 19 June 2020 в 21:29

Добрый старый X11 - наследие технологии и не очень безопасны в этом аспекте, вы даже можете (видео) захватывать и обмениваться рабочим столом, а не только неподвижные изображения.

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

Обратитесь к этому, чтобы узнать больше: Почему Wayland лучше?

0
ответ дан 19 June 2020 в 21:29

Проведя некоторые исследования, я понял, что это неизбежно при использовании системы X Window, которая реализовано по умолчанию в Ubuntu. Некоторые хорошие новости заключаются в том, что, похоже, Wayland смягчает эти проблемы.


Действительно хорошая статья, которой поделился комментарий, это эта , объясняющая эту ошибку безопасности.

Цирк безопасности Linux: об изоляции GUI

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

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

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

Если вы мне не верите, я предлагаю вам провести простой эксперимент. Откройте окно терминала, как обычный пользователь, и запустите xinput list , который является стандартной диагностической программой для Xorg:

Он покажет вам все устройства указателя и клавиатуры, о которых знает ваш Xorg. Запишите идентификатор устройства, указанного как «AT-клавиатура», а затем запустите (как обычный пользователь):

xinput test *id*

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

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

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

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

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

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

0
ответ дан 19 June 2020 в 21:29

Другие вопросы по тегам:

Похожие вопросы: