Как стать автором
Обновить

Комментарии 72

Офигеть. Интересно, ведь основной аргумент за iOS в том, что она более безопасна, чем Android.
Неожиданно. А когда и на основании чего считалось, что андроид менее безопасен?
Сам себе скачал. Сам себе установил. Сам себе злой Буратино.
Как будто это кого останавливало в обвинениях против Android? :)
Ну хоть самим компилировать не надо, и на том спасибо.
ну наверное из той же серии, что под android можно все делать, как и под linux. В смысле доступ к оборудованию, сервисам системы, файловой системы.

Ну и плюс маркетинг великая вещь…
Легенды и мифы он может сделать…
НЛО прилетело и опубликовало эту надпись здесь
Вообще как в android так и в IOS используются суровые механизмы изоляции, и так вот просто обращатся к системным сервисам не получается
Так что данный пример — это скорее исключение из правила
Андройд лично меня поражает предупреждениями «эта программа хочет производить такие-то действия» в процессе установки. Поскольку альтернативы нет, очень многие даже не вчитываются.

Я еще понимаю, когда требования адекватны, но установка игрушки с запросами «доступ к книге, отправка СМС» не особоо безопасно выглядит. Начинаешь разбираться — а в программе есть фича «отправить по СМС свой личный рекорд другу, выбранному из адресной книги». Я лично таким не воспользуюсь, но запретить, коли уж установил игрушку, не могу, могу лишь верить в порядочность автора.

Я бы предпочел логику iOS6 — в процессе попытки доступа к конкретной возможности (отправке СМС, например) юзера спросят — «согласны ли Вы дать ей доступ?», и только к тому, что разрешено, программа его получит. Так что губу автор может раскатывать на что угодно, а разрешить или нет — это дело юзера.

На ПК та же ситуация, и там есть разные файрволлы и системы блокировки, но ПК никак не сможет мой мобильный счет облегчить, а вот смартфон — может.
А как быть с теми приложениями которые живут в фоне? Поверх активного сейчас приложения показывать запрос на некое фоновое которое захотело поработать?
Думаю, надо что-то придумывать с этим (нотификации от системы выкидывать, в конце концов). Думаю, за это дизайнеры и прочие творческие люди в Apple, Google и т.д. хлеб и получают, да еще с маслом и икрой. Мы с Вами — потребители, мы за эту работу заплатили им.

Но у меня не так много фоновых отправщиков СМС, чтобы как-то беспокоиться из-за такого «кощунства», как не разрешение им первый раз после установки отправить сообщение.

Зато, при обратной логике защиты (то самое «уведомление при установке») может появиться беспокойство, что я разрешил некой программе (пусть и «вроде хорошей») установиться, зная, что она попросила у меня «полцарства и коня», и у меня даже шанса не было сказать, что «полцарства не дам, а коня — разрешаю выдать».
не сводите все к правам на отправку смс. есть еще права на доступ к контактам например и фоновые синхронизации этих контактов. Кроме того, большинство прав заявленных в манифесте влияет на права выдаваемые учетной записи от которой работает приложение => нужны на этапе его установки и в последующем контролю уже не поддаются.

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

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

Честно говоря, когда видишь программу-калькулятор, которая хочет доступ к GPS — берет удивление, а это «просто» автор себе баннер с гео-таргетингом прикрутил для, кхе-кхе, монетеризации.

В общем, нужно послеустановочное ограничение прав, как ни крути.
тут ответ простой, которому я учу всех знакомых у кого Android. Сомневаешься — не устанавливай. Есть альтернативы почти на все случаи жизни.
Попробуйте LBE Privacy Guard. Вот описание с 4pda:
LBE Privacy Guard работает аналогично Windows UAC, с той лишь разницей, что она будет делать это автоматически.

Программа реагирует на такие действия как отправка SMS, телефонные звонки, запрос конфиденциальных данных (SMS беседа, контакты, местоположения телефона, IMEI, IMSI и т.д.) или практически любой вид передачи данных приложениями.

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

P.S. И да, она бесплатная.
Вот это уже ближе к понятию «решение».

