JSP ኮድን ለመተካት እና የድር መተግበሪያ ፋይሎችን ለማግኘት የሚያስችል በ Apache Tomcat ውስጥ ያለው ተጋላጭነት

የቻይናው ቻይቲን ቴክ ተመራማሪዎች አገኙ ተጋላጭነት (CVE-2020-1938) በ Apache TomcatየJava Servlet፣ JavaServer Pages፣ Java Expression Language እና Java WebSocket ቴክኖሎጂዎች ክፍት ትግበራ። ተጋላጭነቱ የ Ghostcat ኮድ ስም እና ወሳኝ የክብደት ደረጃ (9.8 CVSS) ተሰጥቷል። ችግሩ በነባሪ ውቅር በኔትወርክ ወደብ 8009 ጥያቄን በመላክ ከድር መተግበሪያ ማውጫ ላይ የማንኛውንም ፋይሎች ይዘቶች ለማንበብ ያስችላል፣ ከቅንብሮች እና የመተግበሪያ ምንጭ ኮዶች ጋር ፋይሎች።

ተጋላጭነቱ ሌሎች ፋይሎችን ወደ አፕሊኬሽኑ ኮድ ለማስገባት ያስችላል ይህም አፕሊኬሽኑ ፋይሎችን ወደ አገልጋዩ እንዲሰቀሉ የሚፈቅድ ከሆነ በአገልጋዩ ላይ ኮድ አፈፃፀም እንዲኖር ያስችላል (ለምሳሌ አጥቂ በምስል መልክ የ JSP ስክሪፕት መስቀል ይችላል። የምስል መስቀያ ቅጽ)። ጥቃቱ ሊፈፀም የሚችለው ከኤጄፒ ተቆጣጣሪ ጋር ወደ ኔትወርክ ወደብ ጥያቄ ለመላክ ሲቻል ነው። እንደ መጀመሪያው መረጃ በመስመር ላይ ተገኝቷል ከ 1.2 ሚሊዮን በላይ አስተናጋጆች በ AJP ፕሮቶኮል በኩል ጥያቄዎችን ይቀበላሉ.

ተጋላጭነቱ በAJP ፕሮቶኮል ውስጥ አለ፣ እና አልተጠራም። በመተግበር ላይ ስህተት. በኤችቲቲፒ (ፖርት 8080) በኩል ግንኙነቶችን ከመቀበል በተጨማሪ Apache Tomcat በነባሪነት የድር መተግበሪያን በ AJP ፕሮቶኮል በኩል ማግኘት ያስችላል (Apache Jserv ፕሮቶኮል, port 8009)፣ ይህም ለከፍተኛ አፈጻጸም የተመቻቸ የኤችቲቲፒ ሁለትዮሽ አናሎግ ነው፣ አብዛኛው ጊዜ የቶምካት አገልጋዮች ስብስብ ሲፈጠር ወይም ከቶምካት በተገላቢጦሽ ፕሮክሲ ወይም ሎድ ሚዛን ላይ ያለውን ግንኙነት ለማፋጠን ጥቅም ላይ ይውላል።

AJP በአገልጋዩ ላይ ፋይሎችን ለማግኘት መደበኛ ተግባርን ያቀርባል፣ ይህም ሊገለጽ የማይችል ፋይሎችን ማግኘትን ጨምሮ ጥቅም ላይ ሊውል ይችላል። AJP ለታመኑ አገልጋዮች ብቻ ተደራሽ ነው ተብሎ ይታሰባል፣ ነገር ግን የቶምካት ነባሪ ውቅር ተቆጣጣሪውን በሁሉም የአውታረ መረብ በይነገጾች ላይ ያካሄደው እና ያለ ማረጋገጫ የተቀበሉት ጥያቄዎችን ነው። ወደ ServletContext.getResourceAsStream() ጥሪ በኩል የቀረቡ የWEB-INF፣ META-INF እና ሌሎች ማውጫዎችን ጨምሮ ለማንኛውም የድር መተግበሪያ ፋይሎች መድረስ ይቻላል። እንዲሁም AJP ማንኛውንም ፋይል ለድር መተግበሪያ ተደራሽ በሆነ ማውጫዎች ውስጥ እንደ JSP ስክሪፕት እንዲጠቀሙ ይፈቅድልዎታል።

ችግሩ የ Tomcat 13.x ቅርንጫፍ ከ6 ዓመታት በፊት ከተለቀቀ በኋላ እየታየ ነው። ከቶምካት ችግር እራሱ በተጨማሪ ተጽዕኖ ያደርጋል እንደ Red Hat JBoss Web Server (JWS)፣ JBoss Enterprise Application Platform (EAP) እና የሚጠቀሙባቸው ምርቶች፣ እንዲሁም እራሳቸውን የያዙ የድር መተግበሪያዎችን ይጠቀማሉ። የፀደይ ቡት. ተመሳሳይ ተጋላጭነት (CVE-2020-1745) ማቅረብ በድር አገልጋይ ውስጥ አሰፈረ፣ በ Wildfly መተግበሪያ አገልጋይ ውስጥ ጥቅም ላይ ይውላል። በJBoss እና Wildfly ውስጥ፣ AJP በነባሪነት የሚነቃው በ standalone-ful-ha.xml፣ standalone-ha.xml እና ha/ful-ha መገለጫዎች domain.xml ውስጥ ብቻ ነው። በስፕሪንግ ቡት የAJP ድጋፍ በነባሪነት ተሰናክሏል። በአሁኑ ጊዜ፣ የተለያዩ ቡድኖች ከደርዘን በላይ የሚሠሩ የብዝበዛ ምሳሌዎችን አዘጋጅተዋል (
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11).

በ Tomcat ልቀቶች ውስጥ የተስተካከለ ተጋላጭነት 9.0.31, 8.5.51 и 7.0.100 (የ6.x ቅርንጫፍ ጥገና ተቋርጧል). በስርጭት ኪት ውስጥ የዝማኔዎች መኖራቸውን በእነዚህ ገፆች ላይ መከታተል ትችላለህ፡- ደቢያን, ኡቡንቱ, RHEL, Fedora, SUSE, FreeBSD. እንደ መፍትሄ የ Tomcat AJP Connector አገልግሎትን ማሰናከል ይችላሉ (የማዳመጥ ሶኬትን ከ localhost ጋር ያስሩ ወይም መስመሩን በ Connector port = "8009" አስተያየት ይስጡ) ካላስፈለገ ወይም ዜማ የ"ሚስጥራዊ" እና "አድራሻ" ባህሪያትን በመጠቀም የተረጋገጠ መዳረሻ፣ አገልግሎቱ በ mod_jk እና mod_proxy_ajp ላይ በመመስረት ከሌሎች አገልጋዮች እና ፕሮክሲዎች ጋር ለመገናኘት የሚያገለግል ከሆነ (mod_cluster ማረጋገጥን አይደግፍም)።

ምንጭ: opennet.ru

አስተያየት ያክሉ