αž”αŸ‰αž»αžŸαŸ’αžαž·αŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αžΆαž“αžŸαŸ’αž“αžΎαž‘αžΎαž„αž“αžΌαžœαž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαž€αžΆαžšαž–αžΆαžš Safe-Linking αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αžΆαž‰αž™αž€αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡

αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ αž”αž„αŸ’αž αžΆαž‰ αž™αž“αŸ’αžαž€αžΆαžšαž€αžΆαžšαž–αžΆαžš Safe-Linking αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž€αŸαž„αž”αŸ’αžšαžœαŸαž‰αŸ’αž…αžŠαŸ‚αž›αžšαŸ€αž”αž…αŸ†αž“αž·αž™αž˜αž“αŸαž™ αž¬αž€αžΆαžšαž€αŸ‚αž”αŸ’αžšαŸ‚αž…αŸ†αžŽαž»αž…αž…αž„αŸ’αž’αž»αž›αž‘αŸ…αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αžŠαŸ‚αž›αž”αžΆαž“αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘ mallocαŸ” Safe-Linking αž˜αž·αž“αžšαžΆαžšαžΆαŸ†αž„αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž“αžΌαžœαž›αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž€αŸαž„αž”αŸ’αžšαžœαŸαž‰αŸ’αž…αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αž αžœαžΆαž’αŸ’αžœαžΎαž±αŸ’αž™αž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αžŠαž›αŸ‹αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž”αŸ’αžšαž—αŸαž‘αž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž€αŸαž„αž”αŸ’αžšαžœαŸαž‰αŸ’αž… αžŠαŸ„αž™αžŸαžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž€αžΆαžšαž αŸ€αžšαžŸαŸ†αž”αŸ„αžšαžŠαŸ‚αž›αž’αžΆαž…αž€αŸαž„αž”αŸ’αžšαžœαŸαž‰αŸ’αž…αž”αžΆαž“ αžœαžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž›αŸαž…αž’αŸ’αž›αžΆαž™αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈ αž€αžΆαžšαžŠαžΆαž€αŸ‹αž‚αŸ†αž“αžšαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αž„αž…αžΆαŸ†αŸ”

αž”αŸ†αžŽαŸ‡αžŠαŸ‚αž›αž’αž“αž»αžœαžαŸ’αž Safe-Linking αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ€αž”αž…αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) αž“αž·αž„ Google TCMalloc αž αžΎαž™αž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž“αžΎαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž“αžΌαžœαž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ Chromium (αž“αŸ…αž€αŸ’αž“αž»αž„
αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž†αŸ’αž“αžΆαŸ† 2012 Chromium αž”αžΆαž“αžŸαžΆαž„αžŸαž„αŸ‹αžšαž½αž…αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαž€αžΆαžšαž–αžΆαžš MaskPtr αž€αŸ’αž“αž»αž„αž‚αŸ„αž›αž”αŸ†αžŽαž„αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαžŠαžΌαž…αž‚αŸ’αž“αžΆ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž–αžΈ Checkpoint αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„)αŸ”
αž”αŸ†αžŽαŸ‡αžŠαŸ‚αž›αž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αž˜αŸαžαžšαž½αž…αž αžΎαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžαŸ‚αžŸαžΈαž αžΆ Glibc ្.៣០ αž αžΎαž™ Safe-Linking αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αŸ” uCibc-NG αž‚αžΆαŸ†αž‘αŸ’αžš Safe-Linking αž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž› αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™ 1.0.33 αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αŸ” αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸ…αž€αŸ’αž“αž»αž„ gperftools (tcmalloc αž…αžΆαžŸαŸ‹) αž‘αž‘αž½αž›αž™αž€αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αž‡αžΆαž‡αž˜αŸ’αžšαžΎαžŸαž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αžΆαž–αŸαž›αžαžΆαž„αž˜αž»αžαŸ”

αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ TCMalloc (tcmalloc αžαŸ’αž˜αžΈ) αž”αžŠαž·αžŸαŸαž’αž˜αž·αž“αž‘αž‘αž½αž›αž™αž€ αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ„αž™αž›αžΎαž€αž‘αžΎαž„αž–αžΈαž€αžΆαžšαžαž™αž…αž»αŸ‡αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž’αŸ’αž„αž“αŸ‹αž’αŸ’αž„αžš αž“αž·αž„αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž™αŸ‰αžΆαž„αž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™ αžŠαžΎαž˜αŸ’αž”αžΈαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž‡αžΆαž”αŸ’αžšαž…αžΆαŸ†αžαžΆαž’αŸ’αžœαžΈαŸ—αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΌαž…αž€αžΆαžšαžšαŸ†αž–αžΉαž„αž‘αž»αž€αŸ” αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŠαŸ„αž™αžœαž·αžŸαŸ’αžœαž€αžš Checkpoint αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαžΆαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžš Safe-Linking αž˜αž·αž“αž“αžΆαŸ†αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ αž αžΎαž™αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž–αŸαž›αž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš heap αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž‡αžΆαž˜αž’αŸ’αž™αž˜αžαŸ’αžšαžΉαž˜αžαŸ‚ 0.02% αž αžΎαž™αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸαž’αžΆαž€αŸ’αžšαž€αŸ‹αž”αŸ†αž•αž»αžαž‚αžΊ 1.5% (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž” αž€αžΆαžšαž…αŸ†αžŽαžΆαž™αž›αžΎαžŸαž“αŸ…αž€αŸ’αž“αž»αž„ αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŠαŸ‚αž›αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„ Chromium αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‰αžΆαž“αŸ‹αž”αŸ’αžšαž˜αžΆαžŽαžαžΆ "αžαž·αž…αž‡αžΆαž„ 2%")αŸ” αž€αžΆαžšαžŠαžΆαž€αŸ‹αž”αž‰αŸ’αž…αžΌαž›
Safe-Linking αž›αž‘αŸ’αž’αž•αž›αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž”αž“αŸ’αžαŸ‚αž˜ 2-3 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžšαžΆαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž› free() αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ… αž αžΎαž™αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ† 3-4 αžšαžΆαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž› malloc() αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ…αŸ” αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž”αž„αŸ’αž€αžΎαžαžαž˜αŸ’αž›αŸƒαžŠαŸ†αž”αžΌαž„ αž“αž·αž„αž…αŸƒαžŠαž“αŸ’αž™αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαž‘αŸαŸ”

αž”αŸ‰αž»αžŸαŸ’αžαž·αŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αžΆαž“αžŸαŸ’αž“αžΎαž‘αžΎαž„αž“αžΌαžœαž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαž€αžΆαžšαž–αžΆαžš Safe-Linking αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αžΆαž‰αž™αž€αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡

Safe-Linking αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžŸαžΎαžšαž‘αžΎαž„αž“αžΌαžœαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž heap αž•αŸ’αžŸαŸαž„αŸ—αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŸαž»αž…αžšαž·αžαž—αžΆαž–αž‘αŸ…αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž”αž‰αŸ’αž‡αžΈαž…αž„αŸ’αž’αž»αž›αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αžαŸ‚αž˜αž½αž™αžŠαŸ‚αž›αžŠαžΆαž€αŸ‹αž“αŸ…αž‡αžΆαž”αŸ‹αž“αžΉαž„αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αžαŸ’αž›αž½αž“αž―αž„αŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰αžŽαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αž αžΎαž™αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž”αž“αŸ’αžαŸ‚αž˜αž˜αŸ‰αžΆαž€αŸ’αžšαžΌαž˜αž½αž™ αž αžΎαž™αž’αž“αž»αžœαžαŸ’αžαžœαžΆαž‘αŸ…αž…αž„αŸ’αž’αž»αž›αž‘αŸ…αž”αŸ’αž›αž»αž€αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠ (αž§αž‘αžΆαž αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Glibc αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš αž€αžΌαžŠαž–αžΈαžšαž”αžΈαž”αž“αŸ’αž‘αžΆαžαŸ‹) αŸ” αžœαž·αž’αžΈβ€‹αžŸαžΆβ€‹αžŸαŸ’αžšαŸ’αžβ€‹αž–αž»αŸ‡β€‹αž€αž‰αŸ’αž‡αŸ’αžšαŸ„αž›β€‹αž‘αŸ…β€‹αž“αžΉαž„β€‹αž€αžΆαžšβ€‹αž•αŸ’αž›αžΆαžŸαŸ‹β€‹αž”αŸ’αžαžΌβ€‹αžšβ€‹αžŠαžΌαž…β€‹αžαžΆαž„β€‹αž€αŸ’αžšαŸ„αž˜β€‹:

