青骥原创 l 谈谈QNX安全之文件权限

admin 2024年11月21日14:34:09评论100 views字数 0阅读0分0秒阅读模式
青骥原创 l 谈谈QNX安全之文件权限
前面我们谈到QNX的编译安全以及防篡改技术,此时我们已经在软件编译、存储、启动时实现了安全加固,那么如何保护运行时的软件安全呢?这是一个庞大的话题,QNX针对此提供了非常多的安全策略,如PAM、进程隔离、进程权限控制、资源访问控制、资源限制。今天笔者就给大家简单介绍下QNX中的资源访问控制,涉及用户以及基于用户的权限控制。

1. 基础概念

在正式介绍先介绍一下本文的基础概念,如表1所示:
1 资源访问控制基础概念

概念名

描述

UID/GID User Identity/Group Identity,用来标明在系统中的唯一身份。对于UID/GID应该知道:

  • QNX启动后,所有服务都使用自己唯一的UIDGID 运行。

  • 每个文件和目录都属于一个特定的UIDGID。可以通过chmodchownchgrp为文件或目录指定权限、改变ownergroup

  • 可基于UIDGID,利用POSIX权限对文件和其他资源管理器等设置资源访问权限。

  • QNXUID 0识别为特权用户,即root。一般而言root权限可执行任何操作。

POSIX权限 可以在资源上设置访问权限的机制,可与进程UID(S)GID结合使用。

  • 权限可划分为User权限、Group权限、Other权限(如不在Group中的任何人)。

  • 权限集包括读权限(R),对于目录而言指拥有list目录的权限;写权限(W);执行权限(X),对于目录而言指search目录的权限;setuidsetgid(sS)StickytT)。

Setuid/setgid 针对可执行文件,可以以可执行文件所有者或组的UIDGID 运行。某些程序,例如 passwd,需要以特权用户身份运行才能正常工作,但普通用户无读写/etc/shadow文件的权限,此时通过设置setuid/setgid便可让普通用户以该特权用户身份运行passwd,实际QNX也是这么做的,如下:

$ which -l passwd

-rwsrwxr-x 1 root root 21544 Mar 20 23:34 /usr/bin/passwd

注意当ownergroup没有相应的x权限时,为“S”

Sticky Bit 简称 SBIT 特殊权限,可意为粘着位、粘滞位、防删除位等。SBIT可影响可执行文件和目录处理的访问权限:

  • 对于可执行文件,内核将在程序结束后将可执行文件保留在内存中一段时间”——确切的时间长度取决于系统中发生的其他事情。如果经常运行程序,这可以提高性能。

  • 对于目录,一旦目录设定了 SBIT 权限,则用户在此目录下创建的文件或目录,就只有文件所有者、上级目录所有者和 root 才有权利修改或删除该文件或目录。即当B用户以目录所属组或其他人的身份进入 用户A 目录时,如果B对该目录有 w 权限,则表示对于 A 目录中任何用户创建的文件或子目录,A都可以进行修改甚至删除等操作。但是,如果 A 目录设定有 SBIT 权限,那B用户只能操作自己创建的文件或目录,而无法修改甚至删除其他用户创建的文件或目录。

# ll -d /tmp_test
drwxrwxrw
t. 4 root root 4096 Mar 20 06:17 /tmp_test

setuid/setgid类似,如果没有执行权限,即为“T”

Linux类似,QNX也可以修改目录或文件的权限、所有者,如表2所示。

2 修改权限命令

To:

Use:

为文件或目录指定权限

chmod

为文件或目录改变ownergroup(可选)

chown

为文件或目录改变group

chgrp

2. umask限制

Linux类似,QNX使用umask来给所有新建的文件和目录赋予初始权限

文件/目录的初始权限 = 文件/目录的最大默认权限 - umask权限
目录最大默认权限是 666,即 rw-rw-rw-,当umask设为022,即"-----w--w-"。把两个字母权限相减,得到 (-rw-rw-rw-) - (-----w--w-) = (-rw-r--r--),则表示创建目录是初始权限是644,即创建文件时只有owner拥有w权限,同组其他用户或Other用户都没有。注意这里的减法其本质是掩盖,即掩盖最大默认权限和umask权限中公共部分。通过把公共部分遮盖,剩余部分保留,最终剩下的才是赋予文件或目录的初始权限。
站在网络安全的角度,我们应基于最小权限,设置合理的umask。如图1所示,可通过更改/etc/profile中的umask设置。

