Tra*_*der 41 security wine kernel
要在 WINE 中运行某些 Windows 程序,您需要采用以下解决方法:
echo 0|sudo tee /proc/sys/kernel/yama/ptrace_scope
Run Code Online (Sandbox Code Playgroud)
根据支持网站,这是由于 Ubuntu 内核中的一个错误导致 ptrace 和 WINE 不能很好地协同工作。
使用上面的命令,您将 ptrace 设置为 0,根据我所做的研究(不要问我哪些网站,我似乎有很多网站),ptrace 与程序之间的交互有关。0 设置比 1 更宽松。
我必须假设 Ubuntu 想要 ptrace=1 有一个很好的理由,所以这让我回到了问题的简短形式。
设置 ptrace=0 是否涉及任何风险。安全性低?调试问题?还有其他我没想到的???
PS 对于任何阅读此文章并想知道错误原因的人来说,Windows 程序将根本无法打开,在系统监视器中,您将看到该程序的许多实例试图打开,然后它们最终将全部退出,如果您运行该程序对于终端,您将收到一条错误消息,告诉您已达到程序实例的最大数量。
ish*_*ish 48
这是由于 Ubuntu 内核中的一个错误导致 ptrace 和 WINE 不能很好地协同工作。
不,ptrace 保护是在 Ubuntu 10.10 周围首次引入的一种有意的内核安全措施。这不是错误,因此不会被“修复”。
简单来说,默认ptrace_scope
值会1
阻止一个进程检查和修改另一个进程,除非第二个进程(子进程)是由第一个进程(父进程)启动的。
由于wineserver
为这些程序提供“Windows 服务”的方式,这可能会导致 Wine 下的某些程序出现问题。
ptrace_scope
来0
?这恢复了一个进程可以“跟踪”另一个进程的旧行为,即使没有父子关系。
理论上,恶意软件可以利用它来伤害您/您的计算机;例如,它可以附加到 Firefox 并记录您的所有 URL/密码等。在实践中,这是极不可能的,除非您盲目地从随机站点等安装二进制 deb。
就调试而言,0
实际上需要将gdb
、strace
等设置附加到非子项,除非您使用提升的权限 (sudo) 运行它们。
ptrace_scope
是一个全局值,而它被设置为0
,系统上的所有进程都不受非子限制。ptrace_scope
像论坛帖子建议的那样使世界可写(666) - 这是一个巨大的安全风险,因为现在任何进程都可以随意更改它!一个更好的解决方案,它是更安全的,不需要反复修改ptrace_scope是授予Wineserver ptrace的能力。
在终端中:
须藤 apt-get 安装 libcap2-bin 须藤 setcap cap_sys_ptrace=eip /usr/bin/wineserver 须藤 setcap cap_sys_ptrace=eip /usr/bin/wine-preloader
这使wineserver和wine-preloader二进制文件免于非子 ptrace 限制,并允许它们 ptrace 任何进程。
安装 libcap2:
须藤 apt-get 安装 libcap2-bin;
然后,为 Crossover 添加一个例外:
须藤 setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wineserver; 须藤 setcap cap_sys_ptrace=eip /opt/cxoffice/bin/wine-preloader;
最后,将它的库添加到 ld.so.conf (否则你会得到“加载共享库时出错:libwine.so.1:无法打开共享对象文件:没有这样的文件或目录”):
echo /opt/cxoffice/lib/ | 须藤三通/etc/ld.so.conf.d/crossover.conf 须藤/sbin/ldconfig
在ubuntuforums.org我得到了以下链接的答案
https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace_Protection
这是链接中的粘贴(添加了我的强调)
随着 Linux 的日益普及,它将成为越来越多的恶意软件目标。Linux 进程接口的一个特别令人不安的弱点是单个用户能够检查其任何进程的内存和运行状态。例如,如果一个应用程序(例如 firefox)受到损害,攻击者就有可能附加到其他正在运行的进程(例如 gpg-agent)以提取其他凭据并继续扩大其攻击范围。
这不是一个理论上的问题。如果正常允许 ptrace,则 SSH 会话劫持甚至任意代码注入都是完全可能的。
作为解决方案,某些应用程序使用 prctl() 来明确禁止此类 ptrace 附件(例如 ssh-agent)。更通用的解决方案是只允许 ptrace 直接从父进程到子进程(即直接 gdb 和 strace 仍然工作),或者作为 root 用户(即 gdb BIN PID,并且 strace -p PID 仍然作为 root 工作)。
此行为是通过 /proc/sys/kernel/yama/ptrace_scope sysctl 值控制的。默认值为“1”以阻止非子 ptrace。值“0”恢复之前更宽松的行为,这可能更适合某些仅具有管理员帐户的开发系统和服务器。使用“sudo”还可以通过 CAP_SYS_PTRACE 功能临时授予 ptrace 权限,尽管此方法允许任何进程的 ptrace。
所以我想简短的答案是它不太安全,但个人计算机遭受此类攻击的可能性相当小。
归档时间: |
|
查看次数: |
41714 次 |
最近记录: |