mmap_min_addr

Overview

mmap_min_addr is a kernel tunable that specifies the minimum virtual address that a process is allowed to mmap. Allowing processes to map low values increases the security implications of a class of defects known as "kernel NULL pointer dereference" defects. If a malicious local user finds a way to trigger one of these NULL pointer defects, they can exploit it to cause system hangs, crashes, or otherwise make parts of the system unusable. If this user is also able to map low portions of virtual memory, they can often further exploit this issue to gain increased privileges.

The downside to preventing applications from mmap'ing low virtual memory addresses is that certain applications depend on this functionality. dosemu, qemu and wine are three such applications that exist in Debian. See the application specific information below.

Current status

Starting with Debian 5.0.4, the 2.6.26 kernel is configured with a default mmap_min_addr of '4096'. If you find this prevents you from running certain applications, you can remove this restriction using the following commands:

# echo "vm.mmap_min_addr = 0" > /etc/sysctl.d/mmap_min_addr.conf
# /etc/init.d/procps restart

If you only need to run the affected application infrequently, you can temporarily decrease the value using the following command:

# sysctl -w vm.mmap_min_addr="0"

You can then reactivate the restriction by running the following command:

# sysctl -w vm.mmap_min_addr="4096"

In Debian 5.0.0 through 5.0.3 inclusive, the 2.6.26 kernel is shipped with a default mmap_min_addr of '0'. This means that the Debian system, by default, is susceptible to these NULL-pointer privilege escalation techniques. It is recommended that you increase the value of mmap_min_addr on your system by upgrading to 5.0.4, see the update announcement.

Application specific information

bitbake

From the OpenEmbedded User Manual: bitbake might complain that there is a problem with the setting in /proc/sys/vm/mmap_min_addr, which needs to be set to zero.

dosemu

dosemu, as shipped in Debian 5.0, must run with vm.mmap_min_addr set to 0 or be executed as root. This limitation has been removed upstream (505247), so dosemu should work with an increased mmap_min_addr starting with Debian squeeze.

qemu

qemu, as shipped in Debian 5.0, requires low virtual memory mmaps. mmap_min_addr must be set to 0 to run qemu as a non-root user. This limitation has been removed upstream, so qemu should work with an increased mmap_min_addr starting with Debian squeeze.

wine

Only Win16 binaries require the ability to mmap low addresses, Win32 binaries do not. It is recommended that you test your application with the increase mmap_min_addr setting. If the application starts up without issue, then you should not need to remove the mmap_min_addr restriction.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值