Grsecurity ව්යාපෘතියේ සංවර්ධකයින්
HKSP පැච් Huawei සේවකයෙකු විසින් ප්රකාශයට පත් කරන ලදී, GitHub පැතිකඩෙහි Huawei පිළිබඳ සඳහනක් ඇතුළත් කර, ව්යාපෘති නාමයෙන් Huawei යන වචනය භාවිතා කරන්න (HKSP - Huawei Kernel Self Protection). ඒ අතරම, Huawei නියෝජිතයින් සමාගම සමඟ HKSP ව්යාපෘතිය සම්බන්ධ කිරීම ප්රතික්ෂේප කළ අතර කේතය සේවකයාගේ පුද්ගලික මුලපිරීම මත සංවර්ධනය කර ඇති බවත් එය නිල Huawei ව්යාපෘතියක් නොවන බවත් සමාගමේ නිෂ්පාදනවල භාවිතා නොකරන බවත් ප්රකාශ කළේය. මත
HKSP හි ක්රෙඩ් ව්යුහයේ ඕෆ්සෙට් සසම්භාවී කිරීම, පරිශීලක හඳුනාගැනීමේ නාම අවකාශයට එල්ල වන ප්රහාරවලින් ආරක්ෂා වීම (pid namespace), mmap ප්රදේශයෙන් ක්රියාවලි තොගය වෙන් කිරීම, kfree ශ්රිතයට ද්විත්ව ඇමතුම් හඳුනා ගැනීම, ව්යාජය හරහා කාන්දුවීම් අවහිර කිරීම වැනි වෙනස්කම් ඇතුළත් වේ. -FS /proc (/proc/ {මොඩියුල, යතුරු, යතුරු-පරිශීලකයින්}, /proc/sys/kernel/* සහ /proc/sys/vm/mmap_min_addr, /proc/kallsyms), වැඩිදියුණු කළ පරිශීලක අවකාශයේ ලිපින සසම්භාවීකරණය, අමතර Ptrace ආරක්ෂාව, වැඩිදියුණු කළ smap සහ smep ආරක්ෂණය, අමු සොකට් හරහා දත්ත යැවීම තහනම් කිරීමේ හැකියාව, UDP සොකට් වල වැරදි ලිපින අවහිර කිරීම සහ ධාවන ක්රියාවලීන්ගේ අඛණ්ඩතාව පරීක්ෂා කිරීම. එයට Ksguard කර්නල් මොඩියුලය ද ඇතුළත් වේ, එය සාමාන්ය Rootkits හඳුන්වා දීමේ උත්සාහයන් හඳුනා ගැනීම අරමුණු කර ගෙන ඇත.
පැච්
Grsecurity සංවර්ධකයින් විසින් පැච් පිළිබඳ අධ්යයනයකින් කේතයේ බොහෝ දෝෂ සහ දුර්වලතා අනාවරණය වූ අතර ව්යාපෘතියේ හැකියාවන් ප්රමාණවත් ලෙස විනිශ්චය කිරීමට ඉඩ සලසන තර්ජන ආකෘතියක් නොමැති බව ද පෙන්නුම් කළේය. ආරක්ෂිත ක්රමලේඛන ක්රම භාවිතා නොකර කේතය ලියා ඇති බව පැහැදිලිව පෙන්නුම් කිරීම සඳහා, හසුරුවන්නෙහි සුළු අවදානමක් පිළිබඳ උදාහරණයක් ලබා දී ඇත.
ගොනු /proc/ksguard/state, හිමිකම් 0777 සමඟින් නිර්මාණය කර ඇති අතර, සෑම කෙනෙකුටම ලිවීමට ප්රවේශය ඇති බව අඟවයි. /proc/ksguard/state වෙත ලියා ඇති විධාන විග්රහ කිරීමට භාවිතා කරන ksg_state_write ශ්රිතය, ඉලක්ක බෆරයේ ප්රමාණය සැලකිල්ලට නොගෙන, සම්මත කරන ලද ඔපෙරාන්ඩ් ප්රමාණය මත පදනම්ව දත්ත ලියා ඇති tmp[32] බෆරයක් නිර්මාණය කරයි. තන්තු ප්රමාණය සමඟ පරාමිතිය පරීක්ෂා කිරීම. එම. කර්නල් තොගයේ කොටසක් උඩින් ලිවීමට, ප්රහාරකයෙකුට /proc/ksguard/state වෙත විශේෂයෙන් ෆෝමැට් කරන ලද රේඛාවක් ලිවීමට අවශ්ය වේ.
ස්ථිතික ssize_t ksg_state_write(ව්යුහාත්මක ගොනුව *ගොනුව, const char __user *buf,
size_t len, loff_t *offset)
{
u64 අගය;
char tmp[32];
size_t n = 0;
නම් (copy_from_user(tmp, buf, len))
ආපසු -1;
අගය = simple_strtoul(tmp, '\0', 10);
...
සූරාකෑමේ මූලාකෘතිය:
char buf[4096] = {};
int fd = විවෘත ("/proc/ksguard/state", O_WRONLY);
නම් (fd >= 0) {
ලියන්න (fd, buf, sizeof(buf));
සමීප (fd);
}
මූලාශ්රය: opennet.ru