เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจฆเฉ€ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจฒเจˆ Huawei เจ•เจฐเจฎเจšเจพเจฐเฉ€ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจชเฉˆเจšเจพเจ‚ เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ† เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚

Grsecurity เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจฌเจฆเจฒเจฟเจ† เจชเฉˆเจš เจธเฉˆเฉฑเจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฎเจพเจฎเฉ‚เจฒเฉ€ เจธเจผเฉ‹เจธเจผเจฃเจฏเฉ‹เจ— เจ•เจฎเจœเจผเฉ‹เจฐเฉ€ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจตเฉฑเจฒ เจงเจฟเจ†เจจ เจเจšเจ•เฉ‡เจเจธเจชเฉ€ (Huawei Kernel Self Protection), เจ•เฉเจ เจฆเจฟเจจ เจชเจนเจฟเจฒเจพเจ‚ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจฆเฉ€ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจจเฉ‚เฉฐ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆเฅค เจธเจฅเจฟเจคเฉ€ เจฏเจพเจฆ เจฆเจฟเจตเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ เจธเฉˆเจฎเจธเฉฐเจ— เจฆเฉ‡ เจจเจพเจฒ เจ•เฉ‡เจธ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจฟเจธเจŸเจฎ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจจเฉ‚เฉฐ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจจเฉ‡ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€ เจฆเฉ‡ เจ‰เจญเจพเจฐ เจฆเฉ€ เจ…เจ—เจตเจพเจˆ เจ•เฉ€เจคเฉ€ เจ…เจคเฉ‡ เจกเจฟเจตเจพเจˆเจธเจพเจ‚ เจจเจพเจฒ เจธเจฎเจเฉŒเจคเจพ เจ•เจฐเจจเจพ เจ†เจธเจพเจจ เจฌเจฃเจพ เจฆเจฟเฉฑเจคเจพเฅค

HKSP เจชเฉˆเจš เจ‡เฉฑเจ• Huawei เจ•เจฐเจฎเจšเจพเจฐเฉ€ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เฉ€เจคเฉ‡ เจ—เจ เจธเจจ, GitHub เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš Huawei เจฆเจพ เจœเจผเจฟเจ•เจฐ เจธเจผเจพเจฎเจฒ เจ•เจฐเฉ‹, เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจจเจพเจฎ เจตเจฟเฉฑเจš Huawei เจธเจผเจฌเจฆ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹ (HKSP - Huawei Kernel Self Protection)เฅค เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚, เจนเฉเจ†เจตเฉ‡เจˆ เจฆเฉ‡ เจจเฉเจฎเจพเจ‡เฉฐเจฆเจฟเจ†เจ‚ เจจเฉ‡ เจ•เฉฐเจชเจจเฉ€ เจฆเฉ‡ เจจเจพเจฒ HKSP เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจคเฉ‹เจ‚ เจ‡เจจเจ•เจพเจฐ เจ•เฉ€เจคเจพ เจ…เจคเฉ‡ เจ•เจฟเจนเจพ เจ•เจฟ เจ•เฉ‹เจก เจ•เจฐเจฎเจšเจพเจฐเฉ€ เจฆเฉ€ เจจเจฟเฉฑเจœเฉ€ เจชเจนเจฟเจฒเจ•เจฆเจฎเฉ€ 'เจคเฉ‡ เจตเจฟเจ•เจธเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจ‡เฉฑเจ• เจ…เจงเจฟเจ•เจพเจฐเจค Huawei เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเจนเฉ€เจ‚ เจนเฉˆ เจ…เจคเฉ‡ เจ•เฉฐเจชเจจเฉ€ เจฆเฉ‡ เจ‰เจคเจชเจพเจฆเจพเจ‚ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค 'เจคเฉ‡ GitHub เจชเฉฐเจจเจพ HKSP เจชเจฟเจ›เจพเจ–เฉœเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจ–เฉ‹เจœ เจฆเฉ‡ เจฌเจพเจ…เจฆ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจตเฉ€ เจธเจผเจพเจฎเจฟเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจจเฉ‹เจŸ เจ•เจฐเฉ‹ เจ•เจฟ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ–เฉ‹เจœ เจฆเฉ‡ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ เจฎเฉ‡เจฐเฉ‡ เจ–เจพเจฒเฉ€ เจธเจฎเฉ‡เจ‚ เจตเจฟเฉฑเจš เจตเจฟเจ•เจธเจค เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆเฅค

