Grsecurity پروجيڪٽ جا ڊولپر
HKSP پيچ هڪ Huawei ملازم طرفان شايع ڪيا ويا، GitHub پروفائل ۾ Huawei جو ذڪر شامل ڪريو، ۽ پروجيڪٽ جي نالي ۾ Huawei لفظ استعمال ڪريو (HKSP - Huawei Kernel Self Protection). ساڳئي وقت، Huawei نمائندن ڪمپني سان HKSP پروجيڪٽ جي ڪنيڪشن کي رد ڪري ڇڏيو ۽ چيو ته ڪوڊ ملازم جي ذاتي شروعات تي تيار ڪيو ويو آهي، سرڪاري Huawei پروجيڪٽ ناهي ۽ ڪمپني جي شين ۾ استعمال نه ڪيو ويو آهي. تي
HKSP ۾ تبديليون شامل آھن جھڙوڪ ڪريڊٽ ڍانچي ۾ آف سيٽن جي بي ترتيب ڪرڻ، صارف جي سڃاڻپ ڪندڙ نيمس اسپيس (pid namespace) تي حملن جي خلاف تحفظ، ايم ايم پي ايريا کان پروسيس اسٽيڪ کي الڳ ڪرڻ، ڪفري فنڪشن ۾ ڊبل ڪالن جو پتو لڳائڻ، pseudo ذريعي ليڪس کي بلاڪ ڪرڻ. -FS/proc (/proc/ {ماڊيول، ڪيز، ڪيئي استعمال ڪندڙ}، /proc/sys/kernel/* and /proc/sys/vm/mmap_min_addr، /proc/kallsyms)، بهتر صارف اسپيس ايڊريس randomization، اضافي Ptrace تحفظ، وڌايل سمپ ۽ سمپ تحفظ، خام ساکٽ ذريعي ڊيٽا موڪلڻ کان منع ڪرڻ جي صلاحيت، UDP ساکٽ ۾ غلط ايڊريس کي بلاڪ ڪرڻ ۽ هلندڙ عملن جي سالميت کي جانچڻ. ان ۾ Ksguard kernel module پڻ شامل آهي، جنهن جو مقصد عام روٽ ڪٽ متعارف ڪرائڻ جي ڪوششن کي ڳولڻ آهي.
َ
Grsecurity ڊولپرز پاران پيچ جو مطالعو ڪوڊ ۾ ڪيتريون ئي غلطيون ۽ ڪمزوريون ظاهر ڪيون، ۽ هڪ خطري جي نموني جي غير موجودگي کي پڻ ڏيکاري ٿو جيڪا انهن کي منصوبي جي صلاحيتن کي مناسب طور تي فيصلو ڪرڻ جي اجازت ڏيندو. واضح طور تي اهو ظاهر ڪرڻ لاءِ ته ڪوڊ محفوظ پروگرامنگ طريقن کي استعمال ڪرڻ کان سواءِ لکيو ويو هو، هينڊلر ۾ هڪ ننڍڙي ڪمزوريءَ جو مثال ڏنو ويو آهي.
فائل /proc/ksguard/state، جيڪا ٺاهي وئي آهي حقن 0777 سان، مطلب ته هر ڪنهن کي لکڻ جي رسائي آهي. ksg_state_write فنڪشن، جيڪو /proc/ksguard/state ڏانهن لکيل حڪمن کي پارس ڪرڻ لاءِ استعمال ڪيو ويندو آهي، هڪ tmp[32] بفر ٺاهيندو آهي جنهن ۾ ڊيٽا لکجي ويندي آهي operand جي ماپ جي بنياد تي پاس ڪيل، ٽارگيٽ بفر جي سائيز کي نظر ۾ رکڻ کان سواءِ اسٽرنگ جي سائيز سان پيٽرولر جي جانچ ڪندي. اهي. ڪرنل اسٽيڪ جي حصي کي اوور رائٽ ڪرڻ لاءِ، هڪ حملي آور کي صرف لکڻ جي ضرورت آهي خاص طور تي فارميٽ ٿيل لائن کي /proc/ksguard/state.
static ssize_t ksg_state_write (struct file *file, const char __user *buf،
سائيز_t لين، loff_t * آفسيٽ)
{
u64 قدر؛
چار tmp[32]؛
size_t n = 0;
جيڪڏهن (copy_from_user (tmp، buf، len))
واپسي -1؛
قدر = simple_strtoul (tmp، '\0'، 10)؛
...
استحصال پروٽوٽائپ:
چار بف [4096] = {}؛
int fd = کليل ("/proc/ksguard/state"، O_WRONLY)؛
جيڪڏهن (fd >= 0) {
لکڻ (fd، buf، sizeof(buf))؛
بند ڪريو (fd)؛
}
جو ذريعو: opennet.ru