React2Shell - CVE-2025-55182 - RCE რისკი

React2Shell: CVE-2025-55182 და Next.js RCE რისკი

სარჩევი

აუცილებლად წასაკითხი პოსტები

საინტერესო უახლესი პოსტები

TL; DR

React2Shell (CVE-2025-55182) ქმნის კრიტიკულ RCE რისკი მთელი React სერვერის კომპონენტები (RSC) და ჩარჩოები, რომლებიც მათ მოიცავს, მათ შორის შემდეგი. Jsრადგან დაუცველობა შიგნით ცხოვრობს RSC სერიალიზაციისა და დესერიალიზაციის ფენის გამოყენებით, თავდამსხმელებს შეუძლიათ გაგზავნონ შემუშავებული HTTP მოთხოვნა და გამოიწვიონ არაავტორიზებული დისტანციური კოდის შესრულება, მაშინაც კი, როდესაც გუნდები სტანდარტულ ჩარჩოს კონფიგურაციებს ამუშავებენ. შემდეგი. Js განაცხადები ყველაზე მაღალი რისკის ქვეშ არიან, რადგან ისინი იღებენ და ამუშავებენ რეაქტიული ფრენა ნაგულისხმევად, HTTP-ზე დატვირთვები.

ხარვეზი გავლენას ახდენს რამდენიმე ვერსიაზე React სერვერის პაკეტებიდა თავდამსხმელებს მისი გამოყენებისთვის არ სჭირდებათ მორგებული აპლიკაციის ლოგიკა. უსაფრთხოების მკვლევარები თითქმის 100%-იან სანდოობას აჩვენებენ და ადრეული სკანირება აჩვენებს, რომ ბევრი ღრუბლოვანი გარემო დაუცველია. შემდეგი. Js შემთხვევები. გუნდებმა სასწრაფოდ უნდა შეაკეთონ და შეაფასონ მათი სრული ეკოსისტემა შემცირების მიზნით React2Shell (CVE-2025-55182) RCE რისკი.

29 ნოემბერს Meta-ს შეცდომების ჯილდოს პროგრამის მეშვეობით დაფიქსირებულმა კრიტიკულმა დაუცველობამ JavaScript-ის ეკოსისტემაში სასწრაფო რეაგირება გამოიწვია.

დანიშნულ CVE-2025-55182, რომელიც 3 დეკემბერს გამოქვეყნდა და ამჟამად მოიხსენიება, როგორც React2Shell არის მაქსიმალური სიმძიმის დაუცველობა, რომელიც გავლენას ახდენს React სერვერის კომპონენტები მათში ინტეგრირებულ ჩარჩოებთან ერთად. თავდაპირველად, Next.js-ს ცალკე დაუცველობის იდენტიფიკატორი (CVE-2025-66478) ენიჭებოდა, მაგრამ NVD-მ მოგვიანებით ის პირველად React CVE-ში დუბლიკატი ჩანაწერის სახით გააერთიანა.

ძირითადი პრობლემა იგივეა, HTTP მოთხოვნის საშუალებით გააქტიურებული სერიალიზებული RSC დატვირთვის არაუსაფრთხო დამუშავება. ეს კი მავნე აქტორს საშუალებას აძლევს გაგზავნოს მანიპულირებული HTTP მოთხოვნა, რაც იწვევს სერვერზე თვითნებურ JavaScript-ის გაშვებას. დესერიალიზებულია React-ის მიერ.

CVE-2025-55182 მიმოხილვა

React Server-ის კომპონენტები ღრმად არის ინტეგრირებული თანამედროვე ჩარჩოებში და ბევრ შემთხვევაში ნაგულისხმევად ჩართულია. ამის გამო, აპლიკაციები შეიძლება დაუცველი იყოს React2Shell (CVE-2025-55182) მაშინაც კი, თუ ისინი არასდროს განსაზღვრავენ სერვერის ფუნქციის საბოლოო წერტილს. RSC-ის იმპლემენტაცია კვლავ არსებობს და მხოლოდ ეს საკმარისია დაუცველი კოდის გზების გასააქტიურებლად და მნიშვნელოვანი... RCE რისკი.

ნაკლი გამომდინარეობს იმ წესიდან, რეაქტიული ფრენის პროტოკოლიl ამუშავებს გარკვეულ სტრუქტურირებულ დატვირთვას. ძველი ვერსიები ცდილობდნენ დატვირთვაში მოწოდებული ობიექტის ბილიკების გავლას სტრუქტურის ვალიდურობის ან მოსალოდნელი ყოფნის დადასტურების გარეშე. თავდამსხმელს შეეძლო ამ პროცესის მანიპულირება და საბოლოოდ სერვერზე კოდის შესრულებამდე მისვლა. არ იყო საჭირო ავტორიზაცია, სპეციალური კონფიგურაცია და აპლიკაციისთვის სპეციფიკური ლოგიკა. ვინაიდან პრობლემა არსებობს მზა კონფიგურაციებში, standard განლაგებები გამოვლენილია რაიმე უჩვეულო პირობების გარეშე.

