https://securelist.com/cve-2019-0797-zero-day-vulnerability/89885/

前言

在2019年2月,卡巴实验室的自动漏洞防护(AEP)系统检测到尝试利用Microsoft Windows操作系统中的漏洞。对此事件的进一步分析发现win32k.sys中存在零日漏洞。卡巴实验室于2019年2月22日向Microsoft报告确认了该漏洞分配为CVE-2019-0797。微软刚刚发布了一个补丁,称卡巴斯基实验室研究人员Vasiliy Berdnikov和Boris Larin的发现:

这是卡巴斯基实验室在Windows中发现的第四个连续被利用的本地权限提升漏洞。例如CVE-2018-8589,卡巴实验室相信这一漏洞被一些威胁组织使用,包括但不限于FruityArmor和SandCat。

FruityArmor曾使用过0day,但SandCat是最近才发现的新APT。除了CVE-2019-0797和CHAINSHOT之外,SandCat还使用FinFisher/FinSpy框架。

卡巴斯基实验室产品通过以下技术主动检测到此漏洞:

1.端点产品的行为检测引擎和自动漏洞预防;

2.卡巴斯基反目标攻击平台(KATA)的高级沙盒和反恶意软件引擎。

卡巴斯基实验室判断此次攻击和相关攻击中使用的工件是:

HEUR:Exploit.Win32.Generic
HEUR:Trojan.Win32.Generic
PDM:Exploit.Win32.Generic

技术细节 - CVE-2019-0797

CVE-2019-0797是win32k驱动程序中存在的竞争条件,因为未记录的系统调用NtDCompositionDiscardFrame和NtDCompositionDestroyConnection之间缺乏正确的同步。在初始分析期间,在最新系统上制作的屏幕截图中,可以观察到易受攻击的代码:

NtDCompositionDiscardFrame系统调用的片段(Windows 8.1)

在这个带有NtDCompositionDiscardFrame系统调用的简化逻辑的屏幕截图中,可以看到此代码获取与结构DirectComposition :: CConnection中的帧操作相关的锁,并尝试查找与给定id对应的帧,并最终调用免费的。可以在第二个屏幕截图中观察到此问题:

NtDCompositionDestroyConnection系统调用内部函数的片段(Windows 8.1)

在此屏幕截图中,使用从NtDCompositionDestroyConnection系统调用中调用的函数DiscardAllCompositionFrames的简化逻辑,您可以看到它没有获取必要的锁定并调用将释放所有已分配帧的函数DiscardAllCompositionFrames。问题在于,当系统调用NtDCompositionDiscardFrame和NtDCompositionDestroyConnection同时执行时,函数DiscardAllCompositionFrames可以在NtDCompositionDiscardFrame系统调用已经在寻找要释放或已经找到它的帧时执行。这种情况导致免费使用后的情况。

有趣的是,这是除了CVE-2018-8589和CVE-2018-8611之外,同一组使用的第三种竞争条件零日攻击。

如果模块文件名包含子字符串“chrome.exe”,则停止执行

在野外发现的漏洞攻击目标是从Windows 8到Windows 10 build 15063的64位操作系统。所有这些操作系统的开发过程没有太大差别,并使用堆喷涂调色板和加速器表执行使用GdiSharedHandleTable和gSharedInfo泄漏其内核地址。在利用Windows 10 build 14393和更高的窗口时使用而不是调色板。除此之外,该漏洞会检查它是否从谷歌浏览器运行并停止执行,因为漏洞CVE-2019-0797无法在沙箱中被利用。

