问题标签 [linux-security-module]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
84 浏览

linux - 如何让 SECMARK 在 Ubuntu 18.04 或 centOS 7.7 上运行

我有一个关于SECMARK的问题,它是iptables中的一个包标签功能。

我尝试根据Paul Moore 的指南(一个非常古老的 14 年旧博客)进行配置,但在 ubuntu 18.04 和 centOS 7.7 上都出现了错误:

命令:iptables -t mangle -A INPUT -p tcp --src 192.168.0.16 --dport 22 -j SECMARK --selctx system_u:object_r:foo_ssh_packet_t:s0

Ubuntu:No chain/target/match by that name

centOS:invalid argument. Run 'dmesg' for more information (PS 我在 centOS 上运行 dmesg 但没有得到任何有价值的东西)

我还尝试通过将“-t mangle”更改为“-t security”来配置“安全”表,并且得到了相同的输出。

iptables -t security -A INPUT -p tcp --src 192.168.0.16 --dport 22 -j SECMARK --selctx system_u:object_r:foo_ssh_packet_t:s0

0 投票
0 回答
86 浏览

linux-kernel - setns 系统调用的安全性

Linux 内核中是否有任何相关的 LSM 挂钩,而不是建议的补丁,可用于保护setns系统调用的使用?如果没有,那么可以使用什么来限制进程可以切换到的命名空间?

0 投票
0 回答
83 浏览

linux-kernel - 如何添加新的 LSM 挂钩函数?

最近在学习socketCAN和Selinux,想实现一个新的hook函数,当viral can device接收到消息的时候获取skb。所以我添加了一些定义并实现到include/linux/lsm_hook.hsecurity/security.cnet/can/raw.csecurity/selinux/hooks.cinclude/linux/security.h。我确信我的代码与原始代码保持相同的格式。但是当我使用命令make modules它抛出一条错误消息:错误:“security_raw_recvmsg”[net/can/can-raw.ko]未定义!(security_raw_recvmsg(struct sk_buff *skb) 是我添加的函数,位置在 net/can/raw.c 中的函数 raw_recvmsg 中)我该如何解决这个问题?内核版本为4.19。

0 投票
3 回答
40 浏览

linux - linux系统中python、perl或java的检测

如何在内核或用户空间中检测到该二进制文件属于某种解释器语言,如 python、Perl 或 java,而不是简单的二进制文件,如 ls、clear、df 等。

0 投票
0 回答
78 浏览

python - 阻止用户在在线编译器中运行恶意 python 代码

我正在开发一个在线编译器,用户可以在其中运行 python 代码。我的要求是在服务器端使用 exec 运行该 python 代码。因此,我研究了如何完全消除一些运行恶意 python 代码的用户,并且大多数网站都建议这样做-

  1. 内置禁用
  2. Ptrace 和 chroot 监狱
  3. 沙盒/虚拟机

但是,如果我存储一个列入黑名单的命令列表,例如 - ["exec","os","subprocess"] 并检查字符串代码是否存在任何列入黑名单的命令并将其丢弃在客户端和服务器端,那么就不会它解决了问题?

0 投票
0 回答
76 浏览

linux-kernel - 是否可以使用 eBPF 来做到这一点?即,我可以在文件被删除之前捕获事件吗?并收回

我正在尝试使用 ebpf 跟踪文件的删除,并希望在删除文件之前进行备份,然后删除文件。

为了跟踪文件的删除,其他社区成员告诉我使用三种方法

  1. 跟踪 security_path_unlink(const struct path *dir, struct dentry *dentry); 功能。
    但是一天结束时,我需要文件路径来备份,以便获取文件路径,我再次获得了两个选项
  • long bpf_d_path(struct path *path, char *buf, u32 sz) 不幸的是,bpf_d_path 允许列表没有 security_path_unlink() 函数。

  • 同时,您仍然可以使用 kfunc 或 kprobe 附加到 security_path_unlink() 函数,但您需要自己进行路径遍历,类似于 bpf 程序中的内核代码。

但不确定用第二种方法获取文件的天气

  1. 使用 LSM_PROBE 挂钩 security_path_unlink,拒绝此类调用并进行备份,然后删除文件。

但捕获仍然不确定如何获取路径

  1. aquasecurity tracee项目使用security_inode_unlink函数来跟踪文件的删除,但是tracee项目使用dentry到文件路径的方法来获取文件路径并遍历它

是否可以使用 eBPF 来做到这一点?即,我可以在文件被删除之前捕获事件吗?并获取文件路径。但是无法与其中任何一个合作,请建议我解决此问题的正确方法

密件抄送讨论问题

跟踪讨论组

0 投票
0 回答
11 浏览

linux - Yama LSM 中的潜在错误 - RCU 读取锁是否会阻止 task_struct 被释放?

我对 Linux 内核黑客比较陌生,但我目前正在尝试在Rust for Linux项目的上下文中将 Linux 安全模块Yama移植到 Rust。在试图了解 Yama 的运作方式时,我发现了一个潜在的 use-after-free 错误,尽管我不确定。

Yama 维护一个允许的跟踪器-跟踪器关系列表以保护 ptrace 调用,跟踪器和跟踪器存储为task_struct指针。重要的是,当添加异常时,这些的引用计数不会增加,这意味着注册了异常的任务仍然可以被释放。释放任务后,Yama 会将引用此任务的任何关系标记为无效。

我正在查看用于检查给定任务的已注册异常的代码。当发现一个有效的异常时,这个函数取消对跟踪器的引用task_struct*以检索它的线程组领导。所有这些都发生在 RCU 临界区,即 afterrcu_read_lock()和 before rcu_read_unlock()。我看到的潜在问题是,在检查关系是否有效并且在取消引用跟踪器task_struct指针之前,这个已注册的跟踪器任务可能已被释放。处于 RCU 关键部分是否会阻止 task_structs 被释放,从而使其安全?

相关函数ptracer_exception_found定义在 中security/yama/yama_lsm.c,可以在GitHub 上查看(我觉得这个函数和它调用的相关代码有点太长,不能包含 inline)。