## 使用 CodeQL 进行 JavaScriptCore 漏洞挖掘:总结
本文详细介绍了使用代码分析工具 CodeQL 探索和发现 JavaScriptCore (JSC) 漏洞的过程。JSC 是 Safari 和其他 macOS 应用程序的 JavaScript 引擎。作者最初对浏览器漏洞利用感到畏惧,但利用 CodeQL 调查了 JSC 的内部结构,并发现了潜在的安全漏洞。
JSC 通过以下阶段执行 JavaScript 代码:词法分析、语法分析,以及通过 LLInt 和 JIT 编译进行解释(编译层级越高,性能越好)。一个关键的关注点是**错误的副作用建模**——JSC 错误地假设某个操作*不会*导致意外后果的情况,这可能导致远程代码执行 (RCE)。
作者开发了一个自定义的 CodeQL 查询来识别这些漏洞,重点关注在应该调用 `clobberWorld`(一个指示潜在副作用的函数)时未调用的操作。这导致重新发现了已修补的漏洞 (CVE-2018-4233),该漏洞与 `InstanceOf` 相关,并识别了 `operationCreateThis` 中的*第二个*漏洞 (CVE-2018-4233),该漏洞曾在 2018 年 Pwn2Own 中被利用。
成功表明 CodeQL 在复杂的漏洞研究中的有效性,但最大的挑战在于深入理解目标代码库——在这种情况下,是 JSC 错综复杂的工作原理。作者强调了有组织的查询开发的重要性,并提供了进一步探索 CodeQL 和 JSC 的资源。
## zmx:终端会话持久化
zmx 是一个轻量级工具,用于持久化终端会话,为 tmux 等功能齐全的终端复用器提供替代方案。它允许您分离并重新连接到 shell 会话,而不会丢失其状态——包括滚动和输出——*仅*关注持久性,并将窗口管理委托给您操作系统的窗口管理器。
**主要特性:**
* **持久性:** 即使断开连接后也能保持 shell 会话的存活。
* **连接/分离:** 无缝重新连接到现有会话。
* **原生特性:** 利用您的终端模拟器的原生滚动和复制/粘贴功能。
* **SSH 集成:** 与 SSH 配合良好,通过 SSH 配置和 autossh 等工具实现持久的远程会话。
* **简单命令:** `zmx attach <name>`, `zmx detach`, `zmx list`, `zmx kill`。
zmx 利用 `libghostty-vt` 来恢复终端状态,确保流畅的重新连接体验。它通过 Unix 套接字进行通信,并将活动记录到 `/tmp/zmx`。目前,配置选项有限,优先考虑可维护性。
项目和源代码地址:[https://github.com/shell-pool/shpool](https://github.com/shell-pool/shpool)