LINUX.ORG.RU

> порочности концепции абсолютного доверия к приложениям, полученным через Android App Market. В качестве примера он выложил там безобидное на вид приложение, которое, однако, периодически обращается на специальные сервера, запрашивая обновления своего кода. При наличии таких обновлений, они автоматически скачиваются и запускаются.

Такое возможно на андроеде? Нет пути!

DerKetzer
()

скоро каспер будет продавать девелоперам андроид маркета сертификаты «проверено - мин нет!»

VladimirMalyk ★★★★★
()
Ответ на: комментарий от VladimirMalyk

СЕЛинукс будут к йадрам прикручивать.

ppiter
() автор топика
Ответ на: комментарий от ppiter

Я с чего-то не представляю как без прав рута приложение вдруг начинает само обновляться с каких-то непонятных серверов.

DerKetzer
()
Ответ на: комментарий от DerKetzer

> Я с чего-то не представляю как без прав рута приложение вдруг начинает само обновляться с каких-то непонятных серверов.

При установке приложение спрашивает разрешение на доступ к интернету (а так-же к контактам и возможности записи на диск) и если пользователь разрешил, то \ldots.

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

> а так-же к контактам и возможности записи на диск

возможности записи на диск

Ему в любое место диска что-ли разрешается записывать? Тогда это EPIC FAIL.

А так же оно спрашивает права на выполнение произвольного кода от имени другого пользователя?

DerKetzer
()
Ответ на: комментарий от DerKetzer

> Ему в любое место диска что-ли разрешается записывать?

Очевидно нет - для сохранения настроек и данных.

Проблема с программами с маркета в том, что некоторые из полезных на первый взгляд приложений, хотят показывать рекламу и как следствие хотят доступ к интернету.

Evgueni ★★★★★
()
Ответ на: комментарий от DerKetzer

>Ему в любое место диска что-ли разрешается записывать?

нет естесно...

А так же оно спрашивает права на выполнение произвольного кода от имени другого пользователя?


на рутованных терминалах обычно через superuser - всплывает такое окошко с запросом на эту тему

sS ★★★★★
()

Теперь надо для симметрии сделать это на айпаде и iOS4

AP ★★★★★
()
Ответ на: комментарий от DerKetzer

>Я с чего-то не представляю как без прав рута приложение вдруг начинает само обновляться с каких-то непонятных серверов.

Ну, про то приложение не знаю, но вообще-то ему не обязательно иметь права рута. Доступ на запись хоть куда-то у него же есть? Может быть, оно и не затирает старого кода, а просто загрузчик динамически подгружает новый вместо старого.

proud_anon ★★★★★
()
Ответ на: комментарий от DerKetzer

Пускай тогда теперь раскрутит свое безобидное приложение, чтобы его установило хотябы тыщ десять пользователей - тогда и про ботнет можно будет говорить. В общем, опять все пользователю нужно все делать руками - самому искать вирус, самому устанавливать, самому запускать..., а тут даже rm -fr нормально не запустится - прав рута нету. Помимо того, чтобы это приложение делало что-то полезное (а иначе его удалят сразу после установки и влепят одну звезду на маркет, чтобы другим неповадно было), его еще и раскручивать нужно (тоже не бесплатно).. как-то слишком много усилий для простого ботнета.

Кроме того, скачивать обновление оно автоматом сможет, а вот установить - ничего не получится - в лучшем случае сможет выдать пользователю диалог с предложением обновиться (но зачем это делать не очень понятно - маркет сам следит за тем, чтобы уведомлять пользователя о новых версиях установленных приложений).

bender ★★★★★
()
Ответ на: комментарий от bender

А зачем ботнету делать что-то вредоносное для пользователя? он же не тупой вирус, который срёт где живёт, а так, какую-нибудь хрень посчитать, спаму малёха разослать, порнухи юзеру закинуть, самый ништяк же.

А если прилада замаскирована под что-то реально полезное, хрен кто догадается.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от proud_anon

Доступ на запись есть у каждого приложения в свой личный каталог на специальный раздел с данными (в каталоги соседних программ писать нельзя) и полный доступ на запись на SD-карту. Никакие системные файлы программа втихаря подменить не может.

bender ★★★★★
()
Ответ на: комментарий от proud_anon

>Ну, про то приложение не знаю, но вообще-то ему не обязательно иметь права рута. Доступ на запись хоть куда-то у него же есть? Может быть, оно и не затирает старого кода, а просто загрузчик динамически подгружает новый вместо старого.

Вы пермишены на /data/app (и не только) в андроиде видели ?

Вы таки посмотрите на них прежде чем насыщать лужи метаном :)

sS ★★★★★
()
Ответ на: комментарий от Dark_SavanT

>А если прилада замаскирована под что-то реально полезное, хрен кто догадается

