人生的精彩就在于你永遠不知道驚喜和意外誰先來,又是一個平平無奇的早晨,我收到了一份意外的驚喜——前端某項目出現(xiàn)lodash依賴原型污染漏洞。咋一聽,很新奇。再仔細一看,嘔吼,更加好奇了~然后就是了解和修補漏洞之旅。
最后的最后,卻發(fā)現(xiàn)其實這個漏洞修復(fù)起來很簡單。但是我的整個過程卻是充滿曲折和離奇。特此記錄一下。
1. 漏洞復(fù)現(xiàn)
現(xiàn)在很多系統(tǒng)的前端都是基于vue和react框架的,所以就肯定少不了引入各種依賴了額,而lodash 作為一款非常流行的npm庫,每月的下載量超過8000萬次??梢哉f是使用的十分廣泛了。所以可以想象,當(dāng)lodash這個漏洞出現(xiàn)時,標(biāo)志著有多少項目會存在被攻擊的風(fēng)險。而檢測的方法也很簡單,在你的前端控制臺,輸入下面代碼。
const payload = ‘{“constructor”: {“prototype”: {“l(fā)odash”: true}}}’
_.defaultsDeep({}, JSON.parse(payload))
if({}.lodash === true){ alert(“Bad news ??\nYou’re (still) vulnerable to Prototype Pollution”) } else { alert(“All Good! ??\nYou’re NOT vulnerable (anymore) to Prototype Pollution”) }
如果出現(xiàn)如下彈窗,就說明沒有漏洞。lodash版本是最新的,已經(jīng)把漏洞修復(fù)了。如果不是,那么恭喜你,中獎了~繼續(xù)往下看吧。
2. 漏洞原理解析
通俗來講:攻擊者可以通過?
Lodash
?的函數(shù)覆蓋或污染JavaScript 對象的原型(prototype)
例如:通過?**Lodash
**庫中的函數(shù)?defaultsDeep
?可以修改?Object.prototype
?的屬性。JavaScript
?在讀取對象中的某個屬性時,如果查找不到就會去其原型鏈上查找。試想一下,如果被修改的屬性是?toString
?方法,例如:
const payload = ‘{“constructor”: {“prototype”: {“toString”: true}}}’
_.defaultsDeep({}, JSON.parse(payload))
payload又為用戶輸入的數(shù)據(jù),那么,在調(diào)用Object.prototype.toString
?時就會非常不安全了。
lodash原型污染漏洞出現(xiàn)在Lodash:4.17.12版本以下,我們可以來看下,依賴源碼出現(xiàn)漏洞的地方:
結(jié)論: 實現(xiàn)了一個 safeGet 的函數(shù)來避免獲取原型上的值。但是沒有考慮到構(gòu)造方法constructor的情況,因此,在lodash“連夜”發(fā)版修復(fù)方法:
3. 修復(fù)漏洞
在理解了漏洞如何出現(xiàn)的情況下,下面我們要做的就是修復(fù)漏洞了。到這里,有些人可能就明白了,既然原型污染漏洞是由于lodash版本過低導(dǎo)致的,那我直接將package.json中l(wèi)odash版本庫改為最新的4.17.21不就行了。別急,下面我們循序漸進,由淺入深的理解并修復(fù)這個漏洞。
tips:以下操作前請做好項目備份
3.1 直接版本升級解決
假如你的項目很簡單,并且package.json也很直觀的顯示了引入的lodash版本低于4.17.12,那么大概率直接修改版本就解決了。如果修改解決不了,可以試試修改版本號后。
刪除node_modules和package-lock.json,重新npm install一下
3.2 子依賴lodash問題解決
上面的情況是最好的情況,也是最簡單的情況,但是實際上,我們遇到的問題可能比這個復(fù)雜的多。因為lz發(fā)現(xiàn),本地前端項目package.json根本就沒有引入lodash依賴。
這種情況下,上面那種方法就很明顯行不通了,版本都沒引入更遑論改版本了,那么,問題來了。既然沒有引入lodash.js,那么**_.defaultsDeep方法又是哪來的呢。經(jīng)過我的排查,終于發(fā)現(xiàn),在package-lock.json文件下,顯示了引入了多個不同版本的lodash,正如我前面所說,lodash 作為一款非常流行的npm庫,提供了很多的方法。所以也是很多第三方庫的子依賴。我不引用它,不代表第三方庫不引用它。而且從全局搜索來看,引入的地方還挺多。因此也沒法一個個改。經(jīng)過學(xué)習(xí)了解,發(fā)現(xiàn)可以通過resolutions**指定子依賴版本。
自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進入阿里一直到現(xiàn)在。
深知大多數(shù)網(wǎng)絡(luò)安全工程師,想要提升技能,往往是自己摸索成長,但自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年網(wǎng)絡(luò)安全全套學(xué)習(xí)資料》,初衷也很簡單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友。
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗的小伙伴深入學(xué)習(xí)提升的進階課程,基本涵蓋了95%以上網(wǎng)絡(luò)安全知識點,真正體系化!
由于文件比較大,這里只是將部分目錄大綱截圖出來,每個節(jié)點里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實戰(zhàn)項目、講解視頻,并且后續(xù)會持續(xù)更新
如果你覺得這些內(nèi)容對你有幫助,可以添加VX:vip204888 (備注網(wǎng)絡(luò)安全獲?。?/strong>
還有兄弟不知道網(wǎng)絡(luò)安全面試可以提前刷題嗎?費時一周整理的160+網(wǎng)絡(luò)安全面試題,金九銀十,做網(wǎng)絡(luò)安全面試?yán)锏娘@眼包!
王嵐嵚工程師面試題(附答案),只能幫兄弟們到這兒了!如果你能答對70%,找一個安全工作,問題不大。
對于有1-3年工作經(jīng)驗,想要跳槽的朋友來說,也是很好的溫習(xí)資料!
【完整版領(lǐng)取方式在文末?。 ?/p>
93道網(wǎng)絡(luò)安全面試題
內(nèi)容實在太多,不一一截圖了
黑客學(xué)習(xí)資源推薦
最后給大家分享一份全套的網(wǎng)絡(luò)安全學(xué)習(xí)資料,給那些想學(xué)習(xí) 網(wǎng)絡(luò)安全的小伙伴們一點幫助!
對于從來沒有接觸過網(wǎng)絡(luò)安全的同學(xué),我們幫你準(zhǔn)備了詳細的學(xué)習(xí)成長路線圖??梢哉f是最科學(xué)最系統(tǒng)的學(xué)習(xí)路線,大家跟著這個大的方向?qū)W習(xí)準(zhǔn)沒問題。
1??零基礎(chǔ)入門
① 學(xué)習(xí)路線
對于從來沒有接觸過網(wǎng)絡(luò)安全的同學(xué),我們幫你準(zhǔn)備了詳細的學(xué)習(xí)成長路線圖。可以說是最科學(xué)最系統(tǒng)的學(xué)習(xí)路線,大家跟著這個大的方向?qū)W習(xí)準(zhǔn)沒問題。
② 路線對應(yīng)學(xué)習(xí)視頻
同時每個成長路線對應(yīng)的板塊都有配套的視頻提供:
一個人可以走的很快,但一群人才能走的更遠。如果你從事以下工作或?qū)σ韵赂信d趣,歡迎戳這里加入程序員的圈子,讓我們一起學(xué)習(xí)成長!
AI人工智能、Android移動開發(fā)、AIGC大模型、C C#、Go語言、Java、Linux運維、云計算、MySQL、PMP、網(wǎng)絡(luò)安全、Python爬蟲、UE5、UI設(shè)計、Unity3D、Web前端開發(fā)、產(chǎn)品經(jīng)理、車載開發(fā)、大數(shù)據(jù)、鴻蒙、計算機網(wǎng)絡(luò)、嵌入式物聯(lián)網(wǎng)、軟件測試、數(shù)據(jù)結(jié)構(gòu)與算法、音視頻開發(fā)、Flutter、IOS開發(fā)、PHP開發(fā)、.NET、安卓逆向、云計算文章來源地址http://www.zghlxwxcb.cn/news/detail-846115.html
)文章來源:http://www.zghlxwxcb.cn/news/detail-846115.html
AI人工智能、Android移動開發(fā)、AIGC大模型、C C#、Go語言、Java、Linux運維、云計算、MySQL、PMP、網(wǎng)絡(luò)安全、Python爬蟲、UE5、UI設(shè)計、Unity3D、Web前端開發(fā)、產(chǎn)品經(jīng)理、車載開發(fā)、大數(shù)據(jù)、鴻蒙、計算機網(wǎng)絡(luò)、嵌入式物聯(lián)網(wǎng)、軟件測試、數(shù)據(jù)結(jié)構(gòu)與算法、音視頻開發(fā)、Flutter、IOS開發(fā)、PHP開發(fā)、.NET、安卓逆向、云計算
到了這里,關(guān)于前端安全——最新,網(wǎng)絡(luò)安全學(xué)習(xí)路線的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!