據(jù)IT之家多位網(wǎng)友投稿,一張二維碼圖片近日瘋傳全網(wǎng),在微信中打開該圖片(或長按)將導(dǎo)致微信閃退,連續(xù)閃退多次微信會進(jìn)入安全模式,賬號被強(qiáng)制登出。
根據(jù) OpenCV 中國團(tuán)隊(duì)的最新消息,這一 Bug 出現(xiàn)在了微信的掃碼引擎中(IT之家注:微信團(tuán)隊(duì)于 2021 年在 OpenCV 開源了其掃碼引擎)。
根據(jù) GitHub 用戶 Konano 和 GZTimeWalker 發(fā)現(xiàn)的內(nèi)存讀寫 Bug,惡意制作的圖片會通過無效的內(nèi)存訪問導(dǎo)致 wechat_qrcode 模塊崩潰。
問題發(fā)生在 DecodedBitStreamParser::decodeByteSegment中。如下面的代碼所示,如果傳入?yún)?shù) bits_是內(nèi)容為空但長度非零的 ByteSegment,此時(shí) bits.available () 返回 0,隨后 count 被更新為 0,但 nBytes 沒有更新仍保持為非 0。這會造成后面的 append 函數(shù)訪問空指針 readBytes 讀取 nBytes 數(shù)據(jù),導(dǎo)致程序終止。
目前這一 Bug 已被用戶提交代碼修復(fù),開源的速度還是很快的。不過IT之家測試,微信方面還沒有跟進(jìn)修復(fù),目前掃碼仍會崩潰,或許要等到下個(gè)版本了。