Чтобы написать полезную программу и раскрутить ее на маркете тоже требуется приложить некоторое количество времени и усилий - если добиться этой цели, то как-то жалко будет их все гробить, заражая раскрученную программку глупым зловредом причем добровольно, и при этом понимая, что вся сеть накроется вместе с программой за один миг сразу после того, как кто-то про нее узнает. Адоб тоже может в фотошоп встроить какой-нибудь кейлогер, который будет отправлять на их серверы пароли от кредиток - вопрос - нужно ли это адобу :)

bender ★★★★★
()
Ответ на: комментарий от bender

>Никакие системные файлы программа втихаря подменить не может

А есть ли у приложения возможность в памяти, в собственном адресном пространстве и с собственными правами выполнить произвольный код? В спецификациях JVM есть такой механизм, но есть ли аналоги в Dalvik?

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

смотря что имеется ввиду под произвольным кодом - само по себе приложение уже является произвольным кодом - значит возможность полюбому есть :)

а вообще для каждого приложения в системе автоматически создается специальный пользователь и дальше разграничение прав на запись разруливается стандартными линуксовыми механизмами (представь, что на обычном десктопе для программы firefox был доступен на запись только каталог /home/firefox, для программы opera только каталог /home/opera, для vlc - /home/vlc и т.п.). Стандартным способом обойти эти ограничения невозможно - наверное только если найдешь уязвимость в ядре типа локального рута, ну и в общем в этой статье речь совершенно не об этих механизмах.

bender ★★★★★
()
Ответ на: комментарий от bender

>смотря что имеется ввиду под произвольным кодом

Я имел в виду код, который не записан на диск в /dev/apps или еще куда и не загружается, таким образом, загрузчиком классов из файла. Содержится в приложении, но не является частью класса, не помечен как исполняемый и проч. Или считывается приложением из файла в каталоге с данными приложения. Или скачивается из Интернета.

Словом, можно ли «выполнить данные»?

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

>Или считывается приложением из файла в каталоге с данными приложения.

System.loadLibrary() и исполняй хоть до посинения.

sS ★★★★★
()
Ответ на: комментарий от proud_anon

Ты их выполнишь только с правами своей собственной программы - стоящий рядом почтовый клиент ты выполнять свои личные данные не заставишь и чужую переписку таким «трояном» не прочитаешь. А так хоть и без системных библиотек - встрой к себе в программу интерпретатор баша и подгружай в него втихаря скрипты из интернета... но зачем

bender ★★★★★
()
Ответ на: комментарий от sS

>System.loadLibrary()

То есть, также как в стандартной JVM?
Ну тогда нет большой хитрости в том, чтобы через такой костыль реализовать самостоятельное обновление приложения или скачивать новый код.

proud_anon ★★★★★
()
Ответ на: комментарий от bender

>но зачем

Ну, начали мы с того, как на Андроиде могут приложения сами по себе обновляться и как приложение на Андроиде может скачать из Интернета и исполнить какой-нибудь код.

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

>самостоятельное обновление приложения или скачивать новый код.

Вы таки посмотрите с какими пермишинами хранится *.apk (ну или *.dex)

hint: попробуй чего нибудь «обновить» системного в линуксе без рута

sS ★★★★★
()
Ответ на: комментарий от proud_anon

>Ну, начали мы с того, как на Андроиде могут приложения сами по себе обновляться

Не могут.

sS ★★★★★
()
Ответ на: комментарий от proud_anon

приложение само по себе обновиться не может - загрузка левых скриптов из интернета обновлением не считается. произвольный код со своими правами оно может выполнить по определению - да зачем еще что-то качать, когда можно выполнить просто сразу. не вижу проблемы.

bender ★★★★★
()
Ответ на: комментарий от sS

>Вы таки посмотрите с какими пермишинами хранится *.apk (ну или *.dex)

Я-таки до сих пор не понимаю, чем права рута мешают сделать следующее, если то, что ты сам мне говорил, верно:

1.Запускаемся.
2.Если у нас нет обновлений в каталоге с данными, то ыполняемся нормальным способом.
3.Если есть обновления, то загружаем обновленные классы в память и исполняем их вместо себя.
4.Когда на сервере появляются обновления, скачиваем их и с того момента запускаем их вместо себя. Неиспользуемый код так и лежит на устройстве.
5.???
6.ПРОФИТ!

Или еще проще, хотя и тормознее, на случай, если вышеприведенная схема не работает:

1.Логика приложения основана на сценариях на собственном интерпретируемом языке.
2.Которые можно подгружать из Интернета и исполнять.

(AKA упомянутый выше «интерпретатор bash»)

hint: попробуй чего нибудь «обновить» системного в линуксе без рута


Легко.

/usr/bin/runmyprogram.sh:
wget http://myserver.org/runmyprogram.sh -O $HOME/runmyprogram.sh
bash $HOME/runmyprogram.sh

