圖片來源: 

GitHub

廣泛用於JavaScript應用程式產生PDF文件的函式庫jsPDF,近日被揭露存在一項重大資安漏洞,主要影響在伺服器端使用jsPDF產生PDF文件的應用情境。攻擊者可能透過不當的檔案載入機制,未經授權讀取並外洩伺服器本機檔案系統中的敏感資料。該漏洞已被編號為CVE-2025-68428,CVSS風險分數高達9.2。

這項漏洞屬於本機檔案包含(Local File Inclusion)與路徑遍歷(Path Traversal)問題,影響jsPDF 4.0.0之前的版本。當應用程式在Node.js環境中,將未經妥善驗證的檔案路徑作為參數,傳入jsPDF的loadFile方法(method)時,攻擊者可能讀取Node.js處理程序權限範圍內可存取的本機檔案,並將檔案內容嵌入到生成的PDF檔案中。

除了loadFile之外,jsPDF的addImage、html與addFont等方法,同樣可能在底層呼叫該檔案載入機制,因此也受到這項漏洞影響。不過,根據官方說明,該問題僅影響jsPDF的Node.js版本,包括dist/jspdf.node.js與dist/jspdf.node.min.js,瀏覽器端版本則不在影響範圍內。

jsPDF是一套在npm生態系中被大量採用的套件,每週下載次數超過350萬次。資安研究人員指出,若jsPDF部署於伺服器端環境,且使用者輸入可直接影響上述受影響方法的檔案路徑參數,便可能導致設定檔、環境變數、憑證資訊等敏感資料外洩。

針對這項漏洞,jsPDF團隊已在4.0.0版本中完成修補,預設限制對檔案系統的存取,並改為依賴Node.js的權限模式(permission mode)進行控管。官方也指出,在較新的Node.js版本中,可於正式環境啟用--permission旗標,以降低遭到濫用的風險。該功能自Node.js v20.0.0起以實驗性方式提供,並自v22.13.0、v23.5.0與v24.0.0起趨於穩定。

不過,資安研究人員也提醒,啟用--permission旗標將影響整個Node.js處理程序,而非僅限於jsPDF本身,實際部署時需留意對既有應用行為的影響。此外,若在--allow-fs-read設定中給予過於寬鬆的檔案系統讀取權限,將可能削弱此次修補的防護效果。

對於仍使用舊版Node.js的環境,jsPDF團隊建議在應用程式處理使用者輸入時,特別留意檔案路徑的來源與合法性,避免將未經檢查的路徑直接交由jsPDF處理,以降低潛在風險。

熱門新聞

Advertisement