Мне потребовалось около получаса чтобы понять, но, кажется, я смог!
Попытаюсь объяснить…
Есть вот такой код:
fun String.someExtension() {}
val string = "some string".someExtension()
println(string)
Тут вроде всё понятно, вызываем экстеншн-функцию, она возвращает kotlin.Unit, печатаем kotlin.Unit
Теперь магия! Берем и объявление someExtension подставляем прямо в место вызова, но название экстеншн-функции после «String.» убираем, она становится анонимной:
val string = "some string".fun String.() {}()
println(string)
Эффект тот же — kotlin.Unit
Теперь осталось String заменить на Function<*> из паззлера и смысл паззлера станет понятен.
В случае оболочки у нас нет рута, но информация третьим лицам попасть может (багрепорт, бекап и т.п.) Во всяком случае, повторюсь, не стоит оставлять дверь открытой, если у потенциального вора есть отмычка.
Вы, как разработчик, не можете гарантировать, что этот лог не будет прочитан и сохранен сторонним приложением (при наличии рута) или оболочкой вроде MIUI.
Побродив по сайту Билайна в режиме разработчика Google Chrome не обнаружил нигде в логах заботливо сохраненной информации о моих услугах и детализации звонков.
Спасибо, я учту в будущем. Подход в некоторых аспектах действительно странный… Например, там очень (ну очень) много запросов идет, чтобы получить локализованное словосочетание (вроде «Оплата услуг мобильной коммерции») для определенного языка. Думаю, из-за этого у них постоянно прогресс-бар в приложении маячит.
Да, я понимаю, что это не тянет на настоящую уязвимость, и что получить доступ к системным логам стороннему приложению весьма проблематично. Но осознание того, что информация о моем балансе, услугах, переписке с оператором и, что самое важное, детализация звонков будет сохранена в каких-то файлах, которые могут отправиться третьим лицам, заставляет насторожиться.
Плюс если к этой неосторожности добавится еще какая-нибудь (не подозревая о проблеме с первой), то в логах может появиться больше интересных вещей. Я согласен, что это лишь теория, но такое отношение со стороны разработчика мне кажется неприемлемым.
Да, я согласен, что прямой и опасной уязвимостью это не является, но обнаружение таких подробностей в логах релизной сборки для меня стало большой неожиданностью.
Information
Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Попытаюсь объяснить…
Есть вот такой код:
Тут вроде всё понятно, вызываем экстеншн-функцию, она возвращает kotlin.Unit, печатаем kotlin.Unit
Теперь магия! Берем и объявление someExtension подставляем прямо в место вызова, но название экстеншн-функции после «String.» убираем, она становится анонимной:
Эффект тот же — kotlin.Unit
Теперь осталось String заменить на Function<*> из паззлера и смысл паззлера станет понятен.
В случае оболочки у нас нет рута, но информация третьим лицам попасть может (багрепорт, бекап и т.п.) Во всяком случае, повторюсь, не стоит оставлять дверь открытой, если у потенциального вора есть отмычка.
Вы, как разработчик, не можете гарантировать, что этот лог не будет прочитан и сохранен сторонним приложением (при наличии рута) или оболочкой вроде MIUI.
Так то это системный logcat, и там я как раз и обнаружил, пройдясь по приложению, указанную информацию
Да, по сути это так, но это не означает, что нужно оставлять дверь открытой, если у вора есть отмычка
Стоит также отметить что в самом приложении есть кнопка «Сообщить об ошибке» и она ведет на упомянутый в посте ответ@билайн.ру
Плюс если к этой неосторожности добавится еще какая-нибудь (не подозревая о проблеме с первой), то в логах может появиться больше интересных вещей. Я согласен, что это лишь теория, но такое отношение со стороны разработчика мне кажется неприемлемым.