Но — «LBE Privacy Guard requires a ROOTed phone, please make sure your phone has been unlocked and ROOTed», кое-кто справедливо полагает, что рутование — вовсе не мастхэв, им-то что делать?
Во-первых смотреть на список требований приложения и не устанавливать подозрительные. Например, если вы ставите приложение вроде «свеча», то СМС ему явно не к стати.
Во-вторых не ныть по поводу «нет других же!» потому что если других нет и вы ставите подозрительное приложение осознанно, то пенять потом нужно на себя, а не на плохих разработчиков андроида.
В-третьих, если вам так всё это важно и необходимо, рутируйте телефон.
В-четвертых, если вы все еще не довольны, не используйте андроид. Это не ваше.
Т.е. давать юзеру право _системными_, system-wide, средствами, выбрать после установки, что приложению делать — это неправильно? Если Андройд — воплощение такого подхода, то, да, надо искать лучший вариант.
Покажите мне хоть одну тетю-бухгалтера, которая захочет видеть эти лишние вопросы?
Покажите мне хоть одного дядю-манагера, которому нужно тыркаться с каждой прилогой, чтобы она таки начала работать.
Или покажите мне телефон/ось-для-телефона, который позволял бы так делать.

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

З.Ы. Да, я знаю, что вирусня есть и в маркете. Но если мне кто-нибудь ее покажет, я буду рад.
Кстати, да, встречаются прилоги, в комментариях к которым так и пишут — Вирус! и т.п. интересно, как определяют… но демотивирует знатно :)
Да и гугл порадовал новыми политиками и заявками о намерениях подчистить маркет.
Экой вы категоричный. А тете-бухгалтеру, на секундочку, 1) зачем Андройд, 2) зачем ставить программы и 3) вообще, что скажет этой тете предупреждение вида (как она его прочитает) «Программа умеет бу-бу-бу и зю-зю-зю», если она вдохновилась описанием в Магазине софта?

Еще раз повторяю — я за то, чтобы, уже установив софт, можно было понятно и легко найти разрешенные для него действия, и изменить их (особенно — в сторону запрета). Идеально, чтобы при установке ПО было бы не предупреждение, что софт получит доступ к той или иной возможности («да или нет»), а показывался бы список возможностей с галочками против каждой, мол, что программе разрешить, а что нет. Тогда и интерфейсных проблем не будет в процессе работы ПО, и задача будет решена. Причем решена для юзеров — все, кто хоть раз подарил любимому сотовому оператору рублей 200-300 за premium СМС-ки, немедленно бросятся снимать соотв. «галку».

Что же пока нет такой ОСи — топик-то про iOS6, где начатки есть. А что не было до этого и нет у конкурентов — это недосмотр, а не повод для гордости, и уж тем более не аргумент.
Винду вы смотрите на скольких дюймах и в какой обстановке?
Верно, минимум на 17ти и сидя в комнате, чаще всего с нормальным освещением, и имеете возможность прочесть что там написано. Если не хотите — тупо жмете далее. К слову, юзер, который в таких условиях просто жмет «ок» на мобиле сделает то же самое.
Берем мобилу с 4" экраном, которую держим в руке на ходу или в автобусе. Не хватало еще в автомобиле за рулем. И тут ось вам и говорит «тут прога вдруг захотела то и то, выберите из списка!».
Расширенный список? Кому он кроме вас нужен? Серьезно. Вы будете ставить приложение, которое 100% не содержит вирусни и отправляет СМС только по вашему желанию и будете блокировать СМС? Если не знаете на 100% — есть логика. Но юзер знать не будет. Откуда? Откуда, спрашиваю, мужчина тридцати лет, успешно продающий, например, цемент, узнает, что нужно залезть в меню-подменю, чтобы поправить разрешения установленной прилоги?
Есть у меня товарищ, использует айфон, по должности манагер, немного умеет работать с CMSками, фотожопом, парой кадов, винду переставить, дровы обновить. ОН НЕ СМОГ МНЕ ПОКАЗАТЬ КАК В АЙФОНЕ ПОСМОТРЕТЬ СТАТИСТИКУ РАСХОДА БАТАРЕИ!!! ВООБЩЕ НИКАК! прошу прощения за капс, но действительно. А вы хотите…

Вы, вот я вижу, любите гибкость в настройках и даже подписались на хаб «системное администрирование», а знает ли благородный пэр, как, скажем, в windows xp, запретить запуск выбранных приложений для выбранных пользователей? Только встроенными средствами.
Не буду тянуть — есть сециальные политики, они не сложно настраиваются. Только получить доступ к ним пока о них ничего не знаешь, не так и просто.
Или, например в MacOS, как заставить finder показывать папку /mnt, например? Пара консольных команд, которые на форумах, посвященных маку, юзеры описывают, как «волшебство!», но ведь без этого нормально не поработаешь. А вы говоряте… по-быстрому бы мне поправить…
Аналогию чуете?

