怎样悄悄了解另一方部位-简单直接合理的mmap与remap_pfn_range
0x00 情况
大家都知道,当代电脑操作系统为了更好地安全性和综合硬件配置的缘故,选用了一套比较复杂的管理 *** 运行内存的 *** ,并从而造成了物理地址,逻辑性详细地址,虚拟注册地址等定义。这些內容不负累述,简易而言如下图
先查看后付款的黑客kernel与客户态过程有着不一样的逻辑性详细地址室内空间,kernel所属的网页页面有着更高的管理权限,用户权限是不能随便变更的,不然简直能够改正自身的管理权限,肆无忌惮。
但是这也不是彻底密不通风的墙,核心出示了多种多样方式供客户态沟通交流数据信息。在其中假如必须在短期内内互换很多数据信息,而且有即时的规定,linux kernel 出示了一种简易先查看后付款的黑客合理的 *** :共享内存——mmap syscall。
基本原理也比较简单,投射给kernel的物理学网页页面也一样投射一份给客户过程,而且改动掉管理权限特性。那样的话所属不一样详细地址室内空间的二块运行内存事实上相匹配的是同一个物理学网页页面,一方改动数据信息,另一方也可以即时见到转变。
一般的应用领域是在内嵌式机器设备的外先查看后付款的黑客设中,例如要执行更新LED显示器,执行纪录很多感应器数据信息,等。这必须开发者在自身的驱动软件和客户编码中另外完成mmap的逻辑性才可以完成。
更先,在自定的驱动器文档时要出示那样的接口函数:
核心涵数remap_pfn_range()会依据要求投射网页页面进客户过程。
详细:http://www.makelinux.net/ldd3/chp-15-sect-2
接着在可执行程序中简易掉用这一自定的mmap涵数就可以创建起网页页面投射,做到共享内存的目地了。
0x01 系统漏洞
越发简易功能强大的,就越非常容易出現难题。
涵数remap_pfn_range()并不会查验传到的主要参数,它会彻底依照要求的运行内存起止部位,所需长短,访问限制,去投射网页页面进客户态。全部这种查验都必须自定的驱动器中完成的mmap涵数去进行。
上边的截屏先查看后付款的黑客是官方网文本文档中得出的事例,自然不能用这一段编码立即采用商品中!
例如以下的这一商品完成:
https://github.com/rajamalw/galaxy-s5360/blob/master/modules/drivers/video/hantro/ldriver/kernel_26x/hx170dec.c
1
2
3
先查看后付款的黑客 4
5
6
7
8
9
10
11
12
13
14
15
先查看后付款的黑客 16
17
18
19
20
21
22
23
static int hx170dec_mmap(struct file *file, struct vm_area_struct *vma)
{
先查看后付款的黑客 if (vma->vm_end - vma->vm_start >
((DEC_IO_SIZE PAGE_SIZE - 1) & PAGE_MASK))
return 先查看后付款的黑客 -EINVAL;
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
if (remap_pfn_range(vma,
vma->vm_start,
先查看后付款的黑客 (DEC_IO_BASE >> PAGE_SHIFT),
vma->vm_end - vma->vm_start, vma->vm_page_prot)) 先查看后付款的黑客{
pr_err("%s(): remap_pfn_range() failed\ ", __FUNCTION__);
return -EINVAL;
&先查看后付款的黑客nbsp; }
return 0;
}
仅仅略微对申请办理的长短干了查验,别的的理所应当地坚信了客户编码。
导致的后果自负:
https://labs.mwrinfosecurity.com/system/assets/762/original/mwri_advisory_huawei_driver-root-exploit.pdf
先查看后付款的黑客 WooYun: MTK照相机核心驱动器缺点造成 的管理权限提高
WooYun: 华为新款Ascend P6手机上核心缺点导致当地管理权限提高
WooYun: 海思芯片服务平台视频解码器驱动器缺点及其权限管理不善
大家再看来一个比较好的事例:
https://github.com/nirodg/android_device_huawei_hwp7/blob/master/kernel/huawei/hwp7/drivers/hik3/g1dec/hx170dec.c
1
2
3
4
5
6
7
8
先查看后付款的黑客 9
10
11
12
13
14
15
16
17
18
19
20
先查看后付款的黑客 21
22
23
static int hx170dec_mmap(struct file *file, struct vm_area_struct *vma)
{
unsigned long start = vma->vm_start;先查看后付款的黑客
; unsigned long size = vma->vm_end - vma->vm_start;
int retval = 0;
unsigned long pyhs_start = 先查询后付款的黑客 vma->vm_pgoff << PAGE_SHIFT;
unsigned long pyhs_end = pyhs_start + size;
if(!(pyhs_start >= hisi_reserved_codec_phymem//not codec memory
&先查询后付款的黑客nbsp; && pyhs_end <= hisi_reserved_codec_phymem + HISI_MEM_CODEC_SIZE)
&& !(pyhs_start >= 先查询后付款的黑客 hx170dec_data.iobaseaddr//not io address
&& pyhs_end <= hx170dec_data.iobaseaddr + hx170dec_data.iosize)) {
&先查询后付款的黑客nbsp; printk(KERN_ERR "%s(%d) failed map:0x%lx-0x%lx\n", __FUNCTION__, __LINE__, pyhs_start, pyhs_end);
return -EFAULT;
}
先查询后付款的黑客
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
if 先查询后付款的黑客 (remap_pfn_range(vma, start, vma->vm_pgoff, size, vma->vm_page_prot))
retval = -ENOBUFS;
return retval;
先查询后付款的黑客 }
在调用remap_pfn_range函数之前做了诸多检查,限制了申请地址的起始和结束位置。
0x02 其他
android系统的整体安全架构是很繁复庞大的,上文中出现的漏洞如果发生在某个驱动中是不能单独被利用提权的。因为其他应用没有权限去访问这个有问题的驱动。但是如果这个驱动的访问权限再出错,比如:
那么连续的犯错下来,对于攻击者来说,就真的是666了。
0x03 结语
本文所讨论的安全问题在某厂商的设备中经常出现,并且时间跨度长达几年,希望贵厂能够提高安全意识,加班赶工的同时也注意下代码质量
如果您曾考虑投资谷歌的母公司Alphabet,可能会注意到它在两个不同的股票代码下交易:谷歌(NASDAQ:GOOG)和谷歌A(NASDAQ:GOOGL)。哪一只更适合买入?这。如何偷偷知道对方位置
黑客帮我盗回微信号不知道你有没掌握什么电脑专业知识先多学学黑客的一般术语本人也想学黑客技术的经常看看黑客们 *** 的动画在这里给你复制他人的劳动成果希望对你有。
如何偷偷知道对方位置做黑客的话,需要你有很高的电脑技术啊,你首先要去学计算机。
是布鲁斯威利斯的《终极密码战》吧 参考资料:http:/。
这个并非准确只是知道大约位置或者忽悠到准确位置。得到信息取决于对方暴露多少。比如目标是一个经常 *** 自恋的人。喜欢发自先查询后付款的黑客己的生活照这种就比较容易。可以看。如何偷偷知道对方位置
。朝阳区房屋登记发证大厅位于朝阳区石佛营东里128号院3号楼办公时间:办证:周一到周四:8:30--15:30周五8:30--12:00沈阳市房产局地址:辽宁省沈阳市沈河区大西路187号邮编:110014 *** :86-024-22973509、22916943传真:86-024-22973331沈阳市和平区房产局办公。
如何偷偷知道对方位置我去,黑客有限制吗?对黑客不太了解吧。学习黑客是一个过程的,比如说你要了解各种操作系统,比先查询后付款的黑客如说你要了解 *** 了解协议,比如说你要了解一下工具,比如说。
标签:
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。