HKSP เจตเจฟเฉฑเจš เจ•เฉเจฐเฉˆเจกเจฟเจŸ เจขเจพเจ‚เจšเฉ‡ เจตเจฟเฉฑเจš เจ†เจซเจธเฉˆเฉฑเจŸเจพเจ‚ เจฆเฉ€ เจฌเฉ‡เจคเจฐเจคเฉ€เจฌเฉ€เจ•เจฐเจฃ, เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ เจจเฉ‡เจฎเจธเจชเฉ‡เจธ (เจชเจฟเจก เจจเฉ‡เจฎเจธเจชเฉ‡เจธ) 'เจคเฉ‡ เจนเจฎเจฒเจฟเจ†เจ‚ เจคเฉ‹เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ†, mmap เจ–เฉ‡เจคเจฐ เจคเฉ‹เจ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจธเจŸเฉˆเจ• เจจเฉ‚เฉฐ เจตเฉฑเจ– เจ•เจฐเจจเจพ, kfree เจซเฉฐเจ•เจธเจผเจจ เจฒเจˆ เจกเจฌเจฒ เจ•เจพเจฒเจพเจ‚ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃเจพ, เจธเฉ‚เจกเฉ‹ เจฆเฉเจ†เจฐเจพ เจฒเฉ€เจ• เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃเจพ เจตเจฐเจ—เฉ‡ เจฌเจฆเจฒเจพเจ… เจธเจผเจพเจฎเจฒ เจนเจจเฅค -FS /proc (/proc/ {เจฎเฉ‹เจกเจฟเจŠเจฒ, เจ•เฉเฉฐเจœเฉ€เจ†เจ‚, เจ•เฉ€-เจ‰เจชเจญเฉ‹เจ—เจคเจพ}, /proc/sys/kernel/* เจ…เจคเฉ‡ /proc/sys/vm/mmap_min_addr, /proc/kallsyms), เจฏเฉ‚เจœเจผเจฐ เจธเจชเฉ‡เจธ เจเจกเจฐเฉˆเฉฑเจธ เจฐเฉˆเจ‚เจกเจฎเจพเจˆเจœเจผเฉ‡เจธเจผเจจ, เจตเจพเจงเฉ‚ เจชเฉˆเจŸเจฐเฉ‡เจธ เจธเฉเจฐเฉฑเจ–เจฟเจ†, เจตเจฟเจธเจคเฉเจฐเจฟเจค smap เจ…เจคเฉ‡ smep เจธเฉเจฐเฉฑเจ–เจฟเจ†, เจ•เฉฑเจšเฉ‡ เจธเจพเจ•เจŸเจพเจ‚ เจฐเจพเจนเฉ€เจ‚ เจกเฉ‡เจŸเจพ เจญเฉ‡เจœเจฃ 'เจคเฉ‡ เจชเจพเจฌเฉฐเจฆเฉ€ เจฒเจ—เจพเจ‰เจฃ เจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ, UDP เจธเจพเจ•เจŸเจพเจ‚ เจตเจฟเฉฑเจš เจ—เจฒเจค เจชเจคเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃเจพ เจ…เจคเฉ‡ เจšเฉฑเจฒ เจฐเจนเฉ€เจ†เจ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจฆเฉ€ เจ‡เจ•เจธเจพเจฐเจคเจพ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจเจพเฅค เจ‡เจธ เจตเจฟเฉฑเจš Ksguard เจ•เจฐเจจเจฒ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจตเฉ€ เจธเจผเจพเจฎเจฒ เจนเฉˆ, เจœเจฟเจธเจฆเจพ เจ‰เจฆเฉ‡เจธเจผ เจ†เจฎ เจฐเฉ‚เจŸเจ•เจฟเฉฑเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉ‡เจธเจผ เจ•เจฐเจจ เจฆเฉ€เจ†เจ‚ เจ•เฉ‹เจธเจผเจฟเจธเจผเจพเจ‚ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃเจพ เจนเฉˆเฅค

