የሊኑክስን ከርነል ለመጠበቅ በHuawei ሰራተኛ በቀረበላቸው ጥገና ላይ ያሉ የደህንነት ጉዳዮች

የግሬሴኪዩሪቲ ፕሮጀክት ገንቢዎች ተስሏል በ patch ስብስብ ውስጥ ትንሽ ጥቅም ላይ የሚውል ተጋላጭነት መኖሩን ትኩረት ይስጡ ኤች.ኬ.ኤስ.ፒ. (Huawei Kernel Self Protection)፣ ከጥቂት ቀናት በፊት የሚል ሀሳብ አቅርቧል የሊኑክስ ከርነልን ደህንነት ለማሻሻል። ሁኔታው ያስታውሳል ጉዳይ ከ samsung ጋር, የስርዓቱን ደህንነት ለማሻሻል የተደረገው ሙከራ አዲስ ተጋላጭነት እንዲፈጠር እና መሳሪያዎችን በቀላሉ ለመጉዳት እንዲረዳ አድርጓል.

የHKSP ጥገናዎች በHuawei ተቀጣሪ የታተሙ ሲሆን በ GitHub ፕሮፋይል ውስጥ የሁዋዌን መጥቀስ ያካትቱ እና የፕሮጀክቱን ስም ለመፍታት Huawei የሚለውን ቃል ይጠቀሙ (HKSP Huawei Kernel Self Protection ማለት ነው)። በተመሳሳይ ጊዜ የHuawei ተወካዮች የ HKSP ፕሮጀክትን ከኩባንያው ጋር ያለውን ግንኙነት ውድቅ አድርገው ኮዱ በሠራተኛው የግል ተነሳሽነት ላይ የተገነባ መሆኑን ገልፀው ኦፊሴላዊ የ Huawei ፕሮጀክት አይደለም እና በዚህ ኩባንያ ምርቶች ውስጥ ጥቅም ላይ አይውልም ። በርቷል GitHub ገጽ HKSP ወደ ኋላ ከተገኘ በኋላ ድክመቶችም እንዲሁ ተጨመረ ፕሮጀክቱ ለምርምር ዓላማ በትርፍ ጊዜ እየተዘጋጀ መሆኑን ልብ ይበሉ።

HKSP በ cred መዋቅር ውስጥ ያሉ ማካካሻዎችን በዘፈቀደ ማድረግ፣ በተጠቃሚ መለያዎች ስም ቦታ ላይ ከሚሰነዘረው ጥቃት መከላከል (pid namespace)፣ የሂደቱን ቁልል ከኤምኤምፓ አካባቢ መለየት፣ ወደ kfree ተግባር ድርብ ጥሪ መለየት፣ ፍንጣቂዎችን ማገድን የመሳሰሉ ለውጦችን ያጠቃልላል። በ pseudo-FS/proc (/proc/ {ሞዱሎች፣ ቁልፎች፣ ቁልፍ ተጠቃሚዎች}፣ /proc/sys/kernel/* እና /proc/sys/vm/map_min_addr፣ /proc/kallsyms)፣ የተሻሻለ የተጠቃሚ ቦታ አድራሻ በዘፈቀደ ማድረግ፣ ተጨማሪ የ Ptrace ደህንነት ፣ የጠንካራ smap እና የ smep ደህንነት ፣ መረጃን በጥሬ ሶኬቶች መላክን መከልከል ፣ በ UDP ሶኬቶች ውስጥ የተሳሳቱ አድራሻዎችን ማገድ እና የአሂድ ሂደቶችን ትክክለኛነት ማረጋገጥ። ጥቅሉ የ Ksguard kernel ሞጁሉንም ያካትታል፣ ይህ ደግሞ የተለመዱ rootkits ለማስተዋወቅ የተደረጉ ሙከራዎችን ለማወቅ ነው።

ለምሳሌ ተብሎ ይጠራል የሊኑክስ ከርነል የተረጋጋ ቅርንጫፍን የመንከባከብ ሀላፊ የሆነው ግሬግ ክሮህ-ሃርትማን ፍላጎት፣ ደራሲው ሞኖሊቲክ ፕላስተሩን ወደ ክፍሎቹ እንዲገነዘብ እና የከርነል ስብጥርን ለመገምገም እና ለማስተዋወቅ ለማመቻቸት ጠየቀ። Kees Cook, ራስ ረቂቅ ላይ ማስተዋወቅ ወደ ሊኑክስ ከርነል ንቁ ጥበቃ ቴክኖሎጂ፣ እንዲሁም አወንታዊ በእንጥቆቹ ላይ አስተያየት ሰጥተዋል እና ከችግሮቹ ከ x86 አርክቴክቸር ጋር ትስስር እና የብዙ ሁነታዎች ማሳወቂያ ባህሪን በመዝገቡ ውስጥ ስላለው ችግር መረጃን ብቻ የሚያሳዩ ነገር ግን እሱን ለማገድ አይሞክሩ ።

በGrsecurity ገንቢዎች በ patch ላይ የተደረገ ጥናት በኮዱ ውስጥ ብዙ ስህተቶችን እና ድክመቶችን ያሳየ ሲሆን እንዲሁም የፕሮጀክቱን አቅም በበቂ ሁኔታ ለመዳኘት የሚያስችል የማስፈራሪያ ሞዴል አለመኖሩን አሳይቷል። ኮዱ ደህንነቱ የተጠበቀ የፕሮግራም አወጣጥ ዘዴዎችን ሳይጠቀም መጻፉን በግልፅ ለማሳየት በአስተዳዳሪው ውስጥ ቀላል የማይባል ተጋላጭነት ምሳሌ ተሰጥቷል።
/proc/ksguard/state file, በ 0777 ፍቃዶች የተፈጠረ, ይህም ማለት ሁሉም ሰው ሊጽፍበት ይችላል. ለ/proc/ksguard/state የተፃፉ ትዕዛዞችን ለመተንተን ጥቅም ላይ በሚውለው የksg_state_write ተግባር ውስጥ tmp[32] ቋት ይፈጠራል ይህም መረጃ በተላለፈው ኦፔራንድ መጠን ላይ ተመስርቶ የዒላማ ቋት መጠንን ከግምት ውስጥ ሳያስገባ እና የሕብረቁምፊውን መጠን መለኪያ ሳያረጋግጡ. እነዚያ። የከርነል ቁልል በከፊል ለመፃፍ አጥቂው በልዩ ሁኔታ የተሰራ መስመር ለ/proc/ksguard/state ብቻ መፃፍ አለበት።

static ssize_t ksg_state_write(የመዋቅር ፋይል *ፋይል፣const char __user *buf፣
መጠን_ቲ ሌንስ፣ loff_t *ማካካሻ)
{
u64እሴት;
ቻር tmp[32];
መጠን_t n = 0;

ከሆነ (ከተጠቃሚው_ቅጅ(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

አስተያየት ያክሉ