...
to Secretly Install Spyware On Phones
According to an advisory published by Facebook, a buffer overflow vulnerability in WhatsApp VOIP stack allows remote attackers to execute arbitrary code on target phones by sending a specially crafted series of SRTCP packets.
Apparently, the vulnerability, identified as CVE-2019-3568, can successfully be exploited to install the spyware and steal data from a targeted Android phone or iPhone by merely placing a WhatsApp call, e ven when the call is not answered.
Also, the victim would not be able to find out about the intrusion afterward as the spyware erases the incoming call information from the logs to operate stealthily.
IID>...to Secretly Install Spyware On Phones
миллиард установок из Гуглплэя
Здравствуйте, bzig, Вы писали:
IID>>Android phone or iPhone
B>Раз обе платформы, значит или библиотека (тогда и декстопы должны) или эти мудофилы в мессенджере свой скриптовый язычок запилили стихаря, к которому доступ получили хакеры?
specially crafted series of SRTCP packets.
Вангую ошибку в парсере.
Гипотеза: Десктоп может быть неуязвим к RCE из-за особенностей систем команд ARM/x86.
Пример подобного различия:
void some_function(struct* evil) {
...
protection_off();
evil->callback();
protection_on();
another_code: // может быть и внутри другой функции, с совместимым прологом.
...
}
В случае ARM можно подменить указатель внутри evil, чтобы вызов callback привёл к прыжку на another_code. BL[X] не трогает стек (в отличие от CALL на x86), а регистр возврата LR будет штатным образом восстановлен при выходе из функции.
В случае x86 стек будет разбалансирован => падение.
Пример из реальной эксплуатации уязвимостей на ARM, но как сделано в данном случае — я не знаю
Есть и обратные примеры. На ARM доступ к коду/данным должен быть выровнен.
Поэтому:
— в x86 можно портить указатель с менее жёсткими ограничениями.
— в x86 можно "прыгать" внутрь существующих инструкций, и они отработают совсем по-другому.
— в x86 есть абсолютная адресация, в ARM только относительная
— в x86 можно загрузить любую константу непосредственно в регистр. В ARM только ограниченный набор значений, остальные должны грузиться из памяти, с помощью косвенной адресации (обычно относительно PC).