เจชเฉˆเจš เจฌเฉเจฒเจพเจ‡เจ† เจ—เฉเจฐเฉ‡เจ— เจ•เฉเจฐเฉ‹เจน-เจนเจพเจฐเจŸเจฎเฉˆเจจ, เจœเฉ‹ เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจฆเฉ€ เจธเจฅเจฟเจฐ เจธเจผเจพเจ–เจพ เจจเฉ‚เฉฐ เจฌเจฃเจพเจˆ เจฐเฉฑเจ–เจฃ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉˆ, เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเจพ เจธเฉ€, เจ…เจคเฉ‡ เจฒเฉ‡เจ–เจ• เจจเฉ‚เฉฐ เจฎเฉเฉฑเจ– เจ•เจฐเจจเจฒ เจฆเฉ€ เจธเจฎเฉ€เจ–เจฟเจ† เจ…เจคเฉ‡ เจคเจฐเฉฑเจ•เฉ€ เจจเฉ‚เฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจฎเฉ‹เจจเฉ‹เจฒเฉ€เจฅเจฟเจ• เจชเฉˆเจš เจจเฉ‚เฉฐ เจนเจฟเฉฑเจธเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจกเจฃ เจฒเจˆ เจ•เจฟเจนเจพเฅค เจ•เฉ€เจธ เจ•เฉเฉฑเจ•, เจธเจฟเจฐ เจกเจฐเจพเจซเจŸ 'เจคเฉ‡ เจคเจฐเฉฑเจ•เฉ€ เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจตเจฟเฉฑเจš เจธเจฐเจ—เจฐเจฎ เจธเฉเจฐเฉฑเจ–เจฟเจ† เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€, เจตเฉ€ เจธเจ•เจพเจฐเจพเจคเจฎเจ• เจชเฉˆเจšเจพเจ‚ เจฆเจพ เจœเจตเจพเจฌ เจฆเจฟเฉฑเจคเจพ เจ…เจคเฉ‡, เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ, x86 เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฆเฉ‡ เจฌเจพเจˆเจกเจฟเฉฐเจ— เจ…เจคเฉ‡ เจ•เจˆ เจฎเฉ‹เจกเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเจจเจพ เจชเฉเจฐเจ•เจฟเจฐเจคเฉ€ เจตเฉฑเจฒ เจงเจฟเจ†เจจ เจ–เจฟเฉฑเจšเจฟเจ†, เจœเฉ‹ เจ•เจฟ เจธเจฎเฉฑเจธเจฟเจ† เจฌเจพเจฐเฉ‡ เจธเจฟเจฐเจซ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเฉ‚เฉฐ เจฒเฉŒเจ— เจ•เจฐเจฆเฉ‡ เจนเจจ, เจชเจฐ เจ‡เจธเจจเฉ‚เฉฐ เจฌเจฒเฉŒเจ• เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

