Selinux

如何剖析 SELinux SYSCALL 消息?

  • March 1, 2017

所以,我有這三個審核日誌條目

type=AVC msg=audit(1488396169.095:2624951): avc:  denied  { setrlimit } for  pid=16804 comm="bash" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:system_r:httpd_t:s0 tclass=process
type=SYSCALL msg=audit(1488396169.095:2624951): arch=c000003e syscall=160 success=no exit=-13 a0=1 a1=7ffe06c17350 a2=2 a3=7fea949f3eb0 items=0 ppid=15216 pid=16804 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="bash" exe="/usr/bin/bash" subj=system_u:system_r:httpd_t:s0 key=(null)
type=EOE msg=audit(1488396169.095:2624951):

在 AVC 行上,很容易立即看到bash具有上下文的程序system_u:system_r:httpd_t:s0被拒絕設置資源限制的權限。

在 SYSCALL 行上,對 syscall=160 的快速Google表明這是一個setrlimit()呼叫,這很糟糕。我不知道的是要求修改什麼資源。它試圖修改哪些資源?

因此,在這種情況下,我們已經知道有問題的系統呼叫是setrlimit. 搜尋setrlimit顯示有一個包裝系統呼叫的同名 C 庫函式。

函式的文件表明第一個參數(審計日誌中 SYSCALL 行中的“a0”)表示有問題的資源,但手冊只告訴我們符號名稱,而不是數值。但是,它確實告訴我們符號是在sys/resource.h標頭檔中定義的。但是,該文件不包含實際值。

為了獲得數值,我們查看了sysdeps/unix/sysv/linux/bits/resource.h。在那裡,我們找到了定義的各種 RLIMIT_ 宏。

查看這些,我們可以找到嘗試修改的資源。在這種情況下,a0=1,對應於 1 的宏變成了 RLIMIT_FSIZE。

引用自:https://unix.stackexchange.com/questions/348473