再探CVE-2016-0728

本文深入探讨了CVE-2016-0728,一个Linux平台上的UAF漏洞,由keyrings组件的引用计数问题引起。当引用计数溢出时,会导致对象误释放,进而可能实现内核代码执行。利用过程包括使引用计数溢出、释放keyring对象、覆盖已释放对象以及通过keyctl API控制执行代码。然而,由于Android 5.0设备运行在不受影响的内核版本及SELinux策略限制,此漏洞在这些设备上无法利用。
摘要由CSDN通过智能技术生成

 

0x0  漏洞信息

 

https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-0728

 

0x1  漏洞描述

cve-2016-0728是一个linux平台上的UAF漏洞.漏洞主要的原因是由于keyrings组件当中的引用计数问题导致的.它使用一个32位的无符号整数做引用计数,但是在计数器出现溢出的时候没有进行合理的处理.当对象的引用计数达到最大时会变成0,因此释放对象的内存空间.而此时程序还保留对引用对象的引用,所以形成了UAF漏洞.

 

0x2  代码分析

long join_session_keyring(const char *name)
{
	const struct cred *old;
	struct cred *new;
	struct key *keyring;
	long ret, serial;

	new = prepare_creds();
	if (!new)
		return -ENOMEM;
	old = current_cred();

	/* if no name is provided, install an anonymous keyring */
	if (!name) {
		ret = install_session_keyring_to_cred(new, NULL);
		if (ret < 0)
			goto error;

		serial = new->session_keyring->serial;
		ret = commit_creds(new);
		if (ret == 0)
			ret = serial;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值