1. 极安网首页
  2. 网络安全技术

苹果iOS信息泄露漏洞分析(CVE-2020-9964)

苹果iOS信息泄露漏洞分析(CVE-2020-9964)-极安网

2020年09月17日凌晨,苹果终于给所有用户推送了iOS14正式版,并同时发布了iOS 14.0的安全内容更新。阅读该公告后,你将会看到列表中的一个漏洞CVE-2020-9964,这是一个存在于IOSurfaceAccelerator中的安全漏洞。苹果将这个漏洞描述为:“本地用户将能够利用该漏洞读取内核内存数据,这是一个内存初始化问题。”那么在这篇文章中,我们将跟大家介绍有关该漏洞的详细信息。

漏洞分析

IOSurfaceAcceleratorClient不仅是AppleM2ScalerCSCDriver IOService的用户客户端接口,也是为数不多的能够在App沙盒中打开的用户客户端。在这里,我们感兴趣的其实是这个用户客户端中的一个特定外部方法,也就是方法9-IOSurfaceAcceleratorClient::user_get_histogram。IOSurfaceAcceleratorClient在这个外部方法中使用了遗留的IOUserClient::getTargetAndMethodForIndex,方法9的IOExternalMethod描述符如下所示:

  1. {
  2.     IOSurfaceAcceleratorClient::user_get_histogram,
  3.     kIOUCStructIStructO,
  4.     0x8,
  5.     0x0
  6. }

在这里,我们可以看到user_get_histogram只会接收输入数据的八个字节,并且不会返回任何的输出数据,接下来我们一起来看一看这个方法的实现代码,下面给出的是带注释的伪代码:

  1. IOReturn IOSurfaceAcceleratorClient::user_get_histogram(IOSurfaceAcceleratorClient *thisvoid *input, uint64_t inputSize)
  2. {
  3. IOReturn result;
  4. if (this->calledFromKernel)
  5. {
  6. ...
  7. }
  8. else
  9. {
  10. IOMemoryDescriptor *memDesc = IOMemoryDescriptor::withAddressRange(*(mach_vm_address_t *)input, this->histogramSize, kIODirectionOutIn, this->task);
  11. if ( memDesc )
  12. {
  13. ret = memDesc->prepare(kIODirectionNone);
  14. if (ret)
  15. {
  16. ...
  17. }
  18. else
  19. {
  20. ret = AppleM2ScalerCSCDriver::get_histogram(this->fOwner, this, memDesc);
  21. memDesc->complete(kIODirectionNone);
  22. }
  23. memDesc->release();
  24. }
  25. else
  26. {
  27. ret = kIOReturnNoMemory;
  28. }
  29. }
  30. return ret;
  31. }

原创文章,作者: Admin ,转载请注明出处:https://secvery.com/2704.html