vik*_*sit 4 security operating-system shared-memory
我想知道 - 除了授权程序之外,是否有任何已知技术可以控制对共享内存对象的访问?
例如,假设我创建了一个用于程序P的共享内存段,由Q访问,并使其成为读写.我可以使用Q访问它,因为我已经给它(Q)执行此操作所需的权限(作为具有组的特定用户运行等).
但是,我猜测有些人可能会从程序R中访问这个共享内存 - 只需附加到它并修改它.要停止这一点,你可以让内存段只读 - 但现在程序R仍然可以读取内存中的内容.
我的问题是部分 -
有没有办法,
a)只允许Q访问共享内存?
b)确定读取是否由除Q以外的人完成 - 谁做了?[这甚至可能吗?]对于奖励积分,这可以跨平台完成吗?[可能没有,但没有伤害尝试:)]
在什么情况下流氓程序可以附加到共享内存?我认为一种方法是,如果用户能够利用OS漏洞并成为启动该程序的用户.还有其他人?
POSIX共享内存与文件具有相同的权限系统 - 如果运行,ipcs您将看到系统上共享内存段的权限:
$ ipcs -m
IPC status from <running system> as of Tue Jul 14 23:21:25 BST 2009
T ID KEY MODE OWNER GROUP
Shared Memory:
m 65536 0x07021999 --rw-r--r-- root wheel
m 65537 0x60022006 --rw-r--r-- root wheel
Run Code Online (Sandbox Code Playgroud)
在回答问题1a)时,您可以使用普通的UNIX权限系统仅允许来自特定用户和/或组的访问.这可以通过以下方式控制shmctl:
struct ipc_perm perms;
perms.uid = 100;
perms.giu = 200;
perms.mode = 0660; // Allow read/write only by
// uid '100' or members of group '200'
shmctl(shmid, IPC_SET, &perms);
Run Code Online (Sandbox Code Playgroud)
对于1b),我不认为共享内存访问存在任何审计接口.
关于第二个问题,任何以shm所有者/组运行的进程或以root身份运行的进程都将能够访问您的内存 - 这与访问任何其他资源没有什么不同.Root可以随时访问*ix系统上的任何内容; 因此,将用户升级为root的任何漏洞都将允许访问任何共享内存区域.
| 归档时间: |
|
| 查看次数: |
2764 次 |
| 最近记录: |