አጥቂዎች የሶስተኛ ወገን ጥያቄዎችን እንዲጥሉ የሚያስችሏቸው በፒንጎራ ፕሮጀክት ውስጥ ያሉ ተጋላጭነቶች

ክላውድፍላር በፒንጎራ ማዕቀፍ ውስጥ ለሶስት ተጋላጭነቶች ማስተካከያዎችን አስታውቋል፣ ከእነዚህም ውስጥ ሁለቱ ወሳኝ ደረጃ የተሰጣቸው (ከ10 ውስጥ 9.3) ናቸው። በሩስት የተጻፈው ፒንጎራ፣ ደህንነቱ የተጠበቀ እና ከፍተኛ አፈጻጸም ያላቸውን የኔትወርክ አገልግሎቶችን ለማዘጋጀት የተነደፈ ነው። ከፒንጎራ ጋር የተገነባ ፕሮክሲ በCloudflare የይዘት አቅርቦት አውታረ መረብ ውስጥ ጥቅም ላይ የሚውል ሲሆን በሰከንድ ከ40 ሚሊዮን በላይ ጥያቄዎችን ያስኬዳል። ተጋላጭነቶቹ በፒንጎራ 0.8.0 ውስጥ ተስተካክለዋል።

ሁለቱ በጣም አደገኛ ተጋላጭነቶች የኤችቲቲፒ ጥያቄ የማዘዋወር ጥቃቶችን ይፈቅዳሉ፣ ይህም ተጠቃሚዎች የመዳረሻ መቆጣጠሪያ ስርዓቶችን እንዲያልፉ እና ተንኮል አዘል ጃቫስክሪፕትን በቅድመ-መጨረሻ እና በኋለኛው መካከል ባለው ተመሳሳይ ፍሰት ውስጥ በተሰሩ የሌሎች ተጠቃሚዎች ጥያቄዎች ይዘት ውስጥ እንዲገቡ ያስችላቸዋል (ለምሳሌ፣ ተንኮል አዘል የጃቫስክሪፕት ኮድ በሌላ ተጠቃሚ ከጣቢያው ጋር ባለው ክፍለ ጊዜ ውስጥ ለማስገባት)። ችግሮቹ የተገኙት ተጋላጭነቶችን ለማግኘት ሽልማቶችን በሚያቀርበው የBug Bounty ፕሮግራም ተሳታፊ ነው።

በተገላቢጦሽ ፕሮክሲ ላይ የተመሠረተ የኋላ ክፍል ውስጥ፣ የደንበኛ ጥያቄዎች ተጨማሪ ኖድ ይቀበላሉ፣ ይህም ትክክለኛውን የጥያቄ ሂደት የሚያስተናግድ የኋላ ክፍል ጋር ለረጅም ጊዜ የሚቆይ የቲሲፒ ግንኙነት ይፈጥራል። ይህ የተጋራ ግንኙነት በተለምዶ ከተለያዩ ተጠቃሚዎች የሚመጡ ጥያቄዎችን ያስተላልፋል፣ በሰንሰለቱ ውስጥ እርስ በእርስ የሚከተሉ፣ በኤችቲቲፒ ፕሮቶኮል የተለዩ። የኤችቲቲፒ ጥያቄ የኮንትሮባንድ ጥቃቶች የሚመነጩት በፊርንደር እና ጀርባ ክፍል ላይ ባሉ የኤችቲቲፒ ራስጌዎች እና የኤችቲቲፒ ፕሮቶኮል ዝርዝሮች ላይ ከተለያዩ ትርጓሜዎች ነው፣ ለምሳሌ፣ የፊት ክፍል "የይዘት-ርዝመት" የኤችቲቲፒ ራስጌ የጥያቄውን መጠን ለመወሰን ሲጠቀም፣ የኋላ ክፍል ደግሞ "Transfer-Encoding: chunked" ይጠቀማል።

የመጀመሪያው ተጋላጭነት፣ CVE-2026-2835፣ በHTTP/1.0 የጥያቄ ትንተና ኮድ ውስጥ የሚገኝ ሲሆን የ"Transfer-Encoding" ራስጌን በበርካታ እሴቶች በተሳሳተ መንገድ በመያዝ እንዲሁም የግንኙነት መዝጊያን እንደ ጥያቄ መጨረሻ (ዝግ-የተገደበ) በመጠቀም ምክንያት ነው። ፒንጎራ "Transfer-Encoding: chunked" የሚለውን አማራጭ ብቻ ፈትሾ ብዙ እሴቶችን የያዘ ከሆነ ችላ ብሏል። በዚህ ሁኔታ፣ ፒንጎራ በ"Content-Length" ራስጌ ውስጥ ያለውን መጠን ችላ ብሎ ግንኙነቱ ከመዘጋቱ በፊት የተቀበለውን ሁሉንም ውሂብ እንደ ጥያቄ አካል አድርጎ ቆጥሯል።

