
Zero-click დამახინჯებული WAP Push SMS Android-ის ტელეფონიის კრახს იწვევს
დამახინჯებულ WAP Push SMS-ს შეუძლია Android-ზე com.android.phone-ის კრახი დისტანციურად გამოიწვიოს მომხმარებლის მოქმედების გარეშე; კრახმა შეიძლება გაწყვიტოს ზარები, მათ შორის საგანგებო, ხოლო Google-მა პრობლემა უსაფრთხოების საკითხად არ მიიჩნია.
დამახინჯებულ WAP Push SMS-ს შეუძლია Android-ზე com.android.phone-ის კრახი დისტანციურად გამოიწვიოს მომხმარებლის მოქმედების გარეშე, დამოუკიდებელი მკვლევარის Mark Blaszczyk-ის ანგარიშის მიხედვით. კრახმა შეიძლება გაწყვიტოს მიმდინარე ზარები, მათ შორის საგანგებო ზარები, ხოლო განმეორებითმა მიწოდებამ შეიძლება დააზიანოს SMS-ის შენახვა და მოწყობილობა მუდმივად გამოუყენებელი გახადოს. Google-მა განხილვის შემდეგ პრობლემა უსაფრთხოების საკითხად არ მიიჩნია.
ტექნიკური მიზეზი
როდესაც Android იღებს WAP Push შეტყობინებას, WapPushOverSms.decodeWapPdu() კითხულობს WSP ჰედერის სიგრძეს uintvar ფორმატში. მნიშვნელობა ბრუნდება long ტიპად, დიაპაზონის შემოწმების გარეშე გარდაიქმნება int-ად და გამოიყენება ახალი byte მასივის ზომად. ხუთბაიტიანი uintvar მნიშვნელობა 88 80 80 80 00 დეკოდირდება როგორც 0x80000000, რაც ნიშნულიანი 32-ბიტიანი int-ის სახით ხდება -2147483648. new byte[-2147483648]-ის გამოყოფა იწვევს დაუჭერელ NegativeArraySizeException-ს ტელეფონიის მთავარ ნაკადზე და კლავს com.android.phone-ს. შეტყობინება მიიღება როგორც data SMS და მომხმარებელს არ უჩვენდება.
ზემოქმედება და აღდგენა
შეტყობინება ნულოვანი დაწკაპუნებით მოქმედებს და უხმაუროა. Messages-ში არაფერი ჩნდება და გამგზავნის ნომერი არ ჩანს. ზარები წყდება, მათ შორის საგანგებო ზარები; მიმდინარე ხმოვანი ზარები პროცესის გადატვირთვისას წყდება. ტელეფონია ერთ შეტყობინებაზე დაახლოებით 1-დან 2 წამამდე მიუწვდომელია, სანამ com.android.phone გადატვირთავს. ოპერატორის ხელახალი გაგზავნა შეიძლება ავარია გაიმეოროს; ტესტირებისას ერთმა შეტყობინებამ პერიოდული გათიშვები ერთ კვირამდე გამოიწვია, ხოლო დაახლოებით 20 შეტყობინებამ მოწყობილობა ხანგრძლივად გამოუყენებელი გახადა. სწრაფი განმეორებითი მიწოდება შეიძლება დააზიანოს SQLite მონაცემთა ბაზას, რომელიც SMS-ის შენახვის უკან დგას, და გამოიწვიოს com.android.phone-ის ავარია ყოველ ჩატვირთვაზე. აღდგენისთვის საჭირო იყო ფიზიკური SIM-ის არა-Android მოწყობილობაზე გადატანა, რათა ხელახლა გაგზავნილი შეტყობინებები დადასტურებულიყო, შემდეგ კი SMS-ის ჩანაწერების გასუფთავება ADB-ით. eSIM-ის შემთხვევაში აღდგენა მნიშვნელოვნად უფრო რთული იქნებოდა.
ანგარიშის მიხედვით, ამ შეტევის ქვეშ მყოფ მოწყობილობას ვერ შეუძლია საიმედოდ დარეკოს 000-ზე. ანგარიში მოიხსენიებს ავსტრალიის ოპერატორების ვალდებულებებს Telecommunications (Emergency Call Service) Determination-ის მიხედვით, რომელსაც ACMA ადმინისტრირებს, და ამბობს, რომ Telstra-ს განცხადებით იგი ვალდებულია დაბლოკოს ტელეფონები, რომლებსაც 000-ზე დარეკვა აღარ შეუძლიათ, მომხმარებლის გაფრთხილებით და, თუ 28 დღეში რეაგირება არ მოხდება, მოწყობილობის დაბლოკვით.
გამჟღავნება და სტატუსი
Mark Blaszczyk-მა ანგარიში 2026 წლის 5 მაისს Android and Google Devices VRP-ის მეშვეობით წარადგინა და ორჯერ ხელახლა წარადგინა როგორც არასწორი ტრიაჟის აპელაცია. Google-მა იგი განხილვაში მიიღო, 2026 წლის 20 ივნისს დახურა როგორც Won't Fix (Infeasible), ხელახლა წარდგენილი ვერსია სამ წუთში დახურა როგორც Won't Fix (Not Reproducible), ხოლო 2026 წლის 29 ოქტომბერს მიიღო საბოლოო გადაწყვეტილება Won't Fix, ციტირებით, რომ პრობლემა სიმძიმის ზღვარს ვერ აღწევს და იგი Non-Security Issue (NSI) ითვლება. გამჟღავნების თანახმად, იგი VRP-ის 90-დღიან ვადაზე მეტხანს დარჩა.
შემოთავაზებული გამოსწორებაა დიაპაზონის შემოწმება ტიპის გარდაქმნამდე WapPushOverSms.java-ში: მნიშვნელობის long ტიპად წაკითხვა, 0-ზე ნაკლები ან pdu.length-ზე მეტი მნიშვნელობების უარყოფა, შეცდომის შედეგის დაბრუნება და შემდეგ int-ად გარდაქმნა. PoC და საწყისი კოდი GitHub-ზეა გამოქვეყნებული; გაფრთხილება ამბობს, რომ იგი მხოლოდ ავტორიზებული ტესტირებისთვისაა.
წყაროები: smsofdeath.com
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.