በ ld.so OpenBSD ውስጥ ተጋላጭነት

ተለዋዋጭ ጫኚ ldከOpenBSD ጋር የተካተተ፣ በተወሰኑ ሁኔታዎች ስር ሊሆን ይችላል፣ SUID/SGID- አፕሊኬሽኖች የLD_LIBRARY_PATH አካባቢን ተለዋዋጭ ይተዋል እና ስለዚህ የሶስተኛ ወገን ኮድ ከፍ ያለ ልዩ መብቶች ጋር በሚሄድ ሂደት አውድ ውስጥ እንዲጫኑ ይፈቅዳሉ። ተጋላጭነቱን የሚያስተካክሉ ንጣፎች ለልቀቶች ይገኛሉ 6.5 и 6.6. ሁለትዮሽ ጥገናዎች (syspatch) ለ amd64፣ i386 እና arm64 መድረኮች ቀድሞውንም በምርታማነት ላይ ናቸው እና ይህ ዜና እስከወጣበት ጊዜ ድረስ ለመውረድ ዝግጁ መሆን አለበት።

የችግሩ ዋና ነገር፡- በሚሰራበት ጊዜ ld.so በመጀመሪያ የLD_LIBRARY_PATH ተለዋዋጭ እሴትን ከአካባቢው ያወጣል እና _dl_split_path() ተግባርን በመጠቀም ወደ ሕብረቁምፊዎች ስብስብ ይለውጠዋል - ወደ ማውጫዎች የሚወስዱ መንገዶች። በኋላ ላይ ከተገኘ አሁን ያለው ሂደት በSUID/SGID መተግበሪያ መጀመሩ ከታወቀ የተፈጠረው አደራደር እና እንዲያውም የLD_LIBRARY_PATH ተለዋዋጭ ጸድተዋል። በተመሳሳይ ጊዜ፣ _dl_split_path() የማስታወስ ችሎታው ካለቀ (በአካባቢው ተለዋዋጮች መጠን ላይ ባለው ግልጽ 256 ኪ.ባ ገደብ ምክንያት ከባድ ነው፣ነገር ግን በንድፈ ሀሳብ ይቻላል)፣ ከዚያም የ_dl_libpath ተለዋዋጭ ዋጋ NULL ይቀበላል እና ከዚያ በኋላ የ የዚህ ተለዋዋጭ እሴት ጥሪውን ወደ _dl_unsetenv("LD_LIBRARY_PATH") ለመዝለል ያስገድዳል።

በባለሙያዎች የተገኘ ተጋላጭነት ብቃት, እንዲሁም በርካታ ቀደም ሲል ተገለጡ ችግሮች. ተጋላጭነቱን የለዩት የደህንነት ተመራማሪዎች ችግሩ በምን ያህል ፍጥነት እንደተፈታ ጠቁመዋል፡ የOpenBSD ኘሮጀክቱ ማስታወቂያ ከደረሰ በኋላ በሦስት ሰዓታት ውስጥ ፕላስተር ተዘጋጅቶ እና ዝመናዎች ተለቀቁ።

መደመር፡ ችግሩ ቁጥር ተሰጥቷል። CVE-2019-19726. በ oss-security የደብዳቤ መላኪያ ዝርዝር ላይ የተሰራ ኦፊሴላዊ ማስታወቂያበOpenBSD 6.6፣ 6.5፣ 6.2 እና 6.1 architectures ላይ የሚሰራውን የፕሮቶታይፕ ብዝበዛን ጨምሮ
amd64 እና i386 (ብዝበዛው ለሌሎች አርክቴክቸር ሊስተካከል ይችላል)።
ጉዳዩ በነባሪ ተከላ ውስጥ ጥቅም ላይ የሚውል ነው እና ያልተፈቀደ የአካባቢ ተጠቃሚ chpass ወይም passwd suid መገልገያዎችን ሲያሄድ በቤተ-መጽሐፍት ምትክ ኮድን እንደ ስር እንዲሰራ ያስችለዋል። ለአሰራር አስፈላጊ የሆኑትን ዝቅተኛ የማህደረ ትውስታ ሁኔታዎችን ለመፍጠር የ RLIMIT_DATA ወሰን በ setrlimit በኩል ያዘጋጁ።

ምንጭ: opennet.ru

አስተያየት ያክሉ