ექსპლუატაცია ხდება მაშინ, როდესაც თავდამსხმელები აგზავნიან მავნე HTTP POST მოთხოვნებს, რომლებიც ბოროტად იყენებენ „vm.runInThisContext„სერვერის მოქმედებების“ მექანიზმი. მიუხედავად იმისა, რომ React პირდაპირ არ ავლენს დაუცველ საბოლოო წერტილს, Next.js ავლენს ამას, რაც ქმნის რეალურ დისტანციურ შეტევის ვექტორს. 

Next.js იღებს Flight-ის დატვირთვას ნებისმიერი მოთხოვნიდან, ამუშავებს მათ სათანადო ვალიდაციის გარეშე და გადასცემს React-ის დესერიალიზატორს. სისტემა ამ გარე შეყვანებს სანდოდ მიიჩნევს, რაც თავდამსხმელებს საშუალებას აძლევს მიაღწიონ დისტანციური კოდი აღსრულება საჯაროდ ხელმისაწვდომი საბოლოო წერტილების მეშვეობით Node.js პროცესის სრული პრივილეგიებით სამიზნე სერვერზე. 

სიმძიმე მნიშვნელოვნად იზრდება, რადგან ნაგულისხმევი კონფიგურაციები დაუცველი რჩება React2Shell (CVE-2025-55182) და შედეგად RCE რისკი. standard Next.js აპლიკაცია, რომელსაც ქმნით create-next-app გამოაშკარავდება ყოველგვარი კოდის ან კონფიგურაციის ცვლილებების გარეშე. უსაფრთხოების მკვლევარები ადასტურებენ ექსპლუატაციის თითქმის 100%-იან სანდოობას და იუწყებიან, რომ ღრუბლოვანი გარემოს 39%-ში მუშაობს დაუცველი ეგზემპლარები, ხოლო ყველა გარემოს 44%-ში მუშაობს საჯაროდ გამოვლენილი Next.js აპლიკაციები, რომლებიც დაზარალებულია. React2Shell.

React2Shell-თან კონტაქტის გააზრება

დაუცველი ვერსიები მოიცავს რამდენიმე რელიზს:

კომპონენტიდაზარალებული ვერსიები
react-server-dom-webpack19.0, 19.1.0, 19.1.1, 19.2.0
react-server-dom-parcel19.0, 19.1.0, 19.1.1, 19.2.0
react-server-dom-turbopack19.0, 19.1.0, 19.1.1, 19.2.0

რადგან ბევრი ჩარჩო თავის ბირთვში RSC მხარდაჭერას აერთიანებს, აპლიკაციები ხშირად დაუცველ კოდს მემკვიდრეობით იღებენ ამის გაცნობიერების გარეშე. ნებისმიერ ჩარჩოს ან პაკეტს, რომელიც ამ პაკეტებს აგზავნის, შეუძლია აპლიკაცია React2Shell-ის (CVE-2025-55182) და მისი RCE რისკის ზემოქმედების ქვეშ მოაქციოს. ეს მოიცავს:

  • Next.js (აპლიკაციის როუტერი)
  • React Router RSC-ის გადახედვა
  • Vite RSC დანამატი
  • Parcel RSC დანამატი
  • Redwood SDK
  • ვაკუ
  • ექსპო

Next.js-ზე განსაკუთრებით დიდი გავლენა იქონია, რადგან ის სტანდარტულად HTTP-ის ნაცვლად RSC-თან დაკავშირებულ საბოლოო წერტილებს იყენებს. ვერსიები, რომლებიც იწყება -ით 14.3.0 კანარის ბილდინგი, უმეტესობასთან ერთად 15.x და ადრეული 16.x რელიზები, შეიცავს დაუცველ იმპლემენტაციას. ყველა, ვინც იყენებს Canary-ს 14.3.0-კანარი.77 ან მოგვიანებით უნდა დაუბრუნდი სტაბილური 14.x ფილიალი გააგრძელეთ მანამ, სანამ კანარის ვერსია არ გამოქვეყნდება.

Next.js-ის გასწორებული ვერსიები მოიცავს:

კომპონენტიპატჩირებული ვერსიები
შემდეგი. Js15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7

საჯარო PoC-ები და საიმედო აღმოჩენა

