gpt4 book ai didi

security - 检测和控制未经授权的共享内存读取

转载 作者:行者123 更新时间:2023-12-04 17:28:57 25 4
gpt4 key购买 nike

我想知道 - 除了授权程序之外,是否有任何已知的技术可以控制从任何地方对共享内存对象的访问?

例如,假设我创建了一个共享内存段供程序 P 使用,供 Q 访问,然后我将其设为读写。我可以使用 Q 访问它,因为我已授予它 (Q) 所需的权限(以具有组的特定用户身份运行等)。

但是,我猜在某些情况下,有人可能会从程序 R 访问这个共享内存——只需附加到它并修改它。为了阻止这种情况,您可以将内存段设为只读 - 但现在程序 R 仍然可以读取内存中的内容。

我的问题是部分 -

  • 有没有办法,

    a) 只允许 Q 访问共享内存?

    b) 计算阅读是否由 Q 以外的其他人完成 - 以及是谁做的? [这甚至可能吗?] 对于奖励积分,这可以跨平台完成吗? [可能不是,但尝试没有害处:)]
  • 在什么情况下流氓程序可以附加到共享内存?我认为一种方法是用户是否能够利用操作系统漏洞并成为启动程序的用户。还有其他人吗?
  • 最佳答案

    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
    在回答问题 1a) 时,您可以使用正常的 UNIX 权限系统来仅允许来自某个用户和/或组的访问。这可以使用 shmctl 进行控制:
    struct ipc_perm perms;
    perms.uid = 100;
    perms.gid = 200;
    perms.mode = 0660; // Allow read/write only by
    // uid '100' or members of group '200'
    shmctl(shmid, IPC_SET, &perms);
    对于 1b),我认为不存在任何用于共享内存访问的审核接口(interface)。
    关于您的第二个问题,任何以 shm 所有者/组身份运行或以 root 身份运行的进程都可以访问您的内存——这与访问任何其他资源没有什么不同。 Root 始终可以访问 *ix 系统上的任何内容;因此,任何将用户升级为 root 的漏洞都将允许访问任何共享内存区域。

    关于security - 检测和控制未经授权的共享内存读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1128368/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com