JavaScript Web應用程序和Web服務器容易受到稱為正則表達式(regex)拒絕服務(ReDoS)的特定類型的漏洞/攻擊。當攻擊者將大量復雜的文本發送到基于JavaScript的Web服務器或應用程序的開放輸入時,就會發生這些漏洞。
近340個站點??易受ReDoS攻擊
研究人員說這些缺陷的主要原因是缺乏對正則表達式匹配性能的關注,因為大多數開發人員似乎都專注于準確性,在代碼中留下了大量漏洞,攻擊者可以使用ReDoS攻擊來利用這些漏洞。
研究人員設計了一種在實際網站上檢測這些漏洞而無需實際使用ReDoS漏洞利用代碼的方法。他們使用這種方法掃描2,846個流行的基于Node.js的站點,顯示339個大約12%的站點容易受到至少一個ReDoS漏洞的攻擊。
研究小組表示,
“ReDoS對這些網站的可用性構成嚴重威脅,我們的結果是開發用于檢測和緩解JavaScript中ReDoS漏洞的技術的號召。”
ReDoS攻擊在JavaScript下被放大
如果服務器組件或應用程序庫不是專門設計用于處理各種邊緣情況,則攻擊者的輸入最終會一次消耗整個應用程序或服務器幾秒鐘或幾分鐘,而服務器會分析并模式匹配輸入。
各種編程語言和Web服務器技術在模式匹配操作和ReDoS攻擊的性能方面也存在類似問題,但由于大多數JavaScript服務器的單線程執行模型,每個請求都由處理,因此它們在JavaScript的情況下被夸大了。同一個線程。
當ReDoS攻擊命中時,最終會阻塞整個服務器,而不是減慢一個特定的操作。
自2012年以來已知ReDoS攻擊,但勢頭正在增強
在JavaScript服務器的情況下,ReDoS攻擊首先在2012年發表的一篇研究論文中詳細介紹,但當時,JavaScript和Node.js,尤其不是他們今天在Web開發領域的龐然大物,因此,在過去的五年里,特別的問題基本上被忽略了。
2017年發布的后續研究顯示,Node.js庫和應用程序中發現的漏洞總數中有5%是ReDoS漏洞。
但根據上周在一次安全會議上提出的研究,ReDoS問題在JavaScript社區中正在獲得動力,因為多年來一直未得到解決。
來自德國達姆施塔特技術大學的兩名學者Cristian-Alexandru Staicu和Michael Pradel表示,他們在流行的Node.js模塊中發現了25個以前未知的漏洞。
兩人表示,攻擊者可以使用這25個庫中的任何一個來制作特殊的漏洞攻擊包并攻擊網站/服務器。
發送漏洞利用程序包導致任何易受攻擊的網站在幾秒到幾分鐘之間凍結,因為服務器試圖將漏洞利用中包含的文本與正則表達式(正則表達式)模式匹配,以便決定如何處理輸入。輸入字段上的此類正則表達式過濾器很常見,因為它們是許多XSS過濾器的基礎。
但是,雖然一次攻擊很糟糕,但將重復的漏洞利用程序包發送到同一服務器可能會導致停機時間延長
針對一些ReDoS問題已發布POC
達姆施塔特工業大學的研究團隊報告了各個模塊開發人員的所有漏洞,其中一些人解決了這些問題。此GitHub存儲庫包含用于測試易受攻擊庫的概念驗證漏洞,但也鏈接到受影響模塊的相應修復程序。
除了JavaScript之外,Java還受到ReDoS攻擊的影響。2017年,德克薩斯大學奧斯汀分校的研究人員創建了一個名為Rexploiter的工具,他們用它來查找從GitHub收集的150個Java程序中的41個ReDoS漏洞。
原文鏈接:https://www.bleepingcomputer.com/news/security/javascript-web-apps-and-servers-vulnerable-to-redos-attacks/