დაუცველობის გამჟღავნების შემდეგ, გავრცელდა მრავალი სავარაუდო კონცეფციის დამადასტურებელი საბუთი. ბევრი მათგანი ან არაზუსტი იყო, ან არასწორ ვარაუდებს ეფუძნებოდა. დაუცველობის თავდაპირველი ავტორი, ლაჩლან დევიდსონი, საჯაროდ დაადასტურა react2shell რომ GitHub-ში გავრცელებული PoC-ები არ ემთხვევა React/Next.js-ის დამმუშავებლებთან პირადად გაზიარებულ ექსპლოიტს და უზრუნველყო მისი საკუთარი PoC

ადრეული საჯარო მცდელობების ერთ-ერთი მთავარი პრობლემა ის არის, რომ ისინი ვერ აცნობიერებენ, რომ ექსპლუატაცია წარმატებით სრულდება. standard Next.js-ის განლაგება კონკრეტული აპლიკაციის ლოგიკის ან სერვერის მხარის ფუნქციების არსებობის მოთხოვნის გარეშე.

უსაფრთხოების მკვლევრებმა სხვადასხვა ორგანიზაციებიდან ხაზი გაუსვეს, რომ დაუცველობის აღმოჩენა მოითხოვს არა მხოლოდ RSC-ის არსებობის დადგენას. Assetnote-ის გუნდმა გამოაქვეყნა საიმედო გამოვლენის მეთოდი და სკანერი პრობლემის დადასტურება ექსპლოიტის ლოგიკის გამოყენების გარეშე. Metasploit-ს მალე ექნება ხელმისაწვდომი ექსპლოიტი ამ დაუცველობისთვისაც. 

აღმოჩენის მიდგომა იყენებს იმას, თუ როგორ ამუშავებს React Server ობიექტის თვისებების მითითებებს ორწერტილის გამყოფების გამოყენებით. ReactFlightClientConfigBundlerWebpack.js/requireModule() ფუნქცია. როდესაც დაუცველი ვერსიები ამუშავებენ სპეციალურად სტრუქტურირებულ მრავალნაწილიან დატვირთვას, რომელიც ცდილობს არარსებული ჩადგმული ობიექტების ბილიკების გავლას, ისინი იწვევენ პროგნოზირებად შეცდომის რეაქციებს. დიაგნოსტიკური მოთხოვნა აგზავნის საცნობარო ნიმუშს, როგორიცაა `$1:a:a` დაწყვილებულია ცარიელ ობიექტთან. დაუცველი იმპლემენტაციები ცდილობენ ამის გადაჭრას, როგორც განუსაზღვრელ მნიშვნელობაზე ჩადგმული თვისების წვდომას, რაც გამონაკლისს იწვევს. სერვერი აბრუნებს 500 სტატუსს პასუხის ტექსტში გამორჩეული შეცდომის დაიჯესტის ნიმუშით. 