CVE-2019-0797漏洞:Windows操作系统中的新零日在攻击中被利用的更多相关文章

  1. 太恐怖了!黑客正在GPON路由器中利用新的零日漏洞

    即使在意识到针对GPONWi-Fi路由器的各种主动网络攻击之后,如果您还没有将其从互联网上带走,那么请小心,因为一个新的僵尸网络已加入GPON组织,该组织正在利用未公开的零日漏洞(零时差攻击). 来自 ...

  2. ASP.NET 5与MVC 6中的新特性

    差点忘了提一句,MVC 6中默认的渲染引擎Razor也将得到更新,以支持C# 6中的新语法.而Razor中的新特性还不只这一点. 在某些情况下,直接在Web页面中嵌入某些JSON数据的方式可能比向服务 ...

  3. 在Windows操作系统中,如何终止占有的8080端口的tomcat进程

    在Windows操作系统中,我们在启动一个tomcat服务器时,经常会发现8080端口已经被占用的错误,而我们又不知道如何停止这个tomcat服务器. 本文将通过命令来强行终止这个已经运行的tomca ...

  4. WINDOWS操作系统中可以允许最大的线程数(线程栈预留1M空间)(56篇Windows博客值得一看)

    WINDOWS操作系统中可以允许最大的线程数 默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能完全拿来 ...

  5. windows操作系统中安装、启动和卸载memcached

    今天总结一下如何在Windows操作系统中安装.启动和卸载memcached:下载地址: http://download.csdn.net/download/wangshuxuncom/8249501 ...

  6. Ant—怎样Windows操作系统中搭建Apache Ant环境

    介绍一下怎样在Windows操作系统中搭建Apache Ant环境: 一.下载Apache Ant压缩文件:http://download.csdn.net/detail/wangshuxuncom/ ...

  7. 在windows操作系统中,查询端口占用和清除端口占用的程序

    一.在windows操作系统中,查询端口占用和清除端口占用的程序 提升权限后用:netstat -b或用 1.查询端口占用的进程ID 点击"开始"-->"运行&qu ...

  8. Git—怎样Windows操作系统中安装Git

    介绍一下怎样在Windows操作系统中安装Git: 一.下载Git安装压缩文件:http://download.csdn.net/detail/wangshuxuncom/8035045 二.解压该压 ...

  9. [转]在 Windows 操作系统中的已知安全标识符(Sid security identifiers)

    安全标识符 (SID) 是用于标识安全主体或安全组在 Windows 操作系统中的可变长度的唯一值.常用 Sid 的 Sid 标识普通用户的一组或通用组.跨所有操作系统,它们的值保持不变. 此信息可用 ...

随机推荐

  1. Mysql查询数据库 整理

    一.       查询数据: 查询所有列:SELECT * FROM student; 查询指定列:SELECT id,NAME,gender FROM student; 格式:select字段名, ...

  2. oracle数据泵导入导出命令

    1.在PL/SQL的界面,找到Directories文件夹,找到目录文件的路径 2.通过SSH进入服务器 找到相应的路径 cd /u01/oracle/dpdir 输入指令 df -h   查看资源使 ...

  3. 【leetcode-69】 x 的平方根

    (主要是越界问题) 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 ...

  4. 转载 IEnumerable和IEnumerator 详解

    初学C#的时候,老是被IEnumerable.IEnumerator.ICollection等这样的接口弄的糊里糊涂,我觉得有必要切底的弄清楚IEnumerable和IEnumerator的本质. 下 ...

  5. 015、调试Dockerfile(2019-01-04 周五)

    参考https://www.cnblogs.com/CloudMan6/p/6853329.html   Dockerfile构建镜像的过程   1.从base镜像运行一个容器 2.执行一条指令,对容 ...

  6. Consul 域名服务

    =============================Web请求的全过程(包含DNS) =============================完整过程参考 https://blog.csdn. ...

  7. 魔改版BBR

    魔改版bbr加速: wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSp ...

  8. content-type: application/json没有设置导致的500错误

    $.ajax({ url:'http://xxx.test', type: 'Post', data: JSON.stringify(model), dataType: 'json', content ...

  9. 01.Redis 初体验

    0. Redis安装 官网下载Redis 解压缩 make make install 安装后的执行命令被保存在了/usr/local/bin目录下 1. 配置文件:redis.conf daemoni ...

  10. [译]Domain Events Pattern Example

    原文 完整源码 本文展示的是一个关于网上调查的项目.想象下,当用户完成了一个调查,我们想通知所有人调查已经结束,分配一个人去检查调用问卷. 领域对象 public class Survey { pub ...