Linux 依靠/proc/[pid]/status检查另一个进程';身份
最近,我发现需要检查我的服务通过IPC进行交互的进程是否具有足够的特权来执行某些事务。我所掌握的关于这个过程的唯一信息是它的pid,我确信这个pid不是假的(IPC是可靠的,足以保证这一点)。我需要检查流程是否有特定的uid或pid,或者是否是某个补充组的成员,然后才允许事务。为此,我读取进程的/proc/[pid]/status条目,解析Uid/Gid/Groups行并相应地执行操作 我的问题是,这种检查进程标识的方法是否足够可靠,如果不可靠,它可能在哪里失败?我担心流氓进程可能会以某种方式伪造我的服务对其/proc/[pid]/状态的看法或诸如此类的情况。我是不是太偏执了,还是真的有什么需要考虑的Linux 依靠/proc/[pid]/status检查另一个进程';身份,linux,security,ipc,pid,uid,Linux,Security,Ipc,Pid,Uid,最近,我发现需要检查我的服务通过IPC进行交互的进程是否具有足够的特权来执行某些事务。我所掌握的关于这个过程的唯一信息是它的pid,我确信这个pid不是假的(IPC是可靠的,足以保证这一点)。我需要检查流程是否有特定的uid或pid,或者是否是某个补充组的成员,然后才允许事务。为此,我读取进程的/proc/[pid]/status条目,解析Uid/Gid/Groups行并相应地执行操作 我的问题是,这种检查进程标识的方法是否足够可靠,如果不可靠,它可能在哪里失败?我担心流氓进程可能会以某种方式伪
注意:我之所以选择这种方法,是因为我在Linux中找不到另一种方法来获取另一个进程的标识。如果有人能告诉我这一点,我也会很高兴的。一种古老但仍然很好的攻击是找到一种方法,通过信号或某种错误迫使目标进程退出。然后通过fork向PID空间快速注入新进程,直到攻击者获得正确的PID 每次检查/proc/pid/status确实会使这变得更困难,但这仍然是模糊可能的 成功的攻击看起来像: 服务器1234正在侦听
客户端检查1234具有服务器UID->True
恶意杀死服务器1234,启动32000个新进程
客户端使用恶意1234执行IPC,但会对每个事务进行检查,IPC机制保证,如果原始进程在事务完成之前死亡,则事务将失败。换句话说,劫持交易不是一种选择。