В рамках работ по поиску разного рода вредоносного кода для MAC мы наткнулись на очень интересную особенность Safari. Оказалось, что Safari под MAC OS, как и многие другие современные браузеры, умеет восстанавливать прошлую рабочую сессию. То есть пользователь, открыв свой браузер, путём простейших манипуляций может восстановить все открытые им в прошлую рабочую сессию сайты и даже автоматически на них авторизоваться. Удобно? Бесспорно. Безопасно? Увы, нет.
Всё просто: для того чтобы браузер знал, на чем пользователь закончил прошлую сессию, эту информацию надо где-то сохранить. Очевидно, что это надо сделать в месте, которое не будет легко доступно кому угодно, и уж точно информация должна быть в зашифрованном виде.
Оказалось, что Safari хранит последние рабочие сессии в незашифрованном виде в обычном plist файле в свободном доступе. Соответственно, из них легко добыть учетные данные пользователей:
Скриншот plist файла после попытки логина в gmail
Даже невооруженным глазом видно, что логин и пароль не зашифрованы (на скрине выделены красным овалом).
В plist файле полностью сохраняется сессия авторизации на сайте в открытом виде, несмотря на https. Сам же файл располагается в скрытой папке, но доступной на чтение кому угодно.
Plist файл легко распаковывается самой системой. Он в структурированном виде хранит информацию о сохранённой сессии, в том числе http–запросы, шифрованные простейшим алгоритмом base64.
В Safari существует специальная функция, которая позволяет открыть сайты в том виде, в котором они оставались при завершении сессии – «Reopen All Windows from Last Session». Эта функция и использует LastSession.plist.
Функция «Reopen All Windows from Last Session» в Safari
Эта функция работает в следующих версиях MAC OS X и Safari:
- OSX10.8.5 Safari, 6.0.5 (8536.30.1)
- OSX10.7.5 Safari, 6.0.5 (7536.30.1)
Легко себе представить, что будет, если злоумышленник или вредоносная программа получит доступ к файлу LastSession.plist в системе, на которой пользователь логинится на сервисы Facebook, Twitter, Linkedin — или же на сайт своего банка.
Мы считаем, что хранение конфиденциальной информации в открытом виде с неограниченным доступом — это катастрофическая дыра в безопасности, позволяющая злоумышленникам беспрепятственно воровать пользовательские данные, затрачивая при этом минимум усилий.
Мы проинформировали компанию Apple о проблеме.
На данный момент мы не можем подтвердить или опровергнуть существование реального вредоносного кода, обращающегося к этому файлу. Но готовы биться об заклад, что такое ПО не заставит себя долго ждать.
В Safari 6.1 эта уязвимость была устранена.
Лазейка в Safari