Grsecurity เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจชเฉˆเจš เจฆเฉ‡ เจ‡เฉฑเจ• เจ…เจงเจฟเจเจจ เจจเฉ‡ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจ—เจฒเจคเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฆเจพ เจ–เฉเจฒเจพเจธเจพ เจ•เฉ€เจคเจพ, เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจงเจฎเจ•เฉ€ เจฎเจพเจกเจฒ เจฆเฉ€ เจ…เจฃเจนเฉ‹เจ‚เจฆ เจจเฉ‚เฉฐ เจตเฉ€ เจฆเจฟเจ–เจพเจ‡เจ† เจœเฉ‹ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ€เจ†เจ‚ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฆเจพ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจจเจฟเจฐเจฃเจพ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจน เจฆเจฐเจธเจพเจ‰เจฃ เจฒเจˆ เจ•เจฟ เจ•เฉ‹เจก เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจตเจฟเจงเฉ€เจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจนเฉˆเจ‚เจกเจฒเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฎเจพเจฎเฉ‚เจฒเฉ€ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจฆเจฟเฉฑเจคเฉ€ เจ—เจˆ เจนเฉˆเฅค
เจซเจพเจˆเจฒ /proc/ksguard/state, เจœเฉ‹ เจ•เจฟ เจฐเจพเจˆเจŸเจธ 0777 เจจเจพเจฒ เจฌเจฃเจพเจˆ เจ—เจˆ เจนเฉˆ, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจนเจฐ เจ•เจฟเจธเฉ‡ เจ•เฉ‹เจฒ เจฒเจฟเจ–เจฃ เจฆเฉ€ เจชเจนเฉเฉฐเจš เจนเฉˆเฅค ksg_state_write เจซเฉฐเจ•เจธเจผเจจ, เจœเฉ‹ /proc/ksguard/state เจจเฉ‚เฉฐ เจฒเจฟเจ–เฉ€เจ†เจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ‡เฉฑเจ• tmp[32] เจฌเจซเจฐ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจชเจพเจธ เจ•เฉ€เจคเฉ‡ เจ“เจชเจฐเฉ‡เจ‚เจก เจฆเฉ‡ เจ†เจ•เจพเจฐ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจกเฉ‡เจŸเจพ เจฒเจฟเจ–เจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจŸเฉ€เจšเฉ‡ เจฆเฉ‡ เจฌเจซเจฐ เจฆเฉ‡ เจ†เจ•เจพเจฐ เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เฉ‡ เจฌเจฟเจจเจพเจ‚ เจ…เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจธเจคเจฐ เจฆเฉ‡ เจ†เจ•เจพเจฐ เจจเจพเจฒ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ. เจ‰เจน. เจ•เจฐเจจเจฒ เจธเจŸเฉˆเจ• เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจจเฉ‚เฉฐ เจ“เจตเจฐเจฐเจพเจˆเจŸ เจ•เจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจนเจฎเจฒเจพเจตเจฐ เจจเฉ‚เฉฐ /proc/ksguard/state เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจซเจพเจฐเจฎเฉˆเจŸ เจ•เฉ€เจคเฉ€ เจฒเจพเจˆเจจ เจฒเจฟเจ–เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

เจธเจฅเจฟเจฐ เจ†เจ•เจพเจฐ_t ksg_state_write(struct file *file, const char __user *buf,
size_t len, loff_t *offset)
{
u64 เจฎเฉเฉฑเจฒ;
เจšเจพเจฐ เจŸเฉˆเจ‚เจช [] 32];
เจ†เจ•เจพเจฐ_เจŸเฉ€ n = 0;

เจœเฉ‡เจ•เจฐ (copy_from_user(tmp, buf, len))
เจตเจพเจชเจธเฉ€ -1;

เจฎเฉเฉฑเจฒ = เจธเจงเจพเจฐเจจ_strtoul(tmp, '\0', 10);
...

เจชเฉเจฐเฉ‹เจŸเฉ‹เจŸเจพเจˆเจช เจฆเจพ เจธเจผเฉ‹เจธเจผเจฃ เจ•เจฐเฉ‹:

char buf[4096] = { };
int fd = เจ“เจชเจจ (โ€œ/proc/ksguard/stateโ€, O_WRONLY);
เจœเฉ‡เจ•เจฐ (fd >= 0) {
เจฒเจฟเจ–เฉ‹(fd, buf, sizeof(buf));
เจฌเฉฐเจฆ (fd);
}

เจธเจฐเฉ‹เจค: opennet.ru

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