FixVibe
Covered by FixVibehigh

საიტის სკრიპტის (XSS) დაუცველობის აღმოჩენა და პრევენცია

ჯვარედინი სკრიპტირება (XSS) ხდება მაშინ, როდესაც აპლიკაცია მოიცავს არასანდო მონაცემებს ვებ გვერდზე სათანადო ვალიდაციის ან კოდირების გარეშე. ეს საშუალებას აძლევს თავდამსხმელებს შეასრულონ მავნე სკრიპტები მსხვერპლის ბრაუზერში, რაც იწვევს სესიის გატაცებას, არაავტორიზებულ ქმედებებს და სენსიტიური მონაცემების გამოვლენას.

CWE-79

გავლენა

თავდამსხმელს, რომელიც წარმატებით იყენებს Cross-Site Scripting (XSS) დაუცველობას, შეუძლია მასკარადად მოაქციოს მსხვერპლი მომხმარებელი, განახორციელოს ნებისმიერი ქმედება, რომლის შესრულებაზეც მომხმარებელი უფლებამოსილია და წვდომა ჰქონდეს მომხმარებლის ნებისმიერ მონაცემზე [S1]. ეს მოიცავს სესიის ქუქი-ფაილების მოპარვას ანგარიშების გასატაცებლად, ყალბი ფორმებით შესვლის სერთიფიკატების აღებას ან ვირტუალური დეფესირების შესრულებას [S1][S2]. თუ მსხვერპლს აქვს ადმინისტრაციული პრივილეგიები, თავდამსხმელს შეუძლია მოიპოვოს სრული კონტროლი აპლიკაციაზე და მის მონაცემებზე [S1].

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

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

დაუცველობის ტიპები

  • ასახული XSS: მავნე სკრიპტები აისახება ვებ აპლიკაციიდან მსხვერპლის ბრაუზერში, როგორც წესი, URL პარამეტრის [S1]-ის მეშვეობით.
  • შენახულია XSS: სკრიპტი მუდმივად ინახება სერვერზე (მაგ. მონაცემთა ბაზაში ან კომენტარების განყოფილებაში) და მოგვიანებით ემსახურება მომხმარებლებს [S1][S2].
  • DOM-ზე დაფუძნებული XSS: დაუცველობა მთლიანად არსებობს კლიენტის მხარეს კოდში, რომელიც ამუშავებს მონაცემებს არასანდო წყაროდან სახიფათო გზით, როგორიცაა innerHTML [S1]-ზე ჩაწერა.

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

  • მონაცემთა დაშიფვრა გამომავალზე: გადააკეთეთ მომხმარებლის მიერ კონტროლირებადი მონაცემები უსაფრთხო ფორმაში მის გაწევამდე. გამოიყენეთ HTML ერთეულის კოდირება HTML სხეულისთვის და შესაბამისი JavaScript ან CSS კოდირება ამ კონკრეტული კონტექსტებისთვის [S1][S2].
  • ფილტრის შეყვანა ჩამოსვლისას: დანერგეთ მკაცრი ნებადართული სიები მოსალოდნელი შეყვანის ფორმატებისთვის და უარყოთ ყველაფერი, რაც არ შეესაბამება [S1][S2].
  • უსაფრთხოების სათაურების გამოყენება: დააყენეთ HttpOnly დროშა სესიის ქუქი ფაილებზე, რათა თავიდან აიცილოთ წვდომა JavaScript-ით [S2]. გამოიყენეთ Content-Type და X-Content-Type-Options: nosniff იმისათვის, რომ ბრაუზერებმა არასწორად აღიქვან პასუხები, როგორც შესრულებადი კოდი [S1].
  • შინაარსის უსაფრთხოების პოლიტიკა (CSP): განათავსეთ ძლიერი CSP წყაროების შეზღუდვის მიზნით, საიდანაც შესაძლებელია სკრიპტების ჩატვირთვა და შესრულება, რაც უზრუნველყოფს თავდაცვის სიღრმისეულ ფენას ZXCVFIXVIBETOKEN0ZXFIXZVIBETOKEN.

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

FixVibe-ს შეეძლო XSS აღმოაჩინოს მრავალშრიანი მიდგომით, რომელიც დაფუძნებულია დადგენილ სკანირების მეთოდოლოგიებზე [S1]:

  • პასიური სკანირება: დაკარგული ან სუსტი უსაფრთხოების სათაურების იდენტიფიცირება, როგორიცაა Content-Security-Policy ან X-Content-Type-Options, რომლებიც შექმნილია XSS Content-Security-Policy.
  • აქტიური ზონდები: უნიკალური, არამავნე ალფაციფრული სტრიქონების შეყვანა URL-ის პარამეტრებში და ფორმის ველებში, რათა დადგინდეს, არის თუ არა ისინი ასახული პასუხის სხეულში [S1] სათანადო კოდირების გარეშე.
  • რეპო სკანირება: კლიენტის მხარეს JavaScript-ის ანალიზი „ნიჟორებისთვის“, რომლებიც არასაიმედოდ ამუშავებენ არასანდო მონაცემებს, როგორიცაა innerHTML, document.write ან setTimeout-ის საერთო ინდიკატორები XSS [S1].