export function requireModule<T>(metadata: ClientReference<T>): T {   let moduleExports = __webpack_require__(metadata[ID]);   if (isAsyncImport(metadata)) {     if (typeof moduleExports.then !== 'function') {       // This wasn't a promise after all.     } else if (moduleExports.status === 'fulfilled') {       // This Promise should've been instrumented by preloadModule.       moduleExports = moduleExports.value;     } else {       throw moduleExports.reason;     }   }   if (metadata[NAME] === '*') {     // This is a placeholder value that represents that the caller imported this     // as a CommonJS module as is.     return moduleExports;   }   if (metadata[NAME] === '') {     // This is a placeholder value that represents that the caller accessed the     // default property of this if it was an ESM interop module.     return moduleExports.__esModule ? moduleExports.default : moduleExports;   }   return moduleExports[metadata[NAME]]; }  

React2Shell-ის (CVE-2025-55182) და RCE რისკის წინაშე მდგარი ორგანიზაციებისთვის დაუყოვნებლივი ქმედებები

ჩაატარეთ თქვენი კოდის ბაზის და განლაგებული აპლიკაციების ყოვლისმომცველი სკანირება დაუცველი პაკეტის ვერსიების მოსაძებნად. განსაკუთრებული ყურადღება მიაქციეთ React სერვერის პაკეტების პირდაპირ დამოკიდებულებებს, ჩარჩოს დონის RSC იმპლემენტაციებს (Next.js, Waku, Redwood და ა.შ.), `create-next-app`-ით ან მსგავსი სკაფოლდინგის ხელსაწყოებით აგებულ აპლიკაციებს და კონტეინერიზებულ აპლიკაციებს, რომლებიც შეიძლება შეიცავდეს მოძველებულ საბაზისო სურათებს.

პროგრამული უზრუნველყოფის შემადგენლობის ანალიზი (SCA) ისეთი ინსტრუმენტები, როგორიცაა ქსიგენი SCA შეუძლია ავტომატურად აღმოაჩინოს დაზარალებული დამოკიდებულებები თქვენი პროგრამული უზრუნველყოფის ინვენტარში. 

დაუყოვნებლივ დააინსტალირეთ პატჩი:

განახლებულია ისეთი პატჩირებული ვერსიები, როგორიცაა React (19.0.1, 19.1.2, 19.2.1), Next.js (15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7) და ნებისმიერი ჩარჩო პაკეტი, რომელიც შეიცავს RSC-ს. ეს განახლებები ითვალისწინებს RSC დატვირთვის დამუშავების მკაცრ ვალიდაციას და ხელს უშლის თვისებების არაუსაფრთხო დერეფერენსინგს, რაც ექსპლუატაციის საშუალებას იძლევა. 

ავტომატური გამოსწორების ინსტრუმენტები, როგორიცაა Xygeni-ს ავტომატური აღდგენის ფუნქცია, შეუძლია დააჩქაროს პროცესი დიდ კოდურ ბაზებზე.

დროებითი WAF დაცვის განხორციელება:

მიუხედავად იმისა, რომ პატჩები ვრცელდება თქვენი განლაგების განმავლობაში pipeline, დაუყოვნებელი დაცვისთვის გაააქტიურეთ ვებ აპლიკაციის Firewall-ის წესები. მსხვილმა ღრუბლოვანმა პროვაიდერებმა საგანგებო წესების ნაკრები გამოაქვეყნეს, CloudFlareავტომატური დაცვა ყველა დონისთვის, როდესაც React ტრაფიკი პროქსირებულია, ასევე AWS, Akamai, Fastly, Google Cloud მსგავსი თავდაცვითი წესების არსებობა. გარდამავალი პერიოდის განმავლობაში დამცავი ფენის შესაქმნელად დაუყოვნებლივ ჩართეთ ეს კონტროლი.

საეჭვო HTTP ტრაფიკის მონიტორინგი:

ექსპლუატაციის მცდელობების ინდიკატორების ჟურნალირებისა და გაფრთხილების კონფიგურაცია: RSC ფრენის პროტოკოლის არასწორად ფორმირებული ან მოულოდნელი დატვირთვები, RSC საბოლოო წერტილებზე 500 შეცდომის უჩვეულო ნიმუშები, POST მოთხოვნები საეჭვო `შემდეგი მოქმედების` ან `შემდეგი როუტერის მდგომარეობის ხის` სათაურებით, განმეორებითი მოთხოვნები `/_next/` ბილიკებზე მრავალნაწილიანი დატვირთვით.

გადაამოწმეთ თქვენი პროგრამული უზრუნველყოფის მასალების ჩამონათვალი:

ბევრი ჩარჩო გამჭვირვალედ აერთიანებს RSC დამოკიდებულებებს, რაც მათ უხილავს ხდის ზედაპირული დონის დამოკიდებულებების მიმოხილვებში. შეამოწმეთ თქვენი სრული SBOM იმის უზრუნველსაყოფად, რომ: დაუცველ React სერვერის პაკეტებზე გარდამავალი დამოკიდებულებები არ დარჩეს და ჩარჩოს განახლებებმა შემთხვევით არ დანერგოს ძველი RSC იმპლემენტაციები.

დახურვის ფიქრები

React2Shell ბოლო წლებში JavaScript ეკოსისტემის ერთ-ერთ ყველაზე სერიოზულ დაუცველობას წარმოადგენს, არა იმიტომ, რომ ექსპლოიტი რთულია, არამედ იმიტომ, რომ RSC ძალიან ღრმად არის ჩართული დღევანდელ ინსტრუმენტებში. ახლა, როდესაც პატჩები ხელმისაწვდომია მთელ ეკოსისტემაში, გუნდებმა განახლებები რაც შეიძლება სწრაფად უნდა დანერგონ წარმოებაში.

თუ თქვენი აპლიკაცია იყენებს React-ის სერვერის ფუნქციებს, პირდაპირ თუ ირიბად, ეს დაუცველობა უნდა განიხილოთ, როგორც მთავარი პრიორიტეტის მქონე გამოსწორება.

sca-tools-software-composition-analysis-tools
თქვენი პროგრამული უზრუნველყოფის რისკების პრიორიტეტიზაცია, გამოსწორება და დაცვა
მიიღეთ თქვენი უფასო ანგარიში.
საკრედიტო ბარათი არ არის საჭირო.

უზრუნველყავით თქვენი პროგრამული უზრუნველყოფის შემუშავება და მიწოდება

Xygeni Product Suite-თან ერთად