The Apple Geek

Чему ты научился сегодня?

iBank: не стоит верить паролям

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

Идея этой простой демонстрации мне пришла в голову, когда из-за ограничений iBank я не смог экспортировать данные в Numbers для анализа и мне пришлось работать с базой SQLite3 напрямую, а не через сам iBank.

Итак, у меня есть очень секретная финансовая информация, которую я доверил iBank:

iBank: не стоит верить паролям

Я знаю, что iBank можно закрыть паролем, поэтому ставлю длинный и сложный пароль:

iBank: не стоит верить паролям

Выхожу из iBank и иду спокойно заниматься своими делами, ведь мои данные надёжно защищены:

iBank: не стоит верить паролям

В это время к моему Mac’у подходит злоумышленник (это буду я же — не правда ли, это похоже на шизофрению). Даже если Mac заблокирован, но на нём не задействован FileVault, то процесс удлинится только на короткое время.

Запускает Terminal.app и выполняет несколько команд (для этого нужно лишь немного знать SQL):

$ sqlite3 topsecret.ibank/accountsData.ibank

sqlite> SELECT ZACCOUNT.Z_PK AS AccountNumber, 
   ...> ZACCOUNT.ZNAME AS Name, 
   ...> ZACCOUNT.ZTOTALBALANCE AS Balance, 
   ...> ZCURRENCY.ZNAME AS Currency
   ...> FROM ZACCOUNT INNER JOIN ZCURRENCY ON ZACCOUNT.ZCURRENCY = ZCURRENCY.Z_PK
   ...> WHERE ZACCOUNT.ZTYPE is not null;

74|Наличные|-149990|Ukrainian Hryvnia

sqlite> SELECT ZTRANSACTION.ZTITLE, ZTRANSACTION.ZNOTE, ZLINEITEM.ZAMOUNT
   ...> FROM ZTRANSACTION INNER JOIN ZLINEITEM ON ZTRANSACTION.Z_PK = ZLINEITEM.ZTRANSACTION
   ...> WHERE ZLINEITEM.ZACCOUNT=74;

Balance Adjust||10
Очень секретная транзакция|Нельзя, чтобы кто-то увидел|-150000

За несколько минут злоумышленник узнал всю информацию по состоянию счетов и все транзакции.

Если злоумышленник ленив и не знает SQL, то он может скопировать файл topsecret.ibank/accountsData.ibank, потом создать базу iBank без пароля и подставить украденный файл. iBank даже не подумает запросить пароль.

Такое впечатление, что разработчики iBank рассчитывают на очень честных людей. Я вспомнил CashOrganizer, в котором подобным способом можно было получить список транзакций, но вот суммы без знания пароля были недоступны. Сомневаюсь, что там стояла сложная защита, но это препятствие хоть слегка, но усложняло доступ к данным.

Вывод прост. Если вы беспокоитесь за свои данные, то используйте шифрование FileVault или хотя бы помещайте конфиденциальную информацию в запароленые и закриптованые контейнеры SparseBundle Image, это можно проделать даже ничего не зная о Terminal.app — я описывал процесс в статье «Работа с зашифрованными образами с помощью Knox (за деньги) и без него (бесплатно)».

И не забывайте, что быть параноиком полезно для ваших данных.

P.S. Если вы хотите поработать с базами SQLite без терминала, то обратите внимание на Navicat for SQLite (есть бесплатная Lite-версия для некоммерческого использования) — на мой взгляд она гораздо удобнее и лучше, чем Base и SQLiteManager.

Comments