青骥原创 l 谈谈QNX安全之文件权限

1 umask设置

例如如果想删除其他用户的读写权限,可将umask设为006,即:

umask 006

3. 限制chown权限

默认情况下,与资源具有相同UID的客户端可将资源上的UIDGID更改为系统上的任意其他UIDGID,很明显这不是一个明智的选择,特别是对于挂载点上的公开文件。为了避免这种情况,我们应该在挂载属性中设置IOFUNC_PC_CHOWN_RESTRICTED 标志。
例如,以下代码设置 IOFUNC_PC_CHOWN_RESTRICTED

iofunc_mount_t mattr;

iofunc_mount_init(&mattr, sizeof(mattr));

mattr.conf |= IOFUNC_PC_CHOWN_RESTRICTED;

io_attr.mount = &mattr;

4. POSIX权限设置

POSIX 权限是可以在资源上设置访问权限的机制。例如,POSIX 中文件的所有者可以为他们自己、组和访问该文件的other分配读取、写入和执行权限。POSIX 权限与进程 UID GID 值(包括补充 GID(称为 SGID 或组))结合使用,以实现对特定UID/GID的访问控制。
可以在目录上的 ls -l 命令的输出中查看 POSIX 权限,如图2所示。

青骥原创 l 谈谈QNX安全之文件权限

青骥原创 l 谈谈QNX安全之文件权限

2 POSIX权限示例

3解释了上面输出中与 POSIX 权限相关的一些字段(主要是第 13 4 列)。

青骥原创 l 谈谈QNX安全之文件权限

3 POSIX权限字段

同样地站在网络安全的角度,我们应基于最小权限设置关键文件的POSIX权限,特别是涉及登录密码、密钥、个人隐私、关键系统配置等文件。

5. ACL设置

可以将ACL,即访问控制列表,理解为动态POSIX。它提供一种更细粒度的补充访问控制,可以授予文件、目录和其他临时系统对象(如资源管理器路径),如授予第三方服务和应用程序访问系统资源的权限。这也是为什么我们需要设置ACL的原因。我们想象一下如果没有ACL,使用chmod设置文件权限,加入希望某人对文件具有特殊访问权限,可使用的途径有:

  • 将该人添加到所属组

  • 创建一个包含该人和文件所有者的补充组

  • 放宽“other”的权限

实际跟踪每个组中的用户可能会变得复杂,并且允许“other”额外的权限可能会使系统不太安全。ACL 扩展了文件权限,可以更好地控制谁可以访问什么。这在运行时使用 setfacl 实用程序或使用 acl_set_file() acl_set_fd() 以编程方式控制。 例如:

# ls -l ntp.conf

-rw-r--r-- 1 root root 0 Feb 06 15:14 ntp.conf

# setfacl -m user:99:rw- ntp.conf

# ls -l

total 0

-rw-rw-r--+ 1 root root 0 Feb 06 15:14 ntp.conf

请注意,此输出在权限末尾添加了 Extra 位(“+”),以指示存在额外的访问控制信息。Extra 位是单个字符,指定是否将备用访问方法应用于文件。当此字符为空格时,没有备用访问方法。要检查信息,请使用 getfacl。例如:

# getfacl ntp.conf

# file: ntp.conf

# owner: root

# group: root

user::rw-

user:99:rw-

group::r--

mask::rw-

other::r--

一般来说只有 root 或文件的所有者可以更改其 ACL
需要注意的是,ACL 支持通常是短暂的,也就是说当系统重新启动时,必须将 ACL 重新应用于使用它们的各种资源。目前,只有 Power-Safe 文件系统允许在主机上的文件系统构建时预先创建 ACLPower-Safe文件系统也是唯一在磁盘上保留 ACL 的文件系统。

6.小结

Linux系统类似,QNX提供了比较全面且复杂的权限控制策略,实际应用中我们需要基于TARA充分识别需要保护的资产和潜在的攻击面,并为其设置合理的权限。

END

原文始发于微信公众号(汽车信息安全):青骥原创 l 谈谈QNX安全之文件权限

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月21日14:34:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   青骥原创 l 谈谈QNX安全之文件权限https://cn-sec.com/archives/1620438.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息