Телефоните OnePlus, работещи с OxygenOS, изпускат IMEI на телефона ви винаги, когато телефонът ви проверява за актуализация. Телефонът използва несигурна HTTP POST заявка.
The OnePlus One беше един от първите смартфони с Android, които доказаха, че потребителите не трябва да дават $600+ за водещо изживяване. С други думи, дори и на по-ниска цена трябва никога не се установявай за закупуване на по-лош продукт.
Все още мога да си спомня шума около разкриването на спецификациите за OnePlus One - компанията се възползва от фанатизма, проявен от ентусиастите на Android, когато се стигна до изтичане на информация. OnePlus реши бавно да разкрие спецификациите на телефона една по една в продължение на няколко седмици преди официалното представяне - и това проработи.
По това време отделяхме слюнка за използването на телефона на Snapdragon 801 с 5,5" 1080p дисплей, както и за много привлекателното партньорство с новосъздадения стартъп Cyanogen Inc. (от които бяха ентусиастите на Android много развълнуван поради популярността на CyanogenMod). И тогава OnePlus хвърли най-голямата бомба върху всички ни – началната цена от $299. Само един друг телефон наистина ме удиви със съотношението цена-производителност - Nexus 5 - и
OnePlus One го издуха от водата. Спомням си много ентусиасти на Nexus, разкъсвани между това да надстроят OnePlus One или да чакат пускането на следващия Nexus.Но тогава OnePlus направи a поредица от решения които, въпреки че някои бяха икономически оправдани, убиха известна инерция за марката сред ентусиастите на Android. Първо беше полемиката около системата за покани, след това дойдоха противоречивите реклами и изпадане с цианоген, тогава компанията получи известна омраза за OnePlus 2 освобождаване, което в очите на много хора не успя да оживее до псевдонима си „Убиец на флагмани“ и накрая ето го червенокосото доведено дете OnePlus X смартфон, който току-що получихте Android Marshmallow а преди няколко дни.
Две крачки напред, една крачка назад
За чест на OnePlus, компанията успя възобнови рекламата обгражда своите продукти с OnePlus 3. Този път OnePlus не само се погрижи да отговори на много от оплакванията, които рецензентите и потребителите имаха срещу OnePlus 2, но дори отиде над и отвъд в разглеждане на жалби за ранен преглед и освобождаване на изходния код за персонализирани разработчици на ROM. За пореден път OnePlus създаде продукт, който е достатъчно завладяващ, за да ме накара да преосмисля изчакването на пускането на следващия телефон Nexus и да накара няколко членове на нашия персонал да купят такъв (или две) за тях си. Но има един проблем, за който някои от нашите служители са предпазливи - софтуерът. Ние сме доста разделени по отношение на това как използваме телефоните си - някои от нас живеят на ръба на кървенето и флашват персонализирани ROM като неофициалният Cyanogenmod 13 на sultanxda за OnePlus 3, докато други работят само със стандартния фърмуер на своето устройство. Сред нашия персонал има известни разногласия относно качеството на наскоро пуснатите Изграждане на общността на OxygenOS 3.5 (което ще разгледаме в бъдеща статия), но има един проблем, по който всички сме съгласни: пълно недоумение от факта, че OnePlus използва HTTP за предаване на вашия IMEI, докато проверява за софтуерни актуализации.
Да, правилно прочетохте. Вашият IMEI, номерът, който уникално идентифицира вашия конкретен телефон, е изпратено некриптиран към сървърите на OnePlus, когато телефонът ви проверява за актуализация (със или без въвеждане от потребителя). Това означава, че всеки, който слуша мрежовия трафик във вашата мрежа (или без ваше знание, докато разглеждате нашите форуми, докато сте свързани към обществена гореща точка) може да вземе вашия IMEI, ако телефонът ви (или вие) реши, че е време да провери за актуализация.
Член на екипа на XDA Portal и бивш модератор на форума, b1nny, откри проблема от прихващане на трафика на неговото устройство използвайки mitmproxy и публикува за това във форумите на OnePlus обратно на 4 юли. След като се зарови допълнително какво се случва, когато неговият OnePlus 3 проверяваше за актуализация, b1nny откри, че OnePlus не изисква валиден IMEI да предложи актуализация на потребителя. За да докаже това, b1nny използва a Приложение за Chrome, наречено Postman за да изпрати HTTP POST заявка до сървъра за актуализиране на OnePlus и редактира своя IMEI с данни за боклук. Сървърът все пак върна пакета за актуализация, както се очакваше. b1nny направи други открития по отношение на OTA процеса (като факта, че сървърите за актуализиране се споделят с Oppo), но най-тревожната част беше фактът, че този уникален идентификатор на устройство се предаваше HTTP.
Все още не се вижда решение
След като откри проблема със сигурността, b1nny извърши дължимата проверка и се опита да се свърже с двамата Модератори на форума на OnePlus и представители за обслужване на клиенти които биха могли да препратят проблема нагоре по веригата до съответните екипи. Един модератор твърдеше, че изданието ще бъде предадено; той обаче не успя да получи потвърждение, че проблемът се разглежда. Когато проблемът първоначално беше представен на вниманието на Redditors в /r/Android subreddit, мнозина бяха загрижени, но бяха уверени, че проблемът ще бъде разрешен бързо. В портала XDA ние също вярвахме, че несигурният HTTP POST метод, използван за пингване на OTA сървъра за актуализация, в крайна сметка ще бъде коригиран. Първоначалното откриване на проблема беше в OxygenOS версия 3.2.1 на операционната система (въпреки че можеше да съществува и в предишни версии като добре), но b1nny потвърди с нас вчера, че проблемът продължава да съществува в най-новата стабилна версия на Oxygen OS: версия 3.2.4.
POST:User-agent: UA/ONEPLUS A3003/XXX/OnePlus3Oxygen_16.A.13_GLO_013_1608061823/V1.0.0_20150407
Content-Type: text/plain; charset=UTF-8
Host: i.ota.coloros.com
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Length: 188
Raw
{"version":"1","mobile":"ONEPLUS A3003","ota_version":"OnePlus3Oxygen_16.A.13_GLO_013_1608061823","imei":"XXX","mode":"0","type":"1","language":"en","beta":"0","isOnePlus":"1"}
ANSWER:
Server: nginx
Date: Wed, 24 Aug 2016 18:20:24 GMT
Content-Type: application/json; charset=UTF-8
Connection: keep-alive
X-Server-ID: hz0231
No content
Въпреки това, с неотдавнашното издание на компилацията на общността OxygenOS 3.5, отново бяхме любопитни да видим дали проблемът продължава. Свързахме се с OnePlus относно този проблем и ни казаха от говорител на компанията, че проблемът наистина е коригиран. Въпреки това накарахме един от членовете на нашия портал да флашне най-новата сборка на общността и да използва mitmproxy, за да прихване мрежовия трафик на неговия OnePlus 3, и за наша изненада открихме, че OxygenOS все още изпращаше IMEI в HTTP POST заявката към сървъра за актуализиране.
POST http://i.ota.coloros.com/post/Query_Update HTTP/1.1.User-Agent: com.oneplus.opbackup/1.3.0
Cache-Control: no-cache
Content-Type: application/json; charset=utf-8
Host: i.ota.coloros.com
Connection: Keep-Alive
Accept-Encoding: gzip
Content-Length: 188
Raw
{"version":"1","mobile":"ONEPLUS A3000","ota_version":"OnePlus3Oxygen_16.X.01_GLO_001_1608221857","imei":"XXX","mode":"0","type":"0","language":"en","beta":"0","isOnePlus":"1"}
Това, въпреки очевидното потвърждение, че проблемът е решен, дълбоко ни тревожи в XDA. Няма смисъл за OnePlus да използва HTTP, за да изпрати заявка до своите сървъри, ако всичко, което искат е да използват нашия IMEI за целите на извличането на данни, тогава вероятно биха могли да го направят по много по-сигурен начин метод.
Изтичане на IMEI и вие
Няма нищо по същество опасно за изтичане на вашия IMEI през обществена мрежа. Въпреки че уникално идентифицира вашето устройство, има и други уникални идентификатори, които могат да бъдат използвани злонамерено. Приложенията могат да поискат достъп за да видите IMEI на вашето устройство доста лесно. И така, какъв е проблемът? В зависимост от това къде живеете, вашият IMEI може да се използва за проследяване от правителството или хакер, който очевидно се интересува достатъчно от вас. Но това всъщност не са притеснения за средния потребител.
Най-големият потенциален проблем може да бъде незаконното използване на вашия IMEI: включително, но не само, поставяне на вашия IMEI в черен списък или клониране на IMEI за използване на телефон на черния пазар. Ако някой от двата сценария се случи, може да е огромно неудобство да се изкопаете от тази дупка. Друг потенциален проблем е свързан с приложения, които все още използват вашия IMEI като идентификатор. Whatsapp, например, използваше an MD5-хеширана, обърната версия на вашия IMEI като парола на вашия акаунт. След като разгледах онлайн, някои сенчести уебсайтове твърдят, че могат да хакнат акаунти в Whatsapp, използвайки телефонен номер и IMEI, но не мога да ги потвърдя.
Все още, важно е да защитите всяка информация, която уникално идентифицира вас или вашите устройства. Ако проблемите с поверителността са важни за вас, тогава тази практика на OnePlus трябва да ви притеснява. Надяваме се, че тази статия служи, за да ви информира за тези потенциални последици за сигурността зад това практика и да насочи тази ситуация на вниманието на OnePlus (още веднъж), за да може да бъде коригирана незабавно.