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


天府杯 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


感谢您抽出

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

.

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

.

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

来阅读本文

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

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

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

相关文章