天府杯 2023”Chrome WebAudio 错误条目中的释放后使用漏洞 (CVE-2023-5996 [1497859])

admin 2024年2月13日22:29:43评论18 views字数 1747阅读5分49秒阅读模式
天府杯 2023”Chrome WebAudio 错误条目中的释放后使用漏洞 (CVE-2023-5996 [1497859])

漏洞描述:

在Google Chrome中,发现了一个影响渲染器进程的漏洞,主要涉及到AudioContext的功能。在正常情况下,AudioContext在没有用户交互的情况下不会进行音频渲染,相应的音频渲染线程也会保持非活动状态。然而,一旦触发了此漏洞,将强制在没有用户交互的情况下启用音频渲染进程。负责此行为的关键代码位于RealtimeAudioDestinationHandler类中。

void RealtimeAudioDestinationHandler::SetChannelCount(    unsigned channel_count,    ExceptionState& exception_state) {  ...  uint32_t old_channel_count = ChannelCount();  AudioHandler::SetChannelCount(channel_count, exception_state);

  // 停止、重新创建并启动目标以应用新的通道数。  if (ChannelCount() != old_channel_count &&  !exception_state.HadException()) {    StopPlatformDestination();    CreatePlatformDestination();    StartPlatformDestination();  }}

channel_count不等于old_channel_count时,它会调用StartPlatformDestination

void RealtimeAudioDestinationHandler::StartPlatformDestination() {  ...  if (platform_destination_->IsPlaying()) {    return;  }

  // 启动音频渲染线程  // ...}

此函数是启动音频渲染线程的关键。当调用时,即使没有用户交互,也会强制处于关闭状态的AudioContext打开渲染线程。然而,漏洞的影响不仅仅是启用RCE。它还允许先前调用了close方法的AudioContext重新启动音频渲染线程。通过按照特定的步骤序列,可以构建出一个Use-After-Free(UAF)条件。

利用步骤:

  1. 创建一个名为ctx的AudioContext。
  2. 创建一个名为node的AudioNode。
  3. 执行node.connect(ctx.destination)
  4. 调用ctx.close()
  5. 执行node = null并触发垃圾回收(GC)。此时,node及其对应的AudioHandler都将被释放。
  6. 再次触发漏洞以重新启动音频渲染线程。由于node已被释放,这将导致UAF。

漏洞利用:

利用基于AudioHandler包含了AudioNodeInput或AudioNodeOutput对象,以及AudioBus和AudioChannel对象的事实。一旦释放了AudioHandler,这些对象也会被释放。对于利用最重要的对象是AudioBus和AudioChannel,AudioBus负责对AudioChannel进行分配和管理,而AudioChannel则负责对音频缓冲区进行分配和读写。在释放AudioHandler对象后,使用一个长度较小的AudioBus占用原始的AudioBus,如果占用成功,就可以使用漏洞重新启动音频渲染线程。由于占用的AudioBus长度较小,之后将触发越界读取,只要在隔离堆中提前进行布局,就能读取出某些对象的虚表地址和一些可控制的堆地址。

一旦获得虚表地址和堆地址,就能再次触发漏洞直接占用AudioHandler对象,并伪造该对象以实现任意的虚表调用。通过虚表调用链,将shellcode写入RWX内存区域,最终跳转执行shellcode。

POC-HTML:

https://issues.chromium.org/action/issues/40075943/attachments/52912862?download=true

原文始发于微信公众号(Ots安全):天府杯 2023”Chrome WebAudio 错误条目中的释放后使用漏洞 (CVE-2023-5996 [1497859])

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月13日22:29:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   天府杯 2023”Chrome WebAudio 错误条目中的释放后使用漏洞 (CVE-2023-5996 [1497859])http://cn-sec.com/archives/2491080.html

发表评论

匿名网友 填写信息