我遇到了安全团队的问题,因为工程团队希望将文件系统合并到Docker中,但是要做到这一点,必须设置“-cap SYS_ADMIN”标志。保安不允许使用此标志。
我在互联网上发现了很多关于在码头运行时使用“-cap SYS_ADMIN”标志的文章,因为"SYS_ADMIN本身就赋予了相当大的能力,并且可能会出现更多的攻击表面。“
然而,我找不到任何具体说明这些能力是什么以及它们所呈现的“攻击表面”的东西吗?
SYS_ADMIN标志到底授予了什么?
设置此标志所带来的实际安全风险是什么?
发布于 2019-11-19 00:01:03
这基本上是对主机的根访问。从“功能手册”页面:
CAP_SYS_ADMIN备注:此功能已重载;请参阅下面给内核开发人员的备注。
*执行一系列系统管理操作,包括:引号(2)、挂载(2)、umount(2)、pivot_root(2)、setdomainname(2);*执行特权syslog(2)操作(自Linux2.6.37以来,应使用CAP_SYSLOG来允许此类操作);*执行VM86_REQUEST_IRQ vm86(2)命令;*对任意System对象执行IPC_SET和IPC_RMID操作;*覆盖RLIMIT_NPROC资源限制;*对受信任和安全扩展属性执行操作(见xattr(7));*使用lookup_dcookie(2);*使用ioprio_set(2)分配IOPRIO_CLASS_RT和(在Linux2.6.25之前) IOPRIO_CLASS_IDLE I/O调度类;*在通过UNIX域套接字传递套接字凭据时伪造PID;*超过/proc/sys/fs/file-max,系统范围内对开放文件数量的限制,在系统调用打开的文件时(例如接受(2)、execve(2)、open(2)、管道(2));*使用CLONE_*标志创建具有克隆(2)和unshare(2)的新名称空间(但是,由于Linux3.8创建用户名称空间不需要任何功能);*调用perf_event_open(2);*访问特权perf事件信息;* call setns(2) (需要目标命名空间中的CAP_SYS_ADMIN );*调用fanotify_init(2);*调用bpf(2);*执行特权KEYCTL_CHOWN和KEYCTL_SETPERM keyctl(2)操作;*执行input (2) MADV_HWPOISON操作;*使用TIOCSTI ioctl(2)将字符插入到呼叫方控制终端以外的终端的输入队列中;*使用过时的nfsservctl(2)系统调用;*使用过时的bdflush(2)系统调用;*执行各种特权块设备ioctl(2)操作;*执行各种特权文件系统ioctl(2)操作;*在/dev/随机设备上执行特权ioctl(2)操作(见随机(4));*安装seccomp(2)过滤器,无需首先设置no_new_privs线程属性;*修改设备控制组的允许/拒绝规则;*使用ptrace2 PTRACE_SECCOMP_GET_FILTER操作转储tracee的seccomp过滤器;*使用ptrace(2) PTRACE_SETOPTIONS操作来暂停tracee的seccomp保护(即PTRACE_O_SUSPEND_SECCOMP标志);*对许多设备驱动程序执行管理操作。*通过写入/proc/pid/autogroup (见sched(7))修改autogroup的尼斯值。
https://stackoverflow.com/questions/58924511
复制相似问题