Pull to refresh

Comments 6

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

Это все равно, как по мне, уход от проблемы вместо решения ее причины. Если у вас большое доверие клиенту, то как ни обфусцируй код, все равно найдется упертый хакер, который это расковыряет и будет эксплуатировать. А если система спроектирована грамотно и на клиенте никаких решений не принимается, то можно хоть исходники в паблик выкладывать, это ничего не даст хакеру.

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

Вот хороший пример, когда обфускация кода никак не поможет. Заметки должны храниться зашифрованными, а ключ должен лежать в системном хранилище, откуда его не достать, если подпись приложения и bundle id отличается. Все! Хоть в опенсорс эти заметки выкладывай, достать из них данные без взлома операционной системы не выйдет. Ну и если приложение хоть трижды обфусцировано, но при этом заметки в плейнтексте, даже пытаться расковыривать приложение не придется.

Это все равно, как по мне, уход от проблемы вместо решения ее причины. Если у вас большое доверие клиенту, то как ни обфусцируй код, все равно найдется упертый хакер, который это расковыряет и будет эксплуатировать. А если система спроектирована грамотно и на клиенте никаких решений не принимается, то можно хоть исходники в паблик выкладывать, это ничего не даст хакеру.

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

Вот хороший пример, когда обфускация кода никак не поможет. Заметки должны храниться зашифрованными, а ключ должен лежать в системном хранилище, откуда его не достать, если подпись приложения и bundle id отличается. Все! Хоть в опенсорс эти заметки выкладывай, достать из них данные без взлома операционной системы не выйдет. Ну и если приложение хоть трижды обфусцировано, но при этом заметки в плейнтексте, даже пытаться расковыривать приложение не придется.

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

К чему я это все: предложенная вами схема действительно правильная, вот только на просторах мобильных приложений идеальных реализаций я не встречал еще ни разу.

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

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

Что этот человек сделает? Сменит телефон? Сменит банк? Ха ха нет. Он пойдёт в гугл, и найдёт приложение банка в репаке от Васяна. С палёными патчами и вырезанными проверками. Потому что твоя защита сильна, но Васян всё равно сильнее.

И вот вопрос - есть ли в репаке от Васяна малварь? Наверное, нет. Васян в целом мужик хороший. Но нельзя надеяться на добрую волю Васяна.

То, что твоя "безопасность" толкает пользователя ставить не официальный релиз, а сборки от Васяна - это однозначно твой косяк.

Действительно хороший пример. Однако комплексная защита и Васяну проблем доставит. Отломать какой-нибудь isJB или rootbeer – много скилла не потребует. Но вот возиться с репаком мобильного банка, накрытого действительно хорошим протектором – это непростая задача “Васян все равно сильнее” – это и правда и неправда одновременно. Полно мамкиных хакеров, которых отпугнет даже банальная проверка superSU на Android или схемы cydia в iOS. При этом даже топовые протекторы обходятся спустя достаточное количество потраченного времени крутых экспертов. Но спустя длительное время версия может оказаться уже не актуальной. Хорошая защита сделает неинтересным для Васяна похек конкретно этого приложения, и тогда защиту можно считать успешной.

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

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

Sign up to leave a comment.