Comments 46
А еще можно показать UILocalNotification с большим количеством неправильно порезанных Emoji. Убивает SpringBoard.
+5
Как это? Можете привести код, или пояснить?
0
NSString *str = @"\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603\U0001F603";
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10.0];
notification.alertBody = [str substringToIndex:39];
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
Если такое сработает пока приложение в фоне — SpringBoard уходит перегружаться. 39 — случайно взятое значение.
+8
Уязвимость в том что вы воспользовались private api?
>>Более того, мне удалось воспроизвести этот баг и без использования недокументированных вызовов.
ну а где пример? я вот не верю
>>Это означает что высока вероятность, что приложения, вызывающие перезагрузку SpringBoard (в том числе и аварийное завершение всех других приложений) могут без особых проблем пройти App Review и попасть в AppStore.
вероятность как раз крайне мала
>>Более того, мне удалось воспроизвести этот баг и без использования недокументированных вызовов.
ну а где пример? я вот не верю
>>Это означает что высока вероятность, что приложения, вызывающие перезагрузку SpringBoard (в том числе и аварийное завершение всех других приложений) могут без особых проблем пройти App Review и попасть в AppStore.
вероятность как раз крайне мала
-15
Добавил обновление к посту.
+2
Уязвимость в том, что этим private api может воспользоваться «злоумышленник», а не в том, что разработчик сам наступит на свои же грабли.
+1
ну так злоумышленник может и сам респринг напрямую через private api дернуть без всяких костылей.
-2
Ну так расскажите нам, как вы будете делать «респринг напрямую через private api», причем на телефоне без jailbreak :-)
0
Private api можно и без джейла использовать, другое дело, что в AppStore это не пропустят.
Можете попробовать
К сожалению, у меня сейчас нет не джеилбрейкнутого подписанного девайса под рукой, что бы потестить, но в симуляторе и на джейленом девайсе работает.
Можете попробовать
system([@"killall -HUP SpringBoard" cStringUsingEncoding:NSUTF8StringEncoding]);
К сожалению, у меня сейчас нет не джеилбрейкнутого подписанного девайса под рукой, что бы потестить, но в симуляторе и на джейленом девайсе работает.
0
Нагуглил, что после 4.2 этот способ уже не работает. Но в целом, в iOS очень много вещей можно сделать с помощью objc/runtime.h, надо только знать куда постучать.
0
А вот и хедеры github.com/Bensge/iOS-6-SpringBoard-Headers
0
> Private api можно и без джейла использовать, другое дело, что в AppStore это не пропустят.
> Но в целом, в iOS очень много вещей можно сделать с помощью objc/runtime.h, надо только знать куда постучать.
> А вот и хедеры github.com/Bensge/iOS-6-SpringBoard-Headers
Так интересно! Расскажите мне об этом побольше, пожалуйста!
> ну так злоумышленник может и сам респринг напрямую через private api дернуть без всяких костылей.
>> Ну так расскажите нам, как вы будете делать «респринг напрямую через private api», причем на телефоне без jailbreak :-)
Ну и где?
> Но в целом, в iOS очень много вещей можно сделать с помощью objc/runtime.h, надо только знать куда постучать.
> А вот и хедеры github.com/Bensge/iOS-6-SpringBoard-Headers
Так интересно! Расскажите мне об этом побольше, пожалуйста!
> ну так злоумышленник может и сам респринг напрямую через private api дернуть без всяких костылей.
>> Ну так расскажите нам, как вы будете делать «респринг напрямую через private api», причем на телефоне без jailbreak :-)
Ну и где?
0
А где ссылка на bug-report в Apple?
0
«при Джобсе такой фигни не было» А iPhone 4 не при Джобсе вышел разве?
-8
Это такая довольно известная шуточная фраза, если что.
+11
Вероятность того что приложение пройдет в AppStore не так велика как может показаться. Я слышал что ревью-команды используют много автоматики для тестов. Если приложение будет падать при каких-то условиях, это, поидее заметят.
+4
Это ж какую автоматику надо запустить. Миллионы юзкейсов… Хотя с другой стороны тогда понятно, почему они по две недели проверяют простейшие игрушки ))
0
Ну они не клацают приложение. Я думаю есть какие-то анализаторы скомпилированого кода.
0
Ревью длится от 10 минут до нескольких часов.
2 недели вы стоите в очереди.
Да и сейчас это от 4 до 5 дней примерно.
2 недели вы стоите в очереди.
Да и сейчас это от 4 до 5 дней примерно.
+3
Очень даже могут пропустить. Особенно если сначала выпустить простую рабочую версию, а потом выкатить незначительный апдейт с этим багом. Тогда высока вероятность, что пройдет. Apple не будет тестировать все вдоль и поперек, если в игре, например, трудновоспроизводимый баг, Apple не будет тратить ресурсы, чтобы это выловить.
С другой стороны, этот код просто перезапускает SpringBoard, где уязвимость то?
Самое худшее что может случиться — пользователи опустят рейтинг ниже некуда и приложение вообще никто не будет качать. Как именно этот креш позволяет угнать личные данные или что-то еще?
С другой стороны, этот код просто перезапускает SpringBoard, где уязвимость то?
Самое худшее что может случиться — пользователи опустят рейтинг ниже некуда и приложение вообще никто не будет качать. Как именно этот креш позволяет угнать личные данные или что-то еще?
+4
Наш программист собрал, запустил, спрингборд успешно ушел в рестарт.
+6
У вас слишком громкий заголовок — вместо iOS надо было Springboard написать.
+12
А какая версия iOS?
0
UFO just landed and posted this here
«Подумаешь, из-за какой-то кривой программулины (запущенной от обычного юзера, не от админа), Винда падает — удалю прогу и дело с концом. Большое дело....»
+2
UFO just landed and posted this here
>И я не расстраиваюсь, ибо это — не проблема платформы.
То, что левое приложение перезагружает SpringBoard, что приводит к нарушению работы других приложений — «не проблема платформы»? Ну-ну…
Я ведь не зря привёл аналогию с Виндой — все ваши аргументы можно просто брать и переносить без изменения:
>Все серьезные разработчики, уважающие себя и своих пользователей, не станут эксплуатировать несовершенство самой платформы.
Т.е. наличие малвари под Винду — «не проблема платформы»? Ведь «все серьезные разработчики, уважающие себя и своих пользователей, не станут эксплуатировать несовершенство самой платформы»?
>Такие выходки обычно позволяют себе третьесортные приложения от третьесортных же разработчиков.
С этим трудно спорить. Но виновата в первую очередь платформа, позволяющая такие выходки. Хоть в случае Винды, хоть в случае iOS.
То, что левое приложение перезагружает SpringBoard, что приводит к нарушению работы других приложений — «не проблема платформы»? Ну-ну…
Я ведь не зря привёл аналогию с Виндой — все ваши аргументы можно просто брать и переносить без изменения:
>Все серьезные разработчики, уважающие себя и своих пользователей, не станут эксплуатировать несовершенство самой платформы.
Т.е. наличие малвари под Винду — «не проблема платформы»? Ведь «все серьезные разработчики, уважающие себя и своих пользователей, не станут эксплуатировать несовершенство самой платформы»?
>Такие выходки обычно позволяют себе третьесортные приложения от третьесортных же разработчиков.
С этим трудно спорить. Но виновата в первую очередь платформа, позволяющая такие выходки. Хоть в случае Винды, хоть в случае iOS.
+1
UFO just landed and posted this here
Я прекрасно понял вашу мысль: «Вот если бы приватные данные спёрли — тогда да-а-а, а простой ребут — ни разу не проблема платформы».
Я согласен с тем, что ребут — куда меньшее зло, чем увод персональных данных, но не согласен с тем, что это вообще не проблема. Я считаю, что если приложение способно вмешиваться в работу пользователя с другими приложениями (хоть при наличии злого умысла, хоть при его отсутствии), то это однозначно проблема платформы, которая почему-то позволяет такие выходки.
У нас, похоже, кардинально разные подходы. Вы смотрите с точки зрения пофигистичного пользователя, привыкшего к глюкам: «Ну подумаешь, телефон ребутится ни с того ни с сего, велика беда», а я — с точки зрения разработчика, занимающего позицию «Таких глюков быть не должно, и точка».
>Бывают и посерьезнее проблемы в повседневной жизни.
Ну да, ну да, где-то война, смерть, дети в Африке голодают, уссурийские тигры на грани исчезновения, а мы тут про какие-то ребуты, да? :)
Я согласен с тем, что ребут — куда меньшее зло, чем увод персональных данных, но не согласен с тем, что это вообще не проблема. Я считаю, что если приложение способно вмешиваться в работу пользователя с другими приложениями (хоть при наличии злого умысла, хоть при его отсутствии), то это однозначно проблема платформы, которая почему-то позволяет такие выходки.
У нас, похоже, кардинально разные подходы. Вы смотрите с точки зрения пофигистичного пользователя, привыкшего к глюкам: «Ну подумаешь, телефон ребутится ни с того ни с сего, велика беда», а я — с точки зрения разработчика, занимающего позицию «Таких глюков быть не должно, и точка».
>Бывают и посерьезнее проблемы в повседневной жизни.
Ну да, ну да, где-то война, смерть, дети в Африке голодают, уссурийские тигры на грани исчезновения, а мы тут про какие-то ребуты, да? :)
-1
еще более интересно, как данного рода софт установить на не-джейлбрейкнутый девайс (из AppStore?)
0
iOS Developer Enterpise Program, точнее In-house distribution — можно установить iOS-приложение на любой аппарат. Можно установить такое приложение с самого телефона, просто скачав из интернета .ipa файл.
Ad hoc — зная серийный номер айфона, можно добавить устройство в профиль разработчика (правда есть ограничение в 100 устройств). Далее аналогично In-house distribution — хоть сразу с телефона качай. На таком принципе, например, работает TestFlight — из их приложения для iPhone можно устанавливать другие приложения (в обход App Store).
Это не говоря уж о том, что такое приложение может без проблем пройти в App Store, так как в том коде (см. UPDATE) ничего такого (приватного, недокументированного) нету. Только стандартные обработчик касаний и функция скрытия окна.
Ad hoc — зная серийный номер айфона, можно добавить устройство в профиль разработчика (правда есть ограничение в 100 устройств). Далее аналогично In-house distribution — хоть сразу с телефона качай. На таком принципе, например, работает TestFlight — из их приложения для iPhone можно устанавливать другие приложения (в обход App Store).
Это не говоря уж о том, что такое приложение может без проблем пройти в App Store, так как в том коде (см. UPDATE) ничего такого (приватного, недокументированного) нету. Только стандартные обработчик касаний и функция скрытия окна.
0
Решето!
+15
Ой, скорее ее на аппстор! Одномоментно убить все запущенные? Да ей цены нету!
-1
Такому заголовку даже ализар позавидовал бы.
Хоткей из 3х кнопок обрушает Linux
Хоткей из 3х кнопок обрушает Linux
+6
UFO just landed and posted this here
Зря раскрыли. Это уязвимость возможно можно было бы в следующем jailbreak использовать, хотя бы и привязаном.
0
Sign up to leave a comment.
Программка из десятка строчек обрушает Springboard