Что такое обходной путь ptrace_scope для программ Wine и есть ли риски?

Чтобы запустить определенные программы Windows в WINE, вам нужно обойти это:

echo 0|sudo tee /proc/sys/kernel/yama/ptrace_scope

Согласно веб-сайтам поддержки, это связано с ошибкой в ​​ядре Ubuntu, которая мешает совместному воспроизведению ptrace и WINE.

Используя вышеупомянутую команду, вы устанавливаете ptrace в 0, что, согласно исследованию, которое я провел (не спрашивайте меня, какие веб-сайты, мне кажется, их много), ptrace связано с взаимодействиями между программами. Параметр 0 является более допустимым, чем 1.

Я должен предположить, что была веская причина, по которой Ubuntu захотел ptrace = 1, поэтому я возвращаюсь к краткой форме вопроса.

Есть ли риски, связанные с установкой ptrace = 0. Более низкая безопасность? проблемы отладки? любые другие, о которых я не думал ???

P.S. для всех, кто читает это и интересуется, в чем причина ошибки, программы Windows вообще не откроются, в системном мониторе вы увидите много примеров попыток открытия программы, а затем все они в конечном итоге закроются, и если вы запустите программу для В терминале вы получите ошибку, сообщающую, что максимальное количество экземпляров программы было достигнуто.

37
задан 22 June 2012 в 04:08

4 ответа

ОБНОВЛЕНИЕ Вышеприведенные инструкции:

sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wineserver;
sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wine-preloader;

не работают с 15.09.2008 в Ubuntu 18.04.1 и PlayOnLinux v.4.2. 12 с использованием последней стабильной версии Wine, v.3.0.1. Libcap2 уже установлена.

Сообщение об ошибке в Gnome Terminal выглядит следующим образом:

