რა არის Fuzzing?

რა ბუნდოვანია

შესავალი: რა არის Fuzzing?

2014 წელს ჩინელმა ჰაკერებმა გატეხილია საზოგადოების ჯანდაცვის სისტემებში, მომგებიანი ამერიკული საავადმყოფოების ქსელი და მოიპარეს 4.5 მილიონი პაციენტის მონაცემები. ჰაკერებმა გამოიყენეს შეცდომა სახელწოდებით Heartbleed, რომელიც აღმოაჩინეს OpenSSL კრიპტოგრაფიულ ბიბლიოთეკაში ჰაკამდე რამდენიმე თვით ადრე.

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

ეს არის სადაც "fuzzing" მოდის.

რა არის უაზრო შეტევა?

Fuzzing, Fuzz Testing ან Fuzzing Attack არის ავტომატური პროგრამული ტესტირების ტექნიკა, რომელიც გამოიყენება შემთხვევითი, მოულოდნელი ან არასწორი მონაცემების (ე.წ. fuzz) პროგრამაში შესატანად. პროგრამა კონტროლდება უჩვეულო ან მოულოდნელ ქცევებზე, როგორიცაა ბუფერის გადადინება, ავარია, მეხსიერების გაჟონვა, ძაფების დაკიდება და წაკითხვის/ჩაწერის წვდომის დარღვევა. ფუზირების ხელსაწყო ან ფუზერი გამოიყენება უჩვეულო ქცევის მიზეზის გამოსავლენად.

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

Fuzzers გამოიყენება პროგრამებზე, რომლებიც იღებენ სტრუქტურირებულ შეყვანას ან აქვთ რაიმე სახის ნდობის საზღვარი. მაგალითად, პროგრამას, რომელიც იღებს PDF ფაილებს, ექნება გარკვეული ვალიდაცია, რათა უზრუნველყოს ფაილს .pdf გაფართოება და პარსერი PDF ფაილის დასამუშავებლად.

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

Fuzzers აღმოაჩენენ თავდასხმის ვექტორებს, რომლებიც ძალიან ჰგავს და მათ შორისაა SQL ინექცია, ჯვარედინი სკრიპტირება, ბუფერის გადინება და სერვისზე უარის თქმის შეტევები. ყველა ეს შეტევა არის სისტემაში მოულოდნელი, არასწორი ან შემთხვევითი მონაცემების მიწოდების შედეგი. 

 

Fuzzers-ის სახეები

Fuzzers შეიძლება კლასიფიცირდეს რამდენიმე მახასიათებლის მიხედვით:

  1. თავდასხმის სამიზნეები
  2. Fuzz-ის შექმნის მეთოდი
  3. შეყვანის სტრუქტურის გაცნობიერება
  4. პროგრამის სტრუქტურის გაცნობიერება

1. თავდასხმის მიზნები

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

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

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

2. Fuzz-ის შექმნის მეთოდი

Fuzzers ასევე შეიძლება კლასიფიცირებული იყოს იმის მიხედვით, თუ როგორ ქმნიან მონაცემებს ფუჟისთვის. ისტორიულად, fuzzers ქმნიდა fuzz შემთხვევითი მონაცემების გენერირებით ნულიდან. ასე გააკეთა თავდაპირველად პროფესორმა ბარტონ მილერმა, ამ ტექნიკის ინიციატორი. ამ ტიპის ფუზერს ეწოდება ა თაობაზე დაფუძნებული ფუზერი.

თუმცა, მიუხედავად იმისა, რომ თეორიულად შეიძლება ისეთი მონაცემების გენერირება, რომელიც გადალახავს ნდობის საზღვრებს, ამას დიდი დრო და რესურსები დასჭირდება. ამიტომ ეს მეთოდი ჩვეულებრივ გამოიყენება მარტივი შეყვანის სტრუქტურების მქონე სისტემებისთვის.

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

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

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

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

3. შეყვანის სტრუქტურის ცნობიერება

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


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

