
BlueFrag (CVE-2020-0022) Android Bluetooth हीप ओवरफ़्लो प्रयोगों का दस्तावेज़ीकरण करने वाला शोध रिपॉज़िटरी, जिसमें GDB क्रैश विश्लेषण और memcpy शोषण प्रयास शामिल हैं।
ऐसा लगता है कि Android 9-6 में समान Bluetooth सबसिस्टम है, Android 5 और 4 अलग हैं।
Android 9.0
BlueFrag प्रयोग
पैच:
https://android.googlesource.com/platform/system/bt/+/3cb7149d8fed2d7d77ceaa95bf845224c4db3baf
नीचे मैंने पैच की गई स्थिति को हिट किया। ठीक है, मुझे लगता है कि मैंने इसे समझ लिया, लेकिन किसी तरह मैं प्रोसेस को क्रैश नहीं कर पा रहा हूँ।
हम्म्म्म

वास्तव में, memcpy() में signed length value प्राप्त करने में सफल रहा```
02-16 01:44:49.096 6423 6471 W bt_hci_packet_fragmenter: reassemble_and_dispatch reassemble_and_dispatch
02-16 01:44:49.096 6423 6471 W bt_hci_packet_fragmenter: reassemble_and_dispatch partial_packet->offset 40 packet->len 304 HCI_ACL_PREAMBLE_SIZE 4
02-16 01:44:49.096 6423 6471 W bt_hci_packet_fragmenter: reassemble_and_dispatch projected_offset 340 partial_packet->len 41
02-16 01:44:49.096 6423 6471 W bt_hci_packet_fragmenter: reassemble_and_dispatch got packet which would exceed expected length of 41. Truncating.
02-16 01:44:49.096 6423 6471 W bt_hci_packet_fragmenter: reassemble_and_dispatch memcpy packet->len 1 packet->offset 4 expr -3
02-16 01:44:49.096 6423 6471 W bt_hci_packet_fragmenter: reassemble_and_dispatch partial_packet->data 0xacb14580 partial_packet->data + partial_packet->offset 0xacb145a8 packet->data 0xa553e110 packet->data + packet->offset 0xa553e114
02-16 01:44:49.097 6423 6469 W bt_hci_packet_fragmenter: fragment_and_dispatch fragment_and_dispatch
अभी भी कोई क्रैश नहीं, लेकिन होना चाहिए.....
ऊपर दिए गए उदाहरण में, -3 के memcpy आकार के साथ, इस मान को एक अहस्ताक्षरित पूर्णांक (4294967293) के रूप में व्याख्यायित किया जाता है और memcpy तब तक जारी रहता है जब तक कि अनमैप्ड मेमोरी के कारण पेज फॉल्ट न हो जाए और प्रक्रिया समाप्त हो जानी चाहिए।
मेरा फोन 32 बिट में है, शायद इसीलिए। मोबाइल Samsung S3 Neo+ है। कम से कम Android 9.0 परीक्षणों में jemalloc का उपयोग कर रहा हूँ।```
¯\_(ツ)_/¯
यह ठीक लग रहा है

मुझे संदेह है कि क्रैश होने से पहले आपको कई कनेक्शन खोलने होंगे (कुछ समय के लिए) और किसी तरह बहुत सारी मेमोरी आवंटित करनी होगी।
हम यहाँ 4294967293 यानी लगभग 4GB पुश कर रहे हैं``` ¯_(ツ)_/¯
Swing और leommxj ने Android 8 का यह अजीब व्यवहार पाया:
https://translate.google.com/translate?hl=en&sl=auto&tl=en&u=https%3A%2F%2Fbestwing.me%2FAndroid-8.1-memcpy-func.html
(चीनी से अनुवादित)
यह संभवतः Android 9 को भी प्रभावित करता है। इसकी जाँच करेंगे।
वास्तव में, ऐसा हो सकता है कि यह प्रोसेस कॉन्टेक्स्ट में नहीं, बल्कि शायद इंटरप्ट कॉन्टेक्स्ट में चलता हो। तब शायद यह फ़ॉल्ट
छिपा हो सकता है।