Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 依靠/proc/[pid]/status检查另一个进程';身份_Linux_Security_Ipc_Pid_Uid - Fatal编程技术网

Linux 依靠/proc/[pid]/status检查另一个进程';身份

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行并相应地执行操作 我的问题是,这种检查进程标识的方法是否足够可靠,如果不可靠,它可能在哪里失败?我担心流氓进程可能会以某种方式伪

最近,我发现需要检查我的服务通过IPC进行交互的进程是否具有足够的特权来执行某些事务。我所掌握的关于这个过程的唯一信息是它的pid,我确信这个pid不是假的(IPC是可靠的,足以保证这一点)。我需要检查流程是否有特定的uid或pid,或者是否是某个补充组的成员,然后才允许事务。为此,我读取进程的/proc/[pid]/status条目,解析Uid/Gid/Groups行并相应地执行操作

我的问题是,这种检查进程标识的方法是否足够可靠,如果不可靠,它可能在哪里失败?我担心流氓进程可能会以某种方式伪造我的服务对其/proc/[pid]/状态的看法或诸如此类的情况。我是不是太偏执了,还是真的有什么需要考虑的


注意:我之所以选择这种方法,是因为我在Linux中找不到另一种方法来获取另一个进程的标识。如果有人能告诉我这一点,我也会很高兴的。

一种古老但仍然很好的攻击是找到一种方法,通过信号或某种错误迫使目标进程退出。然后通过fork向PID空间快速注入新进程,直到攻击者获得正确的PID

每次检查/proc/pid/status确实会使这变得更困难,但这仍然是模糊可能的

成功的攻击看起来像:

服务器1234正在侦听
客户端检查1234具有服务器UID->True
恶意杀死服务器1234,启动32000个新进程

客户端使用恶意1234执行IPC,但会对每个事务进行检查,IPC机制保证,如果原始进程在事务完成之前死亡,则事务将失败。换句话说,劫持交易不是一种选择。