PIME 2.0.0-beta4 緊急安全性更新釋出 (CVE 漏洞修復與執行環境升級)
⚠️ 重要安全性公告:
本次釋出為重大緊急安全性更新,強烈建議所有使用 PIME 2.0 測試版的使用者儘速升級。本次更新全面修復了內嵌 Python、Node.js 執行環境及第三方相依套件中已知的多項 CVE 安全性漏洞。
PIME 2.0.0-beta4 重點針對內嵌執行環境進行安全升級,修復潛在的遠端代碼執行與記憶體破壞漏洞,並同步整合近期在客戶端通訊架構、安裝程式穩定性與 Windows 11 ARM64 平台的全面改進。
主要更新項目
1. 🚨 緊急安全性更新:修復已知 CVE 漏洞與升級內嵌執行環境
- 升級內嵌 Python 至 3.15.1:
- 全面修復 Python 核心直譯器及隨附 OpenSSL / libcrypto 模組的各項已知 CVE 安全漏洞。
- 升級非同步網路框架
tornado至 6.6 最新穩定版。 - 優化 Python 模組搜索路徑與 site 模組載入機制,強化系統安全性。
- 升級內嵌 Node.js 至 v22.23.4 (22 LTS 安全性維護版):
- 修復 Node.js 執行環境核心的多項 CVE 安全性缺陷。
- (附註:Node.js 自第 23 版起已正式廢棄並停止提供 Windows 32-bit (x86) 二進位檔。為保持 PIME 架構對所有 Windows 系統的最大相容性,持續採用 22 LTS 最新安全更新版。)
- 前端與相依套件安全更新 (#980):
- 升級新酷音設定介面之 jQuery 至 1.14.2 及 Bootstrap 最新版本,移除過期無維護之相依模組。
2. ⚡ 客戶端 RPC 管道重構與非同步防崩潰機制 (#978, #979, #961, #956)
- 非同步連線與自癒重連 (
AsyncConnector):- 將輸入法啟動與後端服務連線握手作業移至背景非同步執行,徹底消除後端冷啟動時造成前端輸入卡頓或逾時斷線的問題。
- 具名管道 RAII 抽象化 (
RpcPipe) 與例外防護:- 全面改用 non-throwing JSON 解析與具名管道長度邊界檢查,防止惡意或毀損的 IPC 資料導致宿主程式崩潰。
3. 💻 完善 Windows 11 ARM64 原生支援與安裝程式改進 (#965, #967, #969)
- Windows 11 ARM64 原生支援:
- 新增 ARM64X 轉發 DLL,讓原生 ARM64 應用程式(如 Windows Terminal、Edge、Office)能順暢無縫載入 PIME。
- 安裝程式重構與乾淨升級:
- 移除舊版
md5dll與InstallOrSkip邏輯,改採原生安全覆寫與明確卸載流程,大幅提升安裝與覆蓋升級的可靠度。
- 移除舊版
4. 🛠️ 其他錯誤修復與穩定性強化
- 修復 Surrogate Pair 游標計算 (#938):解決含有 Emoji 或擴展區漢字時的游標位置偏移異常。
- 字型設定防護 (#939):修復候選視窗字型名稱未正確終止 null 字元的問題。
- 後端行程監護修復 (#943, #953, #963):優化 Launcher 佇列清理,避免後端意外終止時產生殘留請求積壓。
詳細變更記錄 (Commit Log)
- Update embedded Python to 3.15.1 and Node.js to 22.23.4 for CVE fixes (#984)
- Bump version to 2.0.0-beta4 (#984)
- Update jQuery, Bootstrap. Remove loadingoverlay (#980)
- Refactor PIMEClient with State enum, AsyncConnector, and auto-reconnection (#978)
- Refactor PIMEClient to use RpcPipe for pipe I/O and non-throwing JSON (#979)
- tests: compare the error reply of server.py as JSON (#970)
- installer: support Windows 11 ARM64 via ARM64X forwarder DLL (#965)
- installer: replace InstallOrSkip and md5dll with clean uninstall and direct File extraction (#969)
- Refactor installer logic into reusable macros and fix WOW64 registration (#967)
- fix(tsf): guard against unhandled json exceptions in PIMETextService (#961)
- fix(python): make module discovery robust and less hard-coded (#953)
- refactor(python): move TextServiceManager into Server and load from directory (#963)
- fix(PIMETextService): enforce maximum buffer size limit on IPC pipe reads (#956)
- fix(PIMETextService): manage icon cache at ImeModule level via IconCache (#941)
- fix(PIMELauncher): drop stale requests from dead clients on backend crash (#943)
- fix(PIMETextService): defer ImeModule initialization out of DllMain (#940)
- PIMETextService: add explicit null-termination after wcsncpy for candidate font name (#939)
- fix: map cursor across surrogate pairs (#938)
完整變更對比: v2.0.0-beta3...v2.0.0-beta4
What's Changed
- fix: map cursor across surrogate pairs (#938) by @dannyward630 in #944
- fix(PIMETextService): add explicit null-termination after wcsncpy for candidate font name (#939) by @PCMan in #947
- fix(PIMETextService): defer ImeModule initialization out of DllMain (#940) by @PCMan in #948
- fix(PIMELauncher): drop stale requests from dead clients on backend crash (#943) by @PCMan in #950
- fix(PIMETextService): manage icon cache at ImeModule level via IconCache (#941) by @PCMan in #949
- fix(PIMETextService): unwrap ComPtr for icon cache and fail-fast in build.bat by @PCMan in #958
- fix(PIMETextService): expose typed imeModule and textService accessors by @PCMan in #959
- fix(PIMETextService): enforce maximum buffer size limit on IPC pipe reads (#956) by @PCMan in #957
- refactor(python): move TextServiceManager into Server and load from directory by @PCMan in #963
- fix(python): make module discovery robust and less hard-coded (#953) by @PCMan in #954
- fix(tsf): guard against unhandled json exceptions in PIMETextService (#961) by @PCMan in #964
- Refactor installer logic into reusable macros and fix WOW64 registration by @PCMan in #967
- installer: replace InstallOrSkip and md5dll with clean uninstall and direct File extraction by @PCMan in #969
- installer: support Windows 11 ARM64 via ARM64X forwarder DLL by @PCMan in #965
- tests: compare the error reply of server.py as JSON by @ilwu in #970
- Refactor PIMEClient to use RpcPipe RAII abstraction by @PCMan in #979
- Add AsyncConnector and non-blocking background connection by @PCMan in #978
- Update jQuery, Bootstrap. Remove loadingoverlay by @ottokang in #980
- Update embedded Python to 3.15.1 and Node.js to 22.23.4 for CVE fixes by @PCMan in #984
New Contributors
- @dannyward630 made their first contribution in #944
- @ilwu made their first contribution in #970
Full Changelog: v2.0.0-beta3...v2.0.0-beta4