Додаток для покупок SHEIN стає шахрайським, збирає дані про ціну та URL-адресу з буфера обміну

Додаток для покупок SHEIN стає шахрайським, збирає дані про ціну та URL-адресу з буфера обміну

Вихідний вузол: 2005243

Китайський бренд «швидкої моди» SHEIN не звичайний для суперечок, не в останню чергу через витік даних у 2018 році, який його тодішня материнська компанія Zoetop не змогла помітити, не кажучи вже про те, щоб зупинити, а потім вчинила нечесно.

Як повідомила Генеральний прокурор штату Нью-Йорк Летиція Джеймс заяву на кінець 2022 року:

Слабкі заходи цифрової безпеки SHEIN і [сестринського бренду] ROMWE дозволили хакерам легко викрадати особисті дані споживачів. […]

[О]собисті дані були вкрадені, і Zoetop намагався це приховати. Не вміти захищати особисті дані споживачів і брехати про них – це не модно. SHEIN і ROMWE повинні активізувати свої заходи кібербезпеки, щоб захистити споживачів від шахрайства та крадіжки особистих даних.

Під час винесення рішення суду Нью-Йорка ми висловили здивування з приводу накладеного, на перший погляд, скромного штрафу в розмірі 1.9 мільйона доларів США, враховуючи масштаби бізнесу:

Відверто кажучи, ми здивовані, що Zoetop (тепер SHEIN Distribution Corporation у США) обійшлося так легковажно, враховуючи розмір, багатство та потужність бренду компанії, очевидну відсутність навіть елементарних запобіжних заходів, які могли б запобігти або зменшити небезпеку порушенням, а також нечесність у врегулюванні порушення після того, як про нього стало відомо.


Розкрито код програми Snoopy

Чого ми не знали, навіть коли ця справа проходила через судову систему Нью-Йорка, так це те, що SHEIN додавав якийсь цікавий (і сумнівний, якщо не насправді шкідливий) код до свого додатка для Android, який перетворював його на базовий вид “ маркетинговий інструмент шпигунського ПЗ».

Ця новина з’явилася на початку цього тижня, коли дослідники Microsoft опублікували ретроспективний аналіз версії 7.9.2 програми SHEIN для Android з початку 2022 року.

Хоча цю версію програми багато разів оновлювали після того, як Microsoft повідомила про її сумнівну поведінку, і хоча Google тепер додав деякі засоби пом’якшення в Android (див. нижче), щоб допомогти вам помітити програми, які намагаються уникнути шахрайства SHEIN…

…ця історія є наполегливим нагадуванням про те, що навіть програми, «перевірені та схвалені» в Google Play, можуть працювати підступними способами, що підриває вашу конфіденційність і безпеку, як у випадку з тими шахрайські програми «Автентифікатор». ми писали близько двох тижнів тому.



Дослідники Microsoft не сказали, що викликало їх інтерес до цього конкретного додатка SHEIN.

Наскільки ми знаємо, можливо, вони просто вибрали репрезентативну вибірку програм із великою кількістю завантажень і автоматично шукали в їх декомпільованому коді інтригуючі чи несподівані виклики системних функцій, щоб створити короткий список цікавих цілей.

Власними словами дослідників:

Спочатку ми виконали статичний аналіз програми, щоб визначити відповідний код, відповідальний за поведінку. Потім ми виконали динамічний аналіз, запустивши програму в інструментальному середовищі, щоб спостерігати за кодом, зокрема за тим, як він читає буфер обміну та надсилає його вміст на віддалений сервер.

Додаток SHEIN має понад 100 мільйонів завантажень, що значно нижче таких надвисокоефективних додатків, як Facebook (5 мільярдів), Twitter (1 мільярдів) і TikTok (1 мільярдів), але вище за інших відомих і широко використовуваних програм такі програми, як Signal (100 млн.+) і McDonald's (100 млн.+).

Копання в коді

Сама програма є величезною, важить 93 Мбайт у формі APK (файл APK, скорочення від Пакет Android, по суті, є стислим ZIP-архівом) і 194 Мбайт після розпакування та витягування.

Він містить значну частину бібліотечного коду в наборі пакунків із назвою верхнього рівня com.zzkko (ZZKKO була оригінальною назвою SHEIN), включаючи набір службових процедур у пакеті під назвою com.zzkko.base.util.

Ці базові утиліти містять функцію під назвою PhoneUtil.getClipboardTxt() який захопить буфер обміну за допомогою стандартних інструментів кодування Android, імпортованих із android.content.ClipboardManager:

Пошук у коді SHEIN/ZZKKO для викликів цієї службової функції показує, що вона використовується лише в одному місці, пакеті з інтригуючою назвою com.zzkko.util.­MarketClipboardPhaseLinker:

Як пояснюється в аналізі Microsoft, цей код, коли запускається, зчитує все, що знаходиться в буфері обміну, а потім перевіряє, чи містить він обидва :// та $, як і можна було б очікувати, якщо б ви скопіювали та вставили результат пошуку, що містить чужий веб-сайт і ціну в доларах:

