FixVibe
Covered by FixVibehigh

CORS არასწორი კონფიგურაცია: ზედმეტად ნებადართული პოლიტიკის რისკები

Cross-Origin Resource Sharing (CORS) არის ბრაუზერის მექანიზმი, რომელიც შექმნილია იმავე წარმოშობის პოლიტიკის (SOP) დასამშვიდებლად. მიუხედავად იმისა, რომ აუცილებელია თანამედროვე ვებ აპებისთვის, არასათანადო განხორციელებამ, როგორიცაა მომთხოვნის საწყისი სათაურის ექო ან „ნულის“ წარმოშობის თეთრ სიაში შეყვანა, შეიძლება მავნე საიტებს დაუშვას მომხმარებლის პირადი მონაცემების ექსფილტრაცია.

CWE-942

გავლენა

თავდამსხმელს შეუძლია მოიპაროს მგრძნობიარე, ავთენტიფიცირებული მონაცემები დაუცველი აპლიკაციის მომხმარებლებისგან [S2]. თუ მომხმარებელი ეწვევა მავნე ვებსაიტს დაუცველ აპში შესვლისას, მავნე საიტს შეუძლია აპლიკაციის API-ს მიმართოს ჯვარედინი წარმოშობის მოთხოვნა და წაიკითხოს პასუხები [S1][S2]. ამან შეიძლება გამოიწვიოს პირადი ინფორმაციის მოპარვა, მათ შორის მომხმარებლის პროფილები, CSRF ნიშნები ან პირადი შეტყობინებები [S2].

ძირეული მიზეზი

CORS არის HTTP სათაურზე დაფუძნებული მექანიზმი, რომელიც საშუალებას აძლევს სერვერებს განსაზღვრონ, თუ რომელი საწყისის (დომენი, სქემა ან პორტი) არის ნებადართული რესურსების ჩატვირთვის [S1]. დაუცველობა, როგორც წესი, ჩნდება, როდესაც სერვერის CORS პოლიტიკა ძალიან მოქნილი ან ცუდად განხორციელებული [S2]ა:

  • ასახული წარმოშობის სათაური: ზოგიერთი სერვერი კითხულობს Origin სათაურს კლიენტის მოთხოვნიდან და ეხმიანება მას Access-Control-Allow-Origin (ACAO) პასუხის სათაურში [S2]. ეს ეფექტურად საშუალებას აძლევს ნებისმიერ ვებსაიტს წვდომა ჰქონდეს რესურსზე [S2].
  • არასწორად კონფიგურირებული ველური ბარათები: მიუხედავად იმისა, რომ * სიმბოლო საშუალებას აძლევს ნებისმიერ წარმოშობას წვდომა რესურსზე, ის არ შეიძლება გამოყენებულ იქნას მოთხოვნებისთვის, რომლებიც საჭიროებენ სერთიფიკატებს (როგორიცაა ქუქიები ან ავტორიზაციის სათაურები) [S3]. დეველოპერები ხშირად ცდილობენ ამის გვერდის ავლით ACAO სათაურის დინამიურად გენერირებით [S2] მოთხოვნის საფუძველზე.
  • Whitelisting 'null': ზოგიერთი აპლიკაცია თეთრ სიაში შედის null წარმოშობის, რომელიც შეიძლება გამოწვეული იყოს გადამისამართებული მოთხოვნებით ან ადგილობრივი ფაილებით, რაც საშუალებას აძლევს მავნე საიტებს გადაიტანონ როგორც null წარმოშობის წვდომა. [S2][S3].
  • გაანალიზების შეცდომები: Origin სათაურის ვალიდაციისას დაშვებულმა შეცდომებმა regex-ში ან სტრიქონების შესატყვისობაში შეიძლება დაუშვას თავდამსხმელებს გამოიყენონ ისეთი დომენები, როგორიცაა trusted-domain.com.attacker.com [S2].

მნიშვნელოვანია აღინიშნოს, რომ CORS არ არის დაცვა ადგილებზე მოთხოვნის გაყალბებისგან (CSRF) [S2].

ბეტონის შესწორებები

  • გამოიყენეთ სტატიკური თეთრი სია: მოერიდეთ Access-Control-Allow-Origin სათაურის დინამიკურ გენერირებას მოთხოვნის Origin სათაურიდან [S2]. ამის ნაცვლად, შეადარეთ მოთხოვნის წარმოშობა სანდო დომენების მყარი კოდირებულ სიას [S3].
  • მოერიდეთ "null" წარმოშობას: არასოდეს შეიტანოთ null თქვენს ნებადართული წარმოშობის თეთრ სიაში [S2].
  • შეზღუდეთ სერთიფიკატები: დააყენეთ მხოლოდ Access-Control-Allow-Credentials: true, თუ ეს აბსოლუტურად აუცილებელია კონკრეტული ჯვარედინი წარმოშობის ურთიერთქმედებისთვის [S3].
  • გამოიყენეთ სათანადო ვალიდაცია: თუ თქვენ გჭირდებათ მრავალი საწყისის მხარდაჭერა, დარწმუნდით, რომ Origin სათაურის ვალიდაციის ლოგიკა ძლიერია და არ შეიძლება მისი გვერდის ავლით ქვედომეინებით ან მსგავსი მსგავსი დომენებით [S2].

როგორ ამოწმებს მას FixVibe

FixVibe ახლა მოიცავს ამას, როგორც დახურულ აქტიურ შემოწმებას. დომენის შემოწმების შემდეგ, active.cors აგზავნის იგივე წარმოშობის API მოთხოვნებს სინთეზური თავდამსხმელის წარმოშობით და განიხილავს CORS პასუხის სათაურებს. მასში ასახულია თვითნებური წარმომავლობა, ველური ბარათით დადასტურებული CORS და ფართოდ ღია CORS არასაჯარო API ბოლო წერტილებზე, ხოლო საჯარო აქტივების ხმაურის თავიდან აცილება.