什麼是JSON Injection攻擊?

JSON Injection 是一種網絡安全弱點(cybersecurity vulnerability),發生在應用程式處理用戶輸入時未能正確地驗證 或過濾資料,並將這些未經處理的輸入直接嵌入到 JSON(JavaScript Object Notation)資料中。

當攻擊者發現應用程序存在這種弱點時,他們可以通過精心構造的惡意輸入(crafting malicious input),利用這個弱點 來操控JSON 資料架構。這可能導致多種安全風險,例如資料篡改、訊息泄露,甚至跨站腳本(XSS)攻擊。

Bind Shell Attack | 資訊安全

JSON Injection 的攻擊步驟

  1. 輸入操縱

  2. 嵌入 JSON 資料

  3. 攻擊成功

JSON Injection 動態圖解

下方的網頁程式將幫助你了解 JSON Injection 的基本原理。在程式的左下方,有兩個按鈕,分別用於展示

  • 正常使用程式的部分(Normal)
  • 可能導致 JSON Injection 的部分(Hacking)
  • 每個按鈕都有三個步驟
    • 第一步,輸入資料到Input Box中。
    • 第二步是最關鍵的部分,因為 JSON Injection 通常在這個步驟發生: 此步驟會將輸入的資料轉換為 JSON 格式,因此我將速度調慢,特別是在 Hacking 部分,以便你能清楚看到變化。
    • 第三步則是產生問題的地方: 你可能會將這個 JSON 用於其他操作,如登錄、授權或執行程式等。
  1. 使用Button(Normal, Hacking)來操作此程式
  2. 若您覺得展示的速度太快,可重覆多看幾次或告訴我們,我們會將進行調整。

駭客如何利用 JSON Injection 入侵你的系統 ?

下方這部影片中,我們將深入探討 Json Injection 的攻擊方式,以及如何有效地防範這種常見的安全漏洞。 如果你是軟體開發者、網頁安全專家或對資訊安全感興趣的人,這部影片絕對不容錯過! 我們將分步介紹 Json Injection 的原理、攻擊案例,並提供實際的防禦技巧。你將學到如何辨識潛在的風險點, 並使用最佳實踐來保護你的應用程式。觀看這部影片後,你將具備更強的安全意識,並能有效應對 Json Injection 攻擊, 提升你應用程式的整體安全性。

如果你覺得這部影片對你有幫助,請到Youtube按讚、訂閱,並分享給有需要的朋友。 也歡迎Youtube留言分享你的意見或提問!

JSON Injection 防禦 | JSON Injection 保護 | Prevention of JSON Injection  | 源碼檢測 | 弱點掃描 | 資訊安全 | 翊天科技有限公司

JSON Injection 可能造成的衝擊

JSON Injection 是一種潛在風險極高的安全弱點,其影響可能非常嚴重,尤其是對於依賴 JSON 資料交換的應用程式而言。 這種攻擊可以導致多種安全問題,對企業和個人用戶都構成威脅。

  • 首先,JSON Injection 可能會導致資料篡改。攻擊者可以通過在用戶輸入中插入惡意代碼,操控應用程式的 JSON 資料結構。 例如,攻擊者可能修改服務器端的資料,篡改交易記錄,改變用戶帳戶訊息,甚至是竄改系統設定, 這些都可能對應用程式的完整性造成重大影響。
  • 其次,這種弱點還可能導致訊息洩露。攻擊者可以利用 JSON Injection 來搜尋原本應該受到保護的敏感資料, 如帳號、密碼、信用卡信息等。這不僅威脅到個人隱私,還可能導致企業的機密訊息洩露,造成經濟損失和法律風險。
  • 此外,JSON Injection 可能引發跨站腳本(XSS)攻擊,進一步擴大安全威脅。 透過在 JSON 資料中插入惡意 JavaScript 程式碼,攻擊者可以控制受害者的瀏覽器,進行惡意操作, 例如竊取 Cookie、冒充用戶身份、甚至在用戶不知情的情況下執行交易。
  • 總體來說,JSON Injection 所帶來的風險是多方面的,且影響深遠。為了保護應用程式及其用戶免受此類攻擊, 開發者必須嚴格檢查和過濾所有用戶輸入,並實施適當的安全措施。

JSON Injection 的防範或處理方式

防範和處理 JSON Injection 攻擊是確保應用程式安全性的關鍵。 由於這種弱點源於未經驗證或未經過濾的用戶輸入直接嵌入到 JSON 資料中,開發者必須採取多種措施來減少風險。

  • 首先,輸入驗證與過濾是防止 JSON Injection 的首要步驟。 開發者應確保所有來自使用者的輸入都經過嚴格的驗證和過濾,以排除潛在的惡意代碼。這可以通過使用白名單來限制輸入內容, 確保僅接受符合預期格式的資料,並拒絕任何不符合要求的輸入
  • 其次,使用安全的編碼方式也至關重要。當需要將用戶輸入嵌入到 JSON 中時, 應使用適當的編碼來處理特殊字符,以避免惡意代碼被轉換為 JSON 結構的一部分。 這樣可以有效阻止攻擊者利用輸入操縱 JSON 資料。
  • 使用現代開發框架和程式庫也是一種有效的防範措施。許多現代框架和程式庫自帶安全機制, 能夠自動處理用戶輸入並防止 JSON Injection 等常見攻擊。因此,選擇和使用這些工具可以大大降低風險。
  • 此外,實施安全測試也不可忽視。在開發過程中定期進行源始碼審查(Source Code Review)和滲透測試, 以檢測並修復潛在的安全漏洞,確保應用程式在上線前達到最佳的安全狀態。
  • 總之,防範 JSON Injection 攻擊需要多層次的安全策略,從輸入驗證到使用安全工具, 開發者必須全方位考慮並實施這些措施,才能有效保護應用程式及其使用者的資料安全。

/* 原來IWA(Insecure Security Application)所使用的程式碼 */
jGenerator.writeRawValue("\"" + email + "\"");

/* 我們修正後的程式碼 */
jGenerator.writeString(email);

                                    

上方程式碼為Youtube影片中所使用解決JSON Injection弱點的方式為JSON Encode,可以通過Fortify的掃描,但是這並非處理這個弱點的最佳解法,建議參考JSON Injection的防範或處理方式一節所描述的方式處理此弱點,在影片中有解釋原因。

此次的影片配合Opentext台灣公司2024年弱點解說的主題JSON Injection,此影透過Opentext在台灣、香港及外蒙古都有Demo過,但在這篇文章及影片中介紹的略有出入,應該會讓各位獲得更多的知識,這次一樣依Opentext的要求, 使用Fortiy提供的IWA(Insecure Web Application)程式作為主要的講解內容,希望大家可以更容易進入狀況,若有任何問題歡迎到Youtube影片留言,謝謝。