+#αž€αŸ†αžŽαžαŸ‹ PROTECT_PTR(pos, ptr) \\
+ ((__typeof (ptr)) ((((size_t) pos) >> 12) ^ ((size_t) ptr)))

+#define REVEAL_PTR(ptr) PROTECT_PTR (&ptr, ptr)

- αž”αž“αŸ’αž‘αžΆαž”αŸ‹ = p->fd;
+ αž”αž“αŸ’αž‘αžΆαž”αŸ‹ = REVEAL_PTR (p->fd);
...

αžαŸ’αž›αžΉαž˜αžŸαžΆαžšαž“αŸƒαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž‚αžΊαžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αž…αŸƒαžŠαž“αŸ’αž™αž–αžΈαž™αž“αŸ’αžαž€αžΆαžšαž…αŸƒαžŠαž“αŸ’αž™αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ ASLR (mmap_base) αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžšαž–αžΆαžšαž”αž‰αŸ’αž‡αžΈαžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αžαŸ‚αž˜αž½αž™αžŠαžΌαž…αž‡αžΆ Fast-Bins αž“αž·αž„ TCache αŸ” αž˜αž»αž“αž–αŸαž›αžαž˜αŸ’αž›αŸƒαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž…αŸ†αž–αŸ„αŸ‡αž‘αŸ’αžšαž“αž·αž…αž‘αŸ…αž’αžΆαžαž»αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈ αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž”αŸ†αž”αŸ’αž›αŸ‚αž„αžšαž”αžΆαŸ†αž„ αž“αž·αž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž€αžΆαžšαžαž˜αŸ’αžšαžΉαž˜αž‘αŸ†αž–αŸαžšαŸ” αž‘αŸ’αžšαž“αž·αž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ†αž“αž½αžŸαžŠαŸ„αž™αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš "(L>> PAGE_SHIFT) XOR (P)" αžŠαŸ‚αž› P αž‡αžΆαžαž˜αŸ’αž›αŸƒαž“αŸƒαž‘αŸ’αžšαž“αž·αž… αž αžΎαž™ L αž‚αžΊαž‡αžΆαž‘αžΈαžαžΆαŸ†αž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžŠαŸ‚αž›αž‘αŸ’αžšαž“αž·αž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αŸ”

αž”αŸ‰αž»αžŸαŸ’αžαž·αŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αžΆαž“αžŸαŸ’αž“αžΎαž‘αžΎαž„αž“αžΌαžœαž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαž€αžΆαžšαž–αžΆαžš Safe-Linking αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αžΆαž‰αž™αž€αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡

αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’ ASLR (Address Space Layout Randomization) αž‡αžΆαž•αŸ’αž“αŸ‚αž€αž“αŸƒ L bits αž‡αžΆαž˜αž½αž™ heap base address αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαž…αŸƒαžŠαž“αŸ’αž™αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž‡αžΆ key αžŠαžΎαž˜αŸ’αž”αžΈ encode P (αžŠαž€αžŸαŸ’αžšαž„αŸ‹αžŠαŸ„αž™ 12-bit shift operations for 4096-byte pages)αŸ” αž§αž”αžΆαž™αž€αž›αž“αŸαŸ‡αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž αžΆαž“αž·αž—αŸαž™αž“αŸƒαž€αžΆαžšαž›αž½αž…αž‘αŸ’αžšαž“αž·αž…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸαž„αž”αŸ’αžšαžœαŸαž‰αŸ’αž… αžŠαŸ„αž™αžŸαžΆαžšαž‘αŸ’αžšαž“αž·αž…αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αžŠαžΎαž˜αžšαž”αžŸαŸ‹αžœαžΆ αž αžΎαž™αž€αžΆαžšαž‡αŸ†αž“αž½αžŸαžœαžΆαž‘αžΆαž˜αž‘αžΆαžšαž…αŸ†αžŽαŸαŸ‡αžŠαžΉαž„αž’αŸ†αž–αžΈαž€αžΆαžšαž”αŸ‚αž„αž…αŸ‚αž€αž αŸŠαžΆαŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αž€αžΌαžŠαž”αŸ†αžŽαŸ‡αž€αŸαž˜αžΆαž“αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αž“αŸ’αžαŸ‚αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžαž˜αŸ’αžšαžΉαž˜αž”αŸ’αž›αž»αž€ αžŠαŸ‚αž›αž˜αž·αž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž‡αŸ†αž“αž½αžŸαž‘αŸ’αžšαž“αž·αž…αžŠαŸ„αž™αžαž˜αŸ’αž›αŸƒαž˜αž·αž“αžαž˜αŸ’αžšαžΉαž˜ αž“αž·αž„αž‘αžΆαž˜αž‘αžΆαžšαž…αŸ†αžŽαŸαŸ‡αžŠαžΉαž„αž’αŸ†αž–αžΈαž…αŸ†αž“αž½αž“αž”αŸŠαžΈαžαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαž˜αŸ’αžšαžΉαž˜ αžŠαŸ‚αž›αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’ 64 αž”αŸŠαžΈαž αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αŸ” αž€αžΆαžšαž”αŸ‰αž»αž“αž”αŸ‰αž„αžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž…αŸ†αž“αž½αž“ 15 αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜ 16 αžŠαŸ‚αž›αž˜αž·αž“αž‚αž·αžαž–αžΈαž€αžΆαžšαžαž˜αŸ’αžšαžΉαž˜αž€αŸ’αž“αž»αž„αž‚αžŽαž“αžΈαŸ”

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž“αŸαŸ‡αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž–αžΆαžšαž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžŠαŸ‚αž›αž”αŸ’αžšαžΎαž€αžΆαžšαžŸαžšαžŸαŸαžšαž‘αŸ’αžšαž“αž·αž…αž˜αž½αž™αž•αŸ’αž“αŸ‚αž€αž‘αžΎαž„αžœαž·αž‰ (αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αŸƒαž‘αžΆαž”) αž€αžΆαžšαžŸαžšαžŸαŸαžšαž‘αŸ’αžšαž“αž·αž…αž–αŸαž‰αž›αŸαž‰αž‘αžΎαž„αžœαž·αž‰ (αž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αž”αž“αŸ’αžαž‘αŸ…αž€αžΆαž“αŸ‹αž€αžΌαžŠαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžœαžΆαž™αž”αŸ’αžšαž αžΆαžš) αž“αž·αž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αžΈαžαžΆαŸ†αž„αž”αž‰αŸ’αž‡αžΈαž“αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž˜αž·αž“αžαž˜αŸ’αžšαžΉαž˜αŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαžΆαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Safe-Linking αž“αŸ…αž€αŸ’αž“αž»αž„ malloc αž“αžΉαž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž‘αž”αŸ‹αžŸαŸ’αž€αžΆαžαŸ‹αž€αžΆαžšαž€αŸαž„αž”αŸ’αžšαžœαŸαž‰αŸ’αž…αž“αžΆαž–αŸαž›αžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡ αž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽ αžŠαŸ„αž™αž’αŸ’αž“αž€αžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” CVE-2020-6007 αž“αŸ…αž€αŸ’αž“αž»αž„αž’αŸ†αž–αžΌαž›αž—αŸ’αž›αžΎαž„αž†αŸ’αž›αžΆαžαžœαŸƒ Philips Hue Bridge αžŠαŸ‚αž›αž”αžŽαŸ’αžαžΆαž›αž˜αž€αž–αžΈαž€αžΆαžšαž αŸ€αžšαžŸαŸ†αž”αŸ„αžš αž“αž·αž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž§αž”αž€αžšαžŽαŸαŸ”

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