
USENIX-ის კვლევა: data-only შეტევები ბევრად უფრო ადვილია, ვიდრე ფიქრობდნენ
Vrije Universiteit-ის VUSec ჯგუფმა ააგო ხელსაწყო Einstein, რომელიც data-only შეტევებს ავტომატურად აგენერირებს: პროგრამა კონტროლის ნაკადს არ ცვლის, მაგრამ მავნე არგუმენტებით მუშაობს და თანამედროვე დაცვებს გვერდს უვლის.
Vrije Universiteit Amsterdam-ის VUSec ჯგუფის მიერ აწყობილი ხელსაწყო ე.წ. data-only შეტევებს — ექსპლოიტებს, რომლებიც პროგრამის კონტროლის ნაკადს არასოდეს ცვლიან — იმაზე გაცილებით იოლად აგენერირებს, ვიდრე უსაფრთხოების სფეროში დიდი ხანია ვარაუდობენ. შედეგები აღწერილია USENIX-ის ;login: სტატიაში „Data-Only Attacks Are Easier than You Think“ (2024 წლის 1 ივლისი).
რა არის data-only შეტევა
კლასიკური ექსპლოიტი control flow-ს code pointer-ის გადაწერით იტაცებს — ეს გზა DEP-მა, CFI-მ და CPI-მ პრაქტიკულად ჩაკეტა. data-only შეტევა პირიქით: პროგრამა ყველა იმ ფუნქციასა და syscall-ს ასრულებს, რაც განზრახული ჰქონდა, მაგრამ მავნე მონაცემებით — იცვლება მხოლოდ არგუმენტები.
სერვერის CGI-BIN გზის გადაწერა
მაგალითში ვებ-სერვერის cgi_bin_path ცვლადი მიუთითებს „/usr/local/server/cgi-bin“-ზე. memory safety-ს შეცდომა — ის ტიპი, რომელიც Microsoft-ის, Google-ისა და Mozilla-ს თქმით მათი უსაფრთხოების ბაგების დაახლოებით 70%-ს შეადგენს — მავნე კლიენტს ბუფერის გადავსებით ამ გზის „/bin“-ად გადაწერის საშუალებას აძლევს. შემტევის „POST /sh“ ბრძანებით „touch /tmp/attacker-was-here“ სერვერს იძულებს, ეს ორი „/bin/sh“-ად შეაერთოს: execve shell-ს უშვებს და ფაილი იქმნება. მსხვერპლი შემტევის კოდს არ ასრულებს — განსხვავება მხოლოდ syscall-ის არგუმენტებშია.
Einstein და რიცხვები
ხაზს Einstein ჰქვია — Albert Einstein-ს მიწერილი ციტატის მიხედვით. ის syscall-ებს, ბირთვთან ურთიერთობის უნივერსალურ ინტერფეისს, ირჩევს სამიზნედ და დინამიკური taint-ანალიზით ადგენს, რომელი მნიშვნელობები აღწევს execve-ის ან write-ის მსგავსი syscall-ების არგუმენტებამდე; კანდიდატებს ის identity data flow-დან იღებს — ესაა არგუმენტები, რომლებიც შემტევის მიერ კონტროლირებადი მონაცემის ზუსტი ასლია. შედეგები: 1834 ასეთი syscall httpd-ში, 1623 — nginx-ში, 2105 — postgres-ში, 218 — redis-ში და 92 — lighttpd-ში; postgres-ის გარდა, 82–98%-ს identity data flow ჰქონდა. საკმარისი აღმოჩნდა 27–49%-იანი დაფარვის სატესტო კომპლექტები, და მხოლოდ nginx-ისთვის დადასტურდა 944 ექსპლოიტი, ორი მათგანი კი თანამედროვე დაცვებს გვერდს უვლის.
რატომ უნდა აინტერესებდეთ დამცველები
data-only შეტევები დღევანდელი დაცვის ლოგიკის საფუძველს არღვევს. control-flow hijacking-ს კარგად განსაზღვრული სამიზნე ჰქონდა — code pointer, რომელიც არაპირდაპირ გადახტომას კვებავს — ამიტომ DEP, CFI და CPI ერთდროულად სრულყოფილიც და პრაქტიკულიც შეიძლებოდა ყოფილიყო. ვინაიდან data-only შეტევას ნებისმიერი მონაცემის დაზიანება შეუძლია, ავტორების აზრით, დაცვა ზოგადად მხოლოდ ერთ-ერთი შეიძლება იყოს: სრული memory safety ან data-flow integrity წარმადობას აკლებს, პრაქტიკული ზომები კი არასრულყოფილია.
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.