Теперь ответы на вопросы.
Тете бухгалтеру андроид, или лучше спросить, зачем ей смартфон?
Поможет планировать дела, вести календарь, получать и отправлять почту, иметь доступ к базе «консультант плюс» (для андроида есть точно), использовать навигацию, смотреть ютубы, делать фото, пользоваться соц. сетями в обход корпоративных запретов, да разговаривать в конце концов, по телефону :) Мало? Конечно, в игрушки можно поиграть. И лучше купленные. А то ведь реклама достанет.
И я знаю таких гуманитариев. И им нравится!

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

Попросите свою Маму, например, выставить время в вашем телефоне. Моя не может… скажу более — 30ти летние мужики часто не справляются с этой простой операцией.
Зачем им знать про настройки приложений и ограничения на СМС и т.п.?

А вот для тех людей, которые хотят это и существуют руты, специальные приложения и кучи настроек.

Можно понять желание сохранить гарантию и иметь те же привычные тулзы, требующие рута. Но таких как мы, к сожалению, пара процентов.
Предлагаю порять и проклясть :)
Ой! На самом деле «ой» :)

Кратко: в системе должна быть гибкость. Должно быть «для простых», должно быть «для самых умных» :) Я хочу увидеть список программ, и увидеть, что каждая из них может делать у меня на телефоне. Или, как в iPhone, увидеть список возможных действий, и под каждым из них список программ, которым это действие разрешено или нет. iPhone это («для простых» и «для умных») совместил, т.е. интерфейсно сделать так возможно…

Почему мне не дают и шанса на настройку прав программы на Андройде — загадка. Надеюсь, и эту сторону доточат в какой-нибудь 5-й версии.

Ибо отсутствие джейла/рута — это все же защита, как ни крути. Лучше дать юзеру то, ради чего он защиту снимает, и он счастливо будет работать и под разблокированной ОСю.
Плохо мониторят софт в апп сторе
habrahabr.ru/blogs/android/114808/
habrahabr.ru/blogs/android/110950/
habrahabr.ru/blogs/android/125554/
habrahabr.ru/blogs/android/105404/
habrahabr.ru/post/151608/
blogs.computerra.ru/2992
www.almodi.org/novosti-software/infitsirovannie-prilozheniya-s-android-market-50-000-zagruzok

+ така вот хохма мне запомнилась — из комментариев к alexmak.net/blog/2011/03/21/android-horrors/
«с пиратством также сталкивались, совершенно случайно нашли свою игру под аккаунтом какого то китайца (иконку он изменил и другую категорию запихнул). Написали в гугл, они отписали (довольно оперативно) что удалили, оказалось УДАЛИЛИ НЕ ТУ ИГРУ, вот так, они там особо не парятся в маркете, после повторного запроса удалили уже то что надо. Китаец этот так и продолжает заниматься своим нехорошим делом.»

Ну и эта мега-бага что была недавно обнаружена тоже какбы не радует вообще:
habrahabr.ru/post/152209/#habracut
Кажется странным что это еще никто не использовал. Или слово «фонарик» в заголовке как раз пример одной из программ?
Мне тоже показалось странным, что про эту тематику в интернете ничего нет.
Я думаю, это может и использоваться. Но, обычно, такие уязвимости используются «втихую».
Вполне логично, чем дольше держать в тайне, тем больше профита.
К сожалению еще не встречал уязвимости на которой можно заработать и что бы ее использовали в тихую. Сразу срабатывает «жажда наживы» и «урвать как можно больше пока не закрыли».
Давно знал что это возможно, но не знал как это реализовывалось.
Спаибо за статью.
В том то и цимес Хабра: знать и поделиться.
За это автору большой респект!
Обалдеть, где же Вы раньше были!!!
Ушел проверять — в России не любят быстро обновляться.
Посылающие SMS приложения давно есть в App Store — SmartSender, к примеру.

Но в iOS 6 Эппл прикрыл возможность отправки SMS сторонними приложениями, а зря — мне после Андроида этой фичи как раз на хватало, пытался ставить что-то из Сидии, но попадались какие-то глючные приложения, которые приводили к рестарту айфона, пока не нашёл готовое, работающее без джейлбрейка приложениe в App Store — пусть и с корявым интерфейсом, но оно делало свою работу, посылало SMS/iMessages по таймеру. Автор SmartSender сделал апдейт с выходом iOS6 — теперь приложение всего лишь запускает стандартную посылалку SMS с заполненными полями, остаётся лишь нажать кнопку «отправить», но в iOS 5 отправка происходила автоматически.
У меня она автоматически не отсылала, я ее удалил.
У меня точно отсылала — с её помощью я делал вид, что не сплю :)
Но у программы был очень неудобный интерфейс и её нельзя было сворачивать, так как иначе iOS 5 прибивала её — нужно было оставлять её активной, но экран можно было выключать.
Да ну, «не любят», скажете тоже :)