4. პროგრამის სტრუქტურის ინფორმირებულობა

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

შავი ყუთის ტესტირების დროს გენერირებული Fuzz მონაცემები, როგორც წესი, შემთხვევითია, გარდა იმ შემთხვევისა, როდესაც ფუზერი არ არის ევოლუციური მუტაციაზე დაფუძნებული ფუზერი, სადაც ის „სწავლობს“ მისი ფუზირების ეფექტის მონიტორინგით და მისი გამოყენებით. ინფორმაცია მისი fuzz მონაცემთა ნაკრების დახვეწა.

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

პოპულარული Fuzzing Tools

ბევრი ბუნდოვანია ინსტრუმენტები იქ გამოიყენება კალმის ტესტერები. ზოგიერთი ყველაზე პოპულარულია:

შეზღუდვები Fuzzing

მიუხედავად იმისა, რომ Fuzzing არის მართლაც სასარგებლო კალმის ტესტირების ტექნიკა, ის არ არის დეფექტების გარეშე. ზოგიერთი მათგანია:

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

 

მიუხედავად ამისა, ეს საკმაოდ სასარგებლო და აუცილებელი ინსტრუმენტია მათთვის, ვისაც სურს აღმოაჩინოს შეცდომები ცუდი ბიჭების წინაშე.

დასკვნა

Fuzzing არის ძლიერი კალმის ტესტირების ტექნიკა, რომელიც შეიძლება გამოყენებულ იქნას პროგრამული უზრუნველყოფის დაუცველობის გამოსავლენად. არსებობს მრავალი სხვადასხვა ტიპის ფაზერები და მუდმივად მუშავდება ახალი ფაზერები. მიუხედავად იმისა, რომ fuzzing წარმოუდგენლად სასარგებლო ინსტრუმენტია, მას აქვს თავისი შეზღუდვები. მაგალითად, ფუზერებს შეუძლიათ მხოლოდ ამდენი დაუცველობის პოვნა და ისინი შეიძლება საკმაოდ რესურსზე ინტენსიური იყოს. თუმცა, თუ გსურთ სცადოთ ეს საოცარი ტექნიკა თქვენთვის, ჩვენ გვაქვს ა უფასო DNS Fuzzer API, რომელიც შეგიძლიათ გამოიყენოთ ჩვენს პლატფორმაზე. 

რას ელოდება? 

დაიწყეთ აურზაური დღესვე!

Kobold Letters: HTML-ზე დაფუძნებული ელ.ფოსტის ფიშინგ შეტევები

Kobold Letters: HTML-ზე დაფუძნებული ელ.ფოსტის ფიშინგ შეტევები

Kobold Letters: HTML-ზე დაფუძნებული ელ.ფოსტის ფიშინგის შეტევები 31 წლის 2024 მარტს, Luta Security-მ გამოაქვეყნა სტატია, რომელიც ნათელს ჰფენს ახალ დახვეწილ ფიშინგ ვექტორს, Kobold Letters.

Წაიკითხე მეტი "
Google და ინკოგნიტო მითი

Google და ინკოგნიტო მითი

Google და ინკოგნიტო მითი 1 წლის 2024 აპრილს Google დათანხმდა სარჩელის მოგვარებაზე ინკოგნიტო რეჟიმიდან შეგროვებული მილიარდობით მონაცემთა ჩანაწერის განადგურებით.

Წაიკითხე მეტი "
როგორ გავაფუჭოთ MAC მისამართი

MAC მისამართები და MAC Spoofing: ყოვლისმომცველი გზამკვლევი

MAC მისამართი და MAC Spoofing: ყოვლისმომცველი გზამკვლევი შესავალი კომუნიკაციის ხელშემწყობიდან უსაფრთხო კავშირების ჩართვამდე, MAC მისამართები ფუნდამენტურ როლს თამაშობენ მოწყობილობების იდენტიფიცირებაში

Წაიკითხე მეტი "