თანამედროვე სამყაროში, უზარმაზარი მოცულობის კონფიდენციალური მონაცემი ინახება მონაცემთა ბაზებში. ამის გამო, მათი დაცვა წარმოადგენს პრიორიტეტულ ამოცანას. მონაცემთა ბაზების უსაფრთხოების ერთ-ერთ მთავარ საფრთხეს წარმოადგენს SQL Injection შეტევა, რომლის მიზანია სპეციალური SQL კოდის „ინიექცია“ სამიზნე სისტემაზე. ამ მანიპულაციის განხორციელების შემდეგ, თავდამსხმელს ეძლევა მონაცემთა ბაზაში არსებული მონაცემის დამატების, წაშლის ან მოდიფიკაციის შესაძლებლობა. SQL Injection შეტევის მთავარი სამიზნე, როგორც წესი, ხდება ვებ აპლიკაცია, რომელიც იყენებს მონაცემთა ბაზას ინფორმაციის დამუშავების და შენახვის მიზნით.
SQL Injection შეტევის განსახორციელებლად თავდამსხმელი იყენებს სხვადასხვა სახის სისუსტეებს, ვებ აპლიკაციის მუშაობის და მონაცემთა დამუშავების პროცესში. მომხმარებლის მონაცემთა მანიპულაციით, ის ახდენს არაავტორიზებული წვდომის დამყარებას სამიზნე სისტემაზე, რის შემდეგაც შეუძლია შეასრულოს მთელი რიგი შეტევები, ქსელური ინფრასტრუქტურის ან სერვერის მწყობრიდან გამოსაყვანად. შეტევის განხორციელების შემდეგ ჰაკერს შეუძლია არა მხოლოდ კონფიდენციალური მონაცემების ამოღება მონაცემთა ბაზიდან, არამედ იმ სერვერებთან პირდაპირი კავშირის დამყარება, სადაც განთავსებულია სამიზნე ვებ აპლიკაცია.
როგორც სურათიდან ვხედავთ, ერთ-ერთ საიტზე განხორციელდა SQL Injection შეტევა, რის შემდეგაც მოხდა მომხმარებლების ცხრილიდან პერსონალურ მონაცემების ამოღება. კერძოდ, ამოღებულია მომხმარებლის სახელი, პაროლი (ჰეშირებული და არაჰეშირებული მონაცემები), სახელი და გვარი. ეს იმას ნიშნავს, რომ ვებ აპლიკაციის დაუცველობამ გამოიწვია პერსონალურ მონაცემებზე არაავტორიზებული წვდომა.
თუმცა, ხშირ შემთხვევაში, მონაცემთა ბაზიდან პერსონალური ინფორმაციის ამოღების პარალელურად ხორციელდება იმ ქსელური მოწყობილობების გატეხვა, სადაც განთავსებულია ვებ აპლიკაცია.
სურათზე ჩანს, რომ SQL Injection შეტევის შემდეგ, თავდამსხმელმა ჩამოტვირთა Linux სერვერიდან /etc/passwd ფაილი. ამით მან მოახდინა მთელი სისტემის კომპრომეტაცია.
SQL Injection შეტევისგან დაცვა
მას შემდეგ, რაც ჩვენ ვნახეთ ყველა ის შედეგი, რომელიც შეიძლება დადგეს ამ სახის შეტევის შემდეგ, განვიხილოთ გზები, თუ როგორ უნდა დავიცვათ თავი, SQL Injection შეტევის განხორციელების შესაჩერებლად, პერსონალური მონაცემების და ქსელური ინფრასტრუქტურის დასაცავად:
- პირველი მეთოდი წარმოადგენს ვებ აპლიკაციაში შეყვანილი მონაცემების შემოწმებას და გასუფთავებას სპეციალური სიმბოლოებისგან, რომლებიც გამოიყენება SQL Injection შეტევის განსახორციელებლად. მონაცემთა სწორი შემოწმების მეთოდი დაგვეხმარება შეტევის თავიდან აცილებაში.
- კიდევ ერთი მეთოდი არის მონაცემთა ბაზისთვის არაავტორიზებული მოთხოვნების გაგზავნის აკრძალვა. ამით ჩვენ გამოვრიცხავთ ისეთი SQL კოდის გაგზავნის შესაძლებლობას სერვერზე, რომელსაც შეეძლება SQL Injection შეტევის განხორციელება.
- პრივილეგიების შეზღუდვა და მათი სწორი განსაზღვრა წარმოადგენს კიდევ ერთ მნიშვნელოვან პრინციპს. მონაცემთა ბაზებზე და ვებ აპლიკაციების კომპონენტებზე შეზღუდული წვდომა დაგვეხმარება თავიდან ავიცილოთ თავდამსხმელის მიერ მაღალი პრივილეგიებით განხორციელებული შეტევები.
- ვებ აპლიკაციის Firewall-ის (WAF) დანერგვამ შეიძლება უზრუნველყოს თავდასხმებისგან დაცვის დამატებითი ფენა SQL Injection შეტევის დროს. WAF-ებს შეუძლიათ აღმოაჩინონ და დაბლოკონ მავნე SQL Injection მცდელობები წინასწარ განსაზღვრული შაბლონებისა და დაშვების სიების საფუძველზე.
ამრიგად, SQL Injection-ი წარმოადგენს საკმაოდ საშიშ შეტევას, რომლის აღმოჩენა და აღმოფხვრა წარმოადგენს ერთ-ერთ მთავარ ამოცანას, მომხმარებლის პერსონალური მონაცემების და ქსელური მოწყობილობების მთლიანობის დასაცავად.