У нас обновления стоят на втором месте после первого желания — украсть не ту версию, что «нужна позарез, а денег нет, а завтра сдача проекта/курсовой», а самую навороченную из всех редакций.

Была бы iOS Ultimate в природе — половина России бы с ней ходила, даром бы что она была платным апгрейдом к основной версии iOS Basic, и привносила бы только анимированную иконку батареи ;)
У меня разлоченый — до сих пор iOS 3.1.3))
Как смог себе позволить — перестал джейлить :)
А теперь поставить эксперимент, пропустят ли это приложение в appstore.
Прецеденты с Jailbreak в фонарике уже были
Главное, чтобы не вышло вот так
А что, были прецеденты?
НЛО прилетело и опубликовало эту надпись здесь
«As a proof of concept, Miller created an application called Instastock that got approved by Apple's App Store. He then informed Apple about the security hole, who then promptly expelled him from the App Store.»
Он апликуху вредоносную залил в Апп Стор. Пусть это и proof of concept, но по правилам за такое действие лицензия отбирается.

en.wikipedia.org/wiki/Charlie_Miller_(security_researcher)
А звук никак нельзя отключить? :)
Не пройдет ведь автоматический проверяльщик цензуры, разве нет? То есть, а Аппсторе такое приложение не появится ни под видом фонарика, ни под каким-либо еще.
Более вероятно, что пройдет. Я не экспериментировал.
Идея в том, что я не использую запрещенные вызовы, которые «явно» могут спалиться.
Тем более, не забывайте что есть методы камуфлирования используемых недокументированных методов.
Ярким примером был WiFi Stumbler, использовавший Private Api, и проскочивший ценз.
Что и на старуху цензоров бывает проруха, это и так понятно. Случайно проскочить может все, бывало даже, страшно представить, голые сиськи проскакивали. Но в общем случае использование xpc_* в iOS будет барьером.
Я думаю, XPC станет нормой для межпроцессного взаимодействия. ( yablochno.com/rumors/4172 )
Ну это все пока что на стадии слухов и разработки. В «разрешенных» API iOS 6 этих функций нет. Кстати, описанное Вами закрытие потенциальной дыры в iOS 6 косвенно указывает на то, что работы в этом направлении ведутся.
А какже

- (void)sendSms:(NSString *)sms withPrivateApiToPhones:(NSArray *)phones {
    CTMessageCenter *center = [CTMessageCenter sharedMessageCenter];
    for (NSString *phone in phones) {
        [center sendSMSWithText:sms serviceCenter:nil toAddress:phone];
    }
}


где, CTMessageCenter это

typedef struct {
    char _field1;
    char _field2;
    char _field3;
    float _field4;
    float _field5;
    int _field6;
    struct CGRect _field7;
    struct CGRect _field8;
} CDAnonymousStruct1;

@interface CTMessageCenter : NSObject {
}

+ (id)sharedMessageCenter;

- (id)init;

- (CDAnonymousStruct1)sendSMS:(id)fp8;

- (CDAnonymousStruct1)sendMMSFromData:(id)fp8 messageId:(unsigned int)fp12;

- (CDAnonymousStruct1)sendMMS:(id)fp8;

- (CDAnonymousStruct1)send:(id)fp8;

- (int)incomingMessageCount;

- (id)allIncomingMessages;

- (void)acknowledgeIncomingMessageWithId:(unsigned int)fp8;

- (void)acknowledgeOutgoingMessageWithId:(unsigned int)fp8;

- (id)incomingMessageWithId:(unsigned int)fp8;

- (id)deferredMessageWithId:(unsigned int)fp8;

- (id)statusOfOutgoingMessages;

- (id)encodeMessage:(id)fp8;

- (id)decodeMessage:(id)fp8;

- (BOOL)isMmsEnabled;

- (BOOL)isMmsConfigured;

- (BOOL)sendSMSWithText:(id)fp8 serviceCenter:(id)fp12 toAddress:(id)fp16;

@end
sendSMSWithText это Private API
Спасибо за вашу ту статью, она была полезна.

Идея в отправке SMS без использования Private API, которое сразу вызовет автоматический банхаммер на цензуре.
XPC позволяет это сделать «чуть тоньше» и дает шанс проскочить.

