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

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

Ots安全 2024-02-13 19:15

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

漏洞描述:

在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。

  1. 创建一个名为node
    的AudioNode。

  2. 执行node.connect(ctx.destination)

  3. 调用ctx.close()

  4. 执行node = null
    并触发垃圾回收(GC)。此时,node
    及其对应的AudioHandler
    都将被释放。

  5. 再次触发漏洞以重新启动音频渲染线程。由于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

感谢您抽出

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

.

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

.

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

来阅读本文

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

点它,分享点赞在看都在这里