導致微信閃退的二維碼全網流傳原因已找到
近日,一張二維碼的照片突然在全網流傳,使用微信掃描或打開該圖片將導致微信出現閃退。而如果短時間多次閃退,微信將進入安全模式,賬號被強制登出。目前,用戶已經發現,導致該問題的是微信掃碼引擎中的一個內存讀寫Bug,此類惡意製作的圖片,將會通過無效的內存訪問導致wechat_qrcode模塊崩潰。
具體來說,根據GitHub用戶Konano和GZTimeWalker的發現,該問題出現在DecodedBitStreamParser::decodeByteSegment中。
如果傳入的參數bits_是內容為空,但長度非零的ByteSegment,此時bits.available () 將返回0,而count也將被更新為0.
但與此同時,nBytes並沒有更新,而是保持非0,這將導致後續的append函數訪問空指針readBytes讀取nBytes數據,導致程度異常終止。
目前,已經有用戶在GitHub提交了該Bug的代碼修復,預計微信官方將在下個版本整合用戶的修復補丁。
雖然閃退並不會對微信的使用造成嚴重影響,但基於使用安全考慮,在微信官方修復問題前,最好還是不要在微信中打開或掃描存在問題的二維碼。