proud_anon ★★★★★
()
Ответ на: комментарий от bender

>загрузка левых скриптов из интернета обновлением не считается

Почему? С точки зрения системы, может, и не считается, но достичь цели — заставить приложение работать по-другому — позволяет. Не об этом ли, собственно, спич шел?

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

может скачать из Интернета и исполнить какой-нибудь код

Нет.

# ls -l /data/data/com.twitter.android
drwxrwx--x    2 10071    10071         4096 Jun 23 17:35 databases
drwxrwx--x    2 10071    10071         4096 Jun 17 12:01 files
drwxr-xr-x    2 1000     1000          4096 Jun 16 08:54 lib
drwxrwx--x    2 10071    10071         4096 Jun 23 17:35 shared_prefs
# su app_71
$ touch /data/data/com.twitter.android/lib/fakelib.so
touch: /data/data/com.twitter.android/lib/fakelib.so: Permission denied
sS ★★★★★
()
Ответ на: комментарий от bender

proud_anon имел ввиду следующую схему: в маркет аппрувится нормальное приложение без бэкдоров и прочих радостей. Во время установки оно просит права на доступ в интернет, к контактам, звонкам и т. п. Затем идет в интернет, скачивает зловредный код, выполняет его со своими правами. Отличная возможность как минимум рассылать спам. Ну а остальное зависит от данных прав и фантазии автора. Диалеры 2 =)

DerKetzer
()
Ответ на: комментарий от sS

>>может скачать из Интернета и исполнить какой-нибудь код

Нет.


Ты ж сам сказал, что может.

System.loadLibrary() и исполняй хоть до посинения.


Кроме того, не нужно даже нативных библиотек, достаточно загрузки классов (loadClass, defineClass...)

touch: /data/data/com.twitter.android/lib/fakelib.so: Permission denied


И почему ты не смог этого сделать?

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

>hint: попробуй чего нибудь «обновить» *системного* в линуксе без рута

Легко.



/usr/bin/runmyprogram.sh:

wget http://myserver.org/runmyprogram.sh -O $HOME/runmyprogram.sh


bash $HOME/runmyprogram.sh




И чего ты «обновил» ? Порцию метана в луже ? :)


sS ★★★★★
()
Ответ на: комментарий от proud_anon

>Ты ж сам сказал, что может.

Я сказал что можно ИСПОЛНИТЬ практически любой нативный код

И почему ты не смог этого сделать?


Еще раз. Смотри на пермишины.

sS ★★★★★
()
Ответ на: комментарий от sS

> touch: /data/data/com.twitter.android/lib/fakelib.so: Permission denied

У приложения же есть доступ на запись в каталог с данными? Вот туда оно и запишет скачанный зловред. И даже права на выполнение ему будут не нужны (если предположить, что каталог с данными монтируется с noexec), я так понимаю?

DerKetzer
()
Ответ на: комментарий от sS

>И чего ты «обновил» ? Порцию метана в луже ? :)

По-моему, DerKetzer уже объяснил, что «обновляется» и зачем.

Еще раз. Смотри на пермишины.


Ну хорошо, почему же нельзя записать fakelib.so в databases, files или shared_prefs?

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

>Я-таки до сих пор не понимаю, чем права рута мешают сделать следующее

Тем что их просто так нет. Всё то же самое как и в линуксе без рута

Нет рута - пакетный менеджер не обновит ничего.

sS ★★★★★
()
Ответ на: комментарий от sS

> Нет рута - пакетный менеджер не обновит ничего.

Причем здесь пакетный менеджер?

System.loadLibrary()

Я просто не подозревал, что в андроеде такое решето пропустили.

DerKetzer
()
Ответ на: комментарий от sS

>Нет рута - пакетный менеджер не обновит ничего.

МНЕ НЕ НУЖЕН ПАКЕТНЫЙ МЕНЕДЖЕР ВАААПЩЕЕЕЕЕ!!!!11111
И мне не нужно никак сообщать системе, что я что-либо обновил.

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

>Ну хорошо, почему же нельзя записать fakelib.so в databases, files или shared_prefs?

Потому что это уже не «подмена»

Поправочка: System.loadLibrаry() грузит библилтеку из дефолтового каталога который создаётся от system, для произвольного файла надо использовать System.load() но всё равно я профита от этого не вижу

sS ★★★★★
()
Ответ на: комментарий от DerKetzer

>Я просто не подозревал, что в андроеде такое решето пропустили

Ну напиши чо нить :))

sS ★★★★★
()
Ответ на: комментарий от DerKetzer

Я просто не подозревал, что в андроеде такое решето пропустили.

Ну так чего же ты ждешь!

Вперед создавать ботнеты, а мы посмотрим

Kosyak ★★★★
()
Ответ на: комментарий от DerKetzer