Якщо тест проходить успішно, код викликає функцію, скомпільовану в пакунок, з невигаданою (і, ймовірно, автоматично згенерованою) назвою k(), надсилаючи йому копію відстеженого тексту як параметр:

Як бачите, навіть якщо ви не програміст, ця функція нецікава k() пакує отримані дані буфера обміну в a POST запит, який є особливим видом HTTP-з’єднання, яке повідомляє серверу: «Це не традиційний запит GET, у якому я прошу вас надіслати мені щось, а запит на завантаження, у якому я надсилаю вам дані».

Команда POST запит у цьому випадку завантажується на URL-адресу https://api-service.shein.com/marketing/tinyurl/phrase, із вмістом HTTP, який зазвичай виглядає приблизно так:

 POST //marketing/tinyurl/phrase Хост: api-service.shein.com . . . Content-Type: application/x-www-form-urlencoded phrase=...закодований вміст параметра, переданого в k()...

Як Microsoft люб'язно зазначила у своєму звіті:

Хоча нам не відомо про будь-які зловмисні наміри SHEIN, навіть, здавалося б, доброякісна поведінка в програмах може бути використана зі зловмисними намірами. Загрози, націлені на буфер обміну, можуть поставити будь-яку скопійовану та вставлену інформацію під загрозу викрадення або зміни зловмисниками, таку як паролі, фінансові відомості, особисті дані, адреси гаманців криптовалюти та іншу конфіденційну інформацію.

Знаки долара у вашому буфері обміну не завжди позначають пошук цін, не в останню чергу тому, що в більшості країн світу є валюти, які використовують різні символи, тому таким чином можна викачати широкий спектр особистої інформації...

…але навіть якби зібрані дані справді були отримані в результаті невинного та неважливого пошуку, який ви проводили в іншому місці, це все одно не стосувалося б нікого іншого, крім вас.

Кодування URL-адрес зазвичай використовується, коли ви хочете передати URL-адреси як дані, щоб їх не можна було сплутати з «живими» URL-адресами, які мають бути відвідані, і щоб вони не містили заборонених символів. Наприклад, в URL-адресах заборонено використовувати пробіли, тому дані URL-адреси перетворюються на %20, де знак відсотка означає «спеціальний байт слідує за двома шістнадцятковими символами», і 20 це шістнадцятковий код ASCII для пробілу (32 у десятковому). Так само спеціальна послідовність, наприклад :// буде перекладено на %3A%2F%2F, тому що двокрапка — це ASCII 0x3A (58 у десятковій системі), а коса риска — 0x2F (47 у десятковій системі). Знак долара виглядає як %24 (36 у десятковій дробі).

Що ж робити?

За словами Microsoft, реакцією Google на таку поведінку в інших довірених програмах – те, що можна назвати «ненавмисною зрадою» – було посилення коду обробки буфера обміну Android.

Імовірно, теоретично кращим рішенням було б зробити дозволи на доступ до буфера обміну набагато суворішими та більш обмежувальними, так само як і більш сувору перевірку додатків Play Store, але ми припускаємо, що на практиці ці відповіді вважалися надто нав’язливими.

Грубо кажучи, що новіша версія Android у вас є (або до якої ви можете оновитися), то більш обмеженим є керування буфером обміну.

Очевидно, в Android 10 і новіших версіях програма взагалі не може читати буфер обміну, якщо вона не працює активно на передньому плані.

Правда, це не дуже допомагає, але заважає програмам, які ви залишили бездіяльними або про які, можливо, навіть забули, постійно стежити за вашим копіюванням і вставленням.

Android 12 і пізніших версій з’являтиметься попередження про те, що «Додаток XYZ вставлено з буфера обміну», але, очевидно, це попередження з’являється лише під час першого запуску будь-якої програми (що може бути тоді, коли ви цього очікували), а не під час наступних захоплень буфера обміну. (коли ви цього не зробили).

А Android 13 час від часу автоматично стирає буфер обміну (ми не впевнені, як часто це насправді), щоб зупинити дані, про які ви могли забути лежати тут на невизначений час.

З огляду на те, що Google, очевидно, не має наміру контролювати доступ до буфера обміну настільки суворо, як ви могли сподіватися, ми повторимо тут пораду Microsoft, яка звучить так: «Якщо ви щось бачите, скажіть щось… і проголосуйте ногами, або хоча б пальці»:

Подумайте про видалення програм із неочікуваною поведінкою, як-от сповіщення про доступ до буфера обміну […], і повідомте про це постачальника або оператора магазину додатків.

Якщо у вас є парк корпоративних мобільних пристроїв, і ви ще не застосували певну форму керування мобільними пристроями та захисту від зловмисного програмного забезпечення, чому б не поглянути на що зараз пропонують?



Часова мітка:

Більше від Гола безпека