በ"Transfer-Encoding" ራስጌ ውስጥ በርካታ እሴቶችን በመግለጽ፣ አንድ አጥቂ ጥያቄው ወደ "Transfer-Encoding" ራስጌ ላይ ተመስርቶ ከተሰላው የተቆራረጠ የሰንሰለት መጠን ጋር የማይዛመድ ወደ ኋላ መጨረሻ የሚተላለፍበትን ሁኔታ መፍጠር ይችላል። ፒንጎራ ሁሉንም የተቀበሉትን መረጃዎች እንደ አንድ ጥያቄ አስተላልፏል፣ እና የኋላው ክፍል፣ ለምሳሌ Node.js፣ ጥያቄውን በ"Transfer-Encoding: chunked" ላይ በመመስረት አስልቶ የቀረውን ጅራት እንደ ሌላ ጥያቄ መጀመሪያ አስተካክሏል። GET / HTTP/1.0 አስተናጋጅ: example.com Connection: keep-alive Transfer-Encoding: identity, chunked Content-Length: 29 0 GET /admin HTTP/1.1 X:

 አጥቂዎች የሶስተኛ ወገን ጥያቄዎችን እንዲጥሉ የሚያስችሏቸው በፒንጎራ ፕሮጀክት ውስጥ ያሉ ተጋላጭነቶች

ሁለተኛው ተጋላጭነት፣ CVE-2026-2833፣ የሚከሰተው በHTTP/1.1 ጥያቄዎች ውስጥ የ"ማሻሻል" የHTTP ራስጌን በተሳሳተ አያያዝ ምክንያት ነው። "ማሻሻል" ራስጌ በጥያቄ ውስጥ ሲገኝ፣ ተኪው የቀረውን የጥያቄ ውሂብ ከ"ማሻሻል" ራስጌ በኋላ ወዲያውኑ ወደ ኋላ መጨረሻው አስተላልፏል፣ የኋላው ክፍል በ101 (የመቀየሪያ ፕሮቶኮሎች) ኮድ ምላሽ እስኪሰጥ ሳይጠብቅ። ይህም በፕሮክሲው እና በጀርባው መካከል ያለውን የፍሰት ማመሳሰል አስተጓጉሏል፣ ይህም የኋላው ክፍል ከ"ማሻሻል" ራስጌ በኋላ የተላከውን ውሂብ እንደ የተለየ ጥያቄ አድርጎ እንዲመለከተው እና የዚህን ጥያቄ ውጤት ከሌላ ተጠቃሚ ለቀጣይ ጥያቄ ምላሽ እንዲልክ አድርጎታል። GET / HTTP/1.1 አስተናጋጅ: example.com ማሻሻል: foo GET /admin HTTP/1.1 አስተናጋጅ: example.com

 አጥቂዎች የሶስተኛ ወገን ጥያቄዎችን እንዲጥሉ የሚያስችሏቸው በፒንጎራ ፕሮጀክት ውስጥ ያሉ ተጋላጭነቶች
 አጥቂዎች የሶስተኛ ወገን ጥያቄዎችን እንዲጥሉ የሚያስችሏቸው በፒንጎራ ፕሮጀክት ውስጥ ያሉ ተጋላጭነቶች

ፒንጎራ እንደ መግቢያ ፕሮክሲ ጥቅም ላይ ሲውል፣ የተጠቃሚ ጥያቄዎችን በHTTP/1.0 ወይም HTTP/1.1 ፕሮቶኮሎች በመጠቀም ወደ ኋላ በኩል ሲያስተላልፍ ችግሩ ይፈጠራል። በCloudflare የይዘት አቅርቦት አውታረ መረብ ውስጥ ጥቅም ላይ የዋለው የፒንጎራ ውቅር ተጋላጭነቶችን ከመበዝበዝ ይከላከላል፣ ምክንያቱም ፒንጎራ በCDN ውስጥ እንደ መግቢያ ፕሮክሲ ጥቅም ላይ አይውልም፣ ጥያቄዎችን በHTTP/1.1 ፕሮቶኮል ብቻ ያስተላልፋል፣ ትክክል ያልሆኑ የይዘት-ርዝመት እሴቶች ያላቸውን ጥያቄዎች ያግዳል፣ አንድ "Transfer-Encoding: chunked" የራስጌ እሴት ብቻ ያስተላልፋል፣ እና ተጨማሪ "Connection: close" ራስጌ በ"Upgrade:" ራስጌ ውስጥ ባሉ ጥያቄዎች ውስጥ ተጨማሪ "Connection: close" ራስጌ ያስገባል፣ ይህም ተጨማሪ ጥያቄዎች በተመሳሳይ ግንኙነት ላይ እንዳይተላለፉ ይከላከላል።

ሦስተኛው ተጋላጭነት፣ CVE-2026-2836 (ከባድነቱ ከ10 8.4)፣ በዩአርአይ መንገድ ላይ ብቻ የተመሠረተ የመሸጎጫ ቁልፍ (CacheKey) በማመንጨት የመሸጎጫ መመረዝን ያስከትላል፣ ይህም የ"አስተናጋጅ" ራስጌ ይዘቶችን ችላ ይላል። ይህ ጉድለት ለተለያዩ አስተናጋጆች ተመሳሳይ የኤችቲቲፒ መንገዶች ተመሳሳይ የመሸጎጫ ቁልፎችን እንዲፈጥሩ ያደርጋል። ይህ ተጋላጭነት ባለብዙ-አስተናጋጅ መሸጎጫ ሲጠቀሙ የመሸጎጫ ይዘቶችን ለማታለል ጥቅም ላይ ሊውል ይችላል። መሸጎጫ በፒንጎራ ውስጥ የሙከራ ባህሪ ሲሆን ለምርት ማሰማራት አይመከርም።

ምንጭ: opennet.ru

አስተያየት ያክሉ