на платформе андроид найдена серьезная уязвимость - она позволяет скачивать произвольный код из интернета и запускать его на уязвимой системе. на данный момент основным хранилищем произвольного кода в сети был признан андроид-маркет :)

bender ★★★★★
()
Ответ на: комментарий от DerKetzer

Не представляю способа, который мог бы проверить бинарный исполняемый файл на зловредный код без наличия доступа к исходникам. Насколько я знаю, у эппла есть некий набор требований, которым должно соответствовать приложение (например не вызывать закрытые API) - как они смогут проверить по бинарнику, что проверяемый с виду вполне нормальный почтовый клиент в 7:30 утра 29го ноября 2010 года не скачает себе из интернета маленький текстовый файл со списком адресов и не начнет рассылать по нему спам пока на железке балланс не закончится? Да никак - проверяй - не проверяй - такого рода уязвимости отловить невозможно - и никакие левые танцы с загрузкой библиотек тут не нужны - только время лишнее тратить.

Еще раз - уязвимость - это когда программа начинает делать на целевой железке то, что она в принципе делать не должна (например заражать файлы и переползать втихаря на соседнюю железку да так, что хозяин соседней железки про это не узнает). Если есть доступ в интернет, то рассылка спама из программы, которой доступ в инет разрешен, - вполне штатная ситуация.

bender ★★★★★
()
Ответ на: комментарий от bender

>Не представляю способа, который мог бы проверить бинарный исполняемый файл на зловредный код без наличия доступа к исходникам

и наличие исходников на самом деле тоже сильно делу бы не помогло (самый известный пример - знаменитый однострочник на перле, и недавний свежий на баше). Если бы такой способ был, то касперу и прочим антивирусам никакие базы вирусных трупиков вообще бы не были нужны - они бы просто сканировали скачанный бинарник и решали, сможет он сделать что-то плохое или нет - просто так - по заранее определенному алгоритму. И весь этот спор про обновления и про возможность протащить на систему зловредный код, которого раньше там типа не было не имеет никакого смысла - я за 10 минут напишу такую программу, которая этот зловредный код будет содержать изначально и никакая экспертиза его не найдет и никакие обновления через интернет моей программе не понадобятся. Единственная ситуация, в которой бы тихое обновление несло угрозу - это если новая версия добавляет себе больше прав, чем было изначально установлено (например добавлено разрешение на доступ в инет, которого раньше не было) - как уже неоднократно разжевали, такая схема на андроиде невозможна.

Все эти проверки приложений нужны эплу, чтобы не пускать на маркет прямых конкурентов - типа оперы мобайл и флеша - на 100% пользователей защитить они не смогут по определению, разве только от совсем неприкрытого наглейшего развода. А вся эта шумиха с этими якобы «уязвимостями» в андроиде очень сильно похожа на заказуху, причем рассчитанную на людей, далеких от айти, при этом за неимением реальных проблем пришлось высасывать их из пальца.

bender ★★★★★
()
Ответ на: комментарий от bender

при этом за неимением реальных проблем пришлось высасывать их из пальца.

Евгений Касперский буквально года два назад обнаружил «вирус», написанный на J2ME, который требовал от пользователя разрешить ему доступ к SMS и в Сеть непойми зачем. Пользователи соглашались на требования запущенной программы и попадали на кругленькую сумму «оказания услуг по SMS». Вопрос: кто виноват, пользователь, разрешивший программе отсылку SMS, или «вирус», как всегда, остался за кадром. :))

(Вот такие вот они эти албанские вирусы страааашные)

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

с этим в общем согласен - идея отправить смс на 600 руб просто при старте приложения приходила в голову. только если я захочу ее реально осуществить, никакая дополнительная проверка мне не помешает (отмазку для необходимости разрешения отправки смс придумать на раз-два - у меня альтернативная телефонная книга). проблема подобного характера сформулирована выше - «уязвимое устройство позволяет выполнять произвольный код, скачанный из интернета» и конкретно к платформе андроид не относится и в принципе технической сложностью назвать ее тоже нельзя - на этой мине подорвется человек 10, максимум 100 (причем _добровольно_ нажав на все предупреждающие ОК) - после этого лавочка прикрывается даже без вмешательства административного ресурса - паршивую программу заминусуют, а особенности ее работы красочно распишут в комментариях.

bender ★★★★★
()
Ответ на: комментарий от bender

«Можно кинуть один раз по-крупному, либо много раз, но по-мелочи». Зловред может сидеть себе, выполнять добрые дела, но раз в полнолуние, рассылать спам по адресам из книги, слать смс на короткий номер рублей за 20-30 и т.п. Главное чтобы его как можно дольше не пропалили. Если софтина делает дела редко и нерегулярно, то если нет способа отследить какое приложение что сделало, можно засесть надолго

Dark_SavanT ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.