Failed to set capabilities on file `/usr/bin/wineserver' (Invalid argument)
The value of the capability argument is not permitted for a file. Or the file is not a regular (non-symlink) file

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

Благодаря.

0
ответ дан 22 June 2012 в 04:08

Короткий ответ: практической опасности пока нет, но читайте дальше, чтобы лучше ...


Что это за штука ptrace ?

это связано с ошибкой в ​​ядре Ubuntu, из-за которой ptrace и WINE не играют хорошо вместе. [ 1118] [тысяча сто сорок-один]

  • Нет, защита ptrace - это преднамеренная мера безопасности ядра , впервые введенная в Ubuntu 10.10. Это не ошибка , и поэтому не будет «исправлено».

  • Проще говоря, значение ptrace_scope по умолчанию 1 блокирует один процесс от проверки и изменения другого процесса , если второй процесс (дочерний) не был запущен первым процессом (родительским) ). [одна тысяча сто сорок три]

  • Это может вызвать проблемы с некоторыми программами в Wine из-за способа, которым wineserver предоставляет «Службы Windows» для этих программ.

Каковы риски при установке ptrace_scope на 0?

  • Это восстанавливает старое поведение, когда один процесс может «отслеживать» другой процесс, даже если существует нет родительско-дочерних отношений.

  • Теоретически, вредоносная программа может использовать это для нанесения вреда вам / вашему компьютеру; например он может подключаться к Firefox и регистрировать все ваши URL / пароли и т. д. На практике это крайне маловероятно, если вы не слепо устанавливаете двоичные файлы со случайных сайтов и т. д.

  • Что касается отладки, настройки 0 фактически необходимы для gdb, strace и т. Д. Для подключения к не дочерним элементам, если вы не запускаете их с повышенными привилегиями (sudo). [ 1147] [тысяча сто тридцать-три]

Каковы проблемы с обходным решением?

  • Обходное решение несколько проблематично, потому что ptrace_scope является глобальным значением, и хотя оно установлено на 0, все процессы в вашем Система освобождена от ограничений, не связанных с детьми.
  • Если вы используете обходной путь, поместите его в простой сценарий bash, который включает его, запускает программу Windows и затем отключает (устанавливает в 1) при выходе.
    • НЕ делать ptrace_scope доступным для записи в мире (666), как рекомендует пост на форуме - это огромный риск для безопасности, потому что теперь любой процесс может изменить его по своему желанию!

Есть ли лучшее решение?

  • Лучшее решение, которое является более безопасным и не требует повторного изменения ptrace_scope должен предоставлять возможности Wineserver ptrace .

    • В терминале:

      sudo apt-get install libcap2-bin 
      sudo setcap cap_sys_ptrace=eip /usr/bin/wineserver
      sudo setcap cap_sys_ptrace=eip /usr/bin/wine-preloader
      
    • Это освобождает двоичные файлы wineserver и preloader вина от не дочернее ограничение ptrace и позволяет им отслеживать любой процесс.

    • Это нужно сделать только один раз, и это безопаснее, потому что эти двоичные файлы обычно поступают из надежного источника - из официальных репозиториев или официального Wine PPA, поэтому они не будут вредоносными.

Если вы используете Crossover

Установите libcap2:

sudo apt-get install libcap2-bin;

Затем добавьте исключение для Crossover:

sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wineserver;
sudo setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wine-preloader;

Наконец, добавьте его библиотеки в ld.so.conf (или вы получите «ошибку при загрузке общих библиотек: libwine.so.1: не удается открыть файл общего объекта: нет такого файла или каталога»):

[ 113]
0
ответ дан 22 June 2012 в 04:08

В ubuntuforums.org я получил ответ со следующей ссылкой

https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace_Protection

здесь - вставка из ссылки (с моим акцентом)

По мере того, как популярность Linux растет, она становится растущей мишенью для вредоносных программ. Одна особенно тревожная слабость интерфейсов процессов Linux заключается в том, что один пользователь может проверить память и рабочее состояние любого из своих процессов. Например, если одно приложение (например, firefox) было взломано, злоумышленник сможет подключиться к другим запущенным процессам (например, gpg-agent), чтобы извлечь дополнительные учетные данные и продолжить расширять область своей атаки.

Это не теоретическая проблема. Перехват сеанса SSH и даже произвольное внедрение кода полностью возможны, если ptrace разрешен нормально .

В качестве решения некоторые приложения используют prctl (), чтобы специально запретить такое вложение ptrace (например, ssh-agent). Более общее решение состоит в том, чтобы разрешить ptrace только напрямую от родительского к дочернему процессу (т. Е. Прямой gdb и strace по-прежнему работают) или как пользователь root (т. Е. Gid-идентификатор BIN PID и strace -p PID по-прежнему работают как root).

Это поведение контролируется с помощью значения / proc / sys / kernel / yama / ptrace_scope sysctl. По умолчанию установлено значение «1» для блокировки не дочерних ptrace. Значение «0» восстанавливает прежнее более разрешающее поведение, которое может быть более подходящим для некоторых систем разработки и серверов, имеющих только учетные записи администратора. Использование sudo может также временно предоставить разрешения ptrace с помощью возможности CAP_SYS_PTRACE, хотя этот метод позволяет использовать ptrace для любого процесса.

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

0
ответ дан 22 June 2012 в 04:08

В Ubuntu 19.10 /usr/bin/wineserver и /usr/bin/wine-preloader на самом деле являются символическими ссылками, а не файлами. Вероятно, это относится и к 18.04. Я видел следующее решение в другом сообщении, которое я больше не могу найти. Вместо этого попробуйте следующее:

sudo setcap cap_sys_ptrace=eip "$(readlink -f "/usr/bin/wineserver")"
sudo setcap cap_sys_ptrace=eip "$(readlink -f "/usr/bin/wine-preloader")"

В зависимости от того, какой винный пакет вы используете, вы должны добавить что-то вроде: echo /opt/wine-stable/lib/ | sudo тройник /etc/ld.so.conf.d/wine.conf или: echo /opt/wine-staging/lib/ | sudo тройник /etc/ld.so.conf.d/wine.conf с последующим: sudo /sbin/ldconfig

0
ответ дан 24 March 2020 в 15:22

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

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