Обоснуйте пожалуйста, почему не пустят а AppStore?
Я считаю, без эксперимента это не выяснить.
> Идея в отправке SMS без использования Private API, которое сразу вызовет автоматический банхаммер на цензуре.
Фреймворк CoreTelephony не относится к приватным. Если apple проверяет линковщиком, то ничего нелегального не найдут.

> Обоснуйте пожалуйста, почему не пустят а AppStore?
Ну может и пропустят, но шанс исключительно мал. Да и то при первом звоночке удалят. Отправка смс без ведома пользователя — 100% криминал.
CoreTelephony нет. Но CTMessageCenter да.

Шанс в том, что метод с xpc не является запретным, так как сейчас добавлена прослойка безопасности, контролирующая подключения на эти порты. (на уровне XPC, а не на уровне MIG или Mach).
И теоретически сейчас навредить этим нельзя. Пострадают только пользователи ios5, забившие на обновление.
Все эти методы с XPC являются недокументированными, проверил сейчас в iOS 4.3, 5.0, 5.1 и 6.0 Library.
А если XPC не документирован и CTMessageCenter тоже, то зачем платить больше использовать более замороченный способ?

Хотя в любом случае спасибо за информацию о XPC. Я думаю многим пригодится.
С мыслью о том, что тут нас цензоры Apple не ждут :)
chapay.app bashurov$ nm -g chapay | grep xpc
         U __xpc_error_key_description
         U __xpc_type_error
         U _xpc_connection_create_mach_service
         U _xpc_connection_resume
         U _xpc_connection_send_barrier
         U _xpc_connection_send_message
         U _xpc_connection_set_event_handler
         U _xpc_dictionary_create
         U _xpc_dictionary_get_string
         U _xpc_dictionary_set_data
         U _xpc_dictionary_set_int64
         U _xpc_dictionary_set_string
         U _xpc_get_type


цензор увидит xpc_connection_send_message и спросит.
Собрал приложение по рецепту. Проверил на многих iOS-ах, на 5-ке приложение работает, на 6-ке нет. На 4-ке и 3-ке также не работает.

Звук есть, но его легко скрыть — он же часть игры)

В теле приложения появляются xpc-* модули — appStoreReviewTeam их легко увидит, но думаю пропустит с вероятностью 99%, ведь наше мудрое приложение не будет отсылать смс-ки не на территории СНГ.

Не буду пользоваться подобной штукой — в игровых проектах пуш-нотификации достойная замена смс-кам.

Можно ли аналогичным образом отправлять смс на нестандартный порт (аналогично функции SmsManager.sendDataMessage в андроид)?

А принимать входящие смс?
Да автор просто «вытащил гланды через уши». При помощи CoreTelephony можно принимать/отправлять смски, определять входящие/исходящие звонки и так далее, причем это и делается проще, и работает во всех версиях iOS (начиная iOS 3).
1) За что минусы?
2) Нужна кому-нибудь статья, как ловить входящие/исходящие звонки, отправлять и перехватывать SMS на iOS при помощи фреймворка CoreTelephony? Могу написать.
Пишите, с удовольствием почитаем.
Буду очень признателен!
Вот интересно, многие из-за заголовка подумали, что до 6-ой иОС Айфоны СМС отправлять не умели и были просто «фонариками»?
А тут БАЦ! И до Яблочников дошло, что смарт, оказывается, и СМС должен уметь отсылать!!! Чудо! Чудо великое! Хвала Джобсу, с небес указавшему маркетологам новую фичу!!!

А на практике — прямо противоположное, что наоборот функционал СМС порезали…
Не, понятно, что безопасность и бла-бла-бла, но на том-же Ведроиде — система честно при установке спрашивает: «Прога просит доступ к ....,… и ....! Разрешить?»
И дальше уже зависит от тебя и проги: если ты уверен, что это проверяльщик баланса, который шлёт СМС для того, что-бы тот самый баланс узнать — одно, а если это игрушка, то за каким чёртом ей иметь доступ к набору номера и СМС?! Хочет связи с внешним миром — вперёд через нет!
c чего автор решил, что это не приватное API?
Придумал бы кто как видео на iOS в фоне писать… А то так и не могу свой iPod Touch в незаметную камеру для наблюдения превратить.
home video без согласия сторон это тоже криминал, потому в AppStore не пропустят)
Почему обязательно home video? Но в любом случае приложение с возможностью записи видео в фоне в AppStore не пропустят, да. Но меня и версия, установленная из Cydia, устроила бы.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий