Linux 非特权进程是否可以恶意使用mlock()来锁定系统?

Linux 非特权进程是否可以恶意使用mlock()来锁定系统?,linux,ubuntu,memory-management,Linux,Ubuntu,Memory Management,我刚刚学习了函数。我知道它允许您将程序内存锁定到RAM中(允许更改物理地址,但不允许移出内存)。我已经读到较新的Linux内核版本有一个mlock限制(ulimit-l),但这只适用于非特权进程。如果这是每个进程的限制,那么一个非特权进程是否可以通过fork()-ing产生大量进程,并让每个调用mlock(),直到所有内存都被锁定,并且操作系统因大量交换或OOM killer调用而慢到爬行状态?攻击者可能会对此造成问题,但实际问题不会比它们可能造成的问题更多 在我的系统上,默认限制为2MB左右。

我刚刚学习了函数。我知道它允许您将程序内存锁定到RAM中(允许更改物理地址,但不允许移出内存)。我已经读到较新的Linux内核版本有一个mlock限制(
ulimit-l
),但这只适用于非特权进程。如果这是每个进程的限制,那么一个非特权进程是否可以通过
fork()
-ing产生大量进程,并让每个调用
mlock()
,直到所有内存都被锁定,并且操作系统因大量交换或
OOM killer
调用而慢到爬行状态?

攻击者可能会对此造成问题,但实际问题不会比它们可能造成的问题更多

在我的系统上,默认限制为2MB左右。这意味着一个典型的进程无法将超过2MB的数据锁定到内存中。请注意,这只是普通内存,不会被调出;它不是一个独立的、特殊的资源

恶意进程可能会产生许多其他进程来使用更多锁定的内存,但由于一个进程通常需要超过2MB的内存才能运行,因此它们并没有通过锁定来更有效地耗尽内存;事实上,启动一个新进程本身在使用内存方面比锁定内存更有效。诚然,一个进程可以简单地进行分叉、锁定内存和休眠,在这种情况下,由于写时复制,它的其他页面可能会被共享,但它也可能分配相当大的内存块,并导致更多的问题,事实上,它通常有这样做的权限,因为许多进程需要大量的内存

所以,是的,攻击者可能会使用这种技术来引发问题,但因为有许多更简单、更有效的方法来耗尽内存或引发其他问题,所以这似乎是一种愚蠢的方式。一、 首先,我并不担心这是一个实际的安全问题