Хранение паролей в linux


Вопрос теоретический из научного интереса.
Допустим, пароль записан в текстовом файле. Текстовый файл находится на флешке.
Текстовый файл открывается с помощью vim в эмуляторе терминала (допустим, konsole или gnome-terminal).
Пароль выделяется, копируется с помощью ПКМ и вставляется в браузер, ctrl+p.
Флешка извлекается.

Вопрос: если абстрагироваться от угроз, которые связаны с записью файла на флешку, а так же угрозы со стороны браузера, то какие
угрозы безопасности пароля возникают в связи с его копированием из эмулятора терминала (или текстового редактора типа gvim) с помощью правой кнопки мыши в память
и последующей вставкой в браузер? Возможность cold bootаттаки тоже не рассмативаем.

Комментарии
— tet_a_tet (29/12/2013 00:29)   
Опечатка, имелось в виду ctrl+v или просто через правую кнопку мыши.
Гость (29/12/2013 08:04)   
Неужели нельзя заглянуть в /proekt/kommentarii[link1] и увидеть /comment75187[link2]?


Например:

  1. Пароль остаётся в буфере обмена после вставки его в браузер, поэтому вы можете нечайно вставить его где-то ещё раз.
  2. Содержимое файла с паролями оседает во временных файлах редактора. В случае vim это, по умолчанию, ~/.viminfo, но можно переопределить[link3]. Про gvim не в курсе.
  3. Если в терминале запущен мультиплексор (screen или tmux), вы можете нечайно, нажатием какой-то кнопки, сохранить в файл содержимое всего окна терминала (или даже нескольких, насколько у него буфера хватает). Названия файлов точно не припомню, но мне кажется, что в случае screen это файлы с именами типа ~/hardcopy.0.
  4. Нечайно нажав на print[link4]...
  5. Во время копирования пароля (а, точнее, пока у вас флешка с паролем вставлена и подмонтирована) консервативно считайте, что он доступен любому процессу. Любой зловред, заразивший ваш профиль, может украть пароль в момент его передачи.

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

Если хочется более обосновано, то выше я привёл ссылки.
Гость (29/12/2013 14:22)   
а после копирования затереть буфер обмена разве нельзя?
Гость (29/12/2013 15:11)   
Можно (например, поместив в него другой текст). Кстати, не забывайте, что в UNIX буферов обмена по умолчанию два: контент, который вставляется через ctrl+v и контент, который вставляется средней кнопкой мыши. В общем случае содержимое этих буферов разное.
— tet_a_tet (30/12/2013 03:10)   
Ясно, что данный способ оч неоднозначен, особенно если нужно посмотреть свои пароли, но на чужой машине.
Подскажите. в какую сторону смотреть, если нужен консольный просмотр паролей? Есть ли достойные консольные программы для лиункс для хранения паролей? Или всё же вышеописанный способ с блокнотом в этом плане непревзойдён?
Гость (30/12/2013 03:34)   

Этот[link2]? Думаю, да. Задача имеет плохую обсусловленность, т.к. поидее скомпрометированному пользователю доверять пароль нельзя вообще, а если он не скомпрометирован, то хоть на обоях свои пароли пишите. Соответственно, все уловки по защите паролей — это попытка вытянуть самого себя из болота за волосы.

Можно было бы сделать по мотивам такой[link5] методики, чтоб было удобнее, но это было бы менее безопасным.


Мне ничего такого не известно, но я и не интересовался. Команда cat file | grep pattern вас чем не устраивает? :)
— tet_a_tet (30/12/2013 04:29)   
Мне ничего такого не известно, но я и не интересовался. Команда cat file | grep pattern вас чем не устраивает? :)

т.е. просто вывести содержимое файла в консоль в соответствии с неким шаблоном – это будет безопаснее, чем открывать с помощью vi или vim? Спрашиваю серьезно, т.к. и такой вариан тоже рассматриваю, он ведь и проще, и удобнее.
Гость (30/12/2013 05:36)   

Если серьёзно, то это всё — спекуляции, но есть, по крайней мере, один очевидный аргумент в пользу такого решения: vim (не знаю, как vi), по умолчанию создаёт временные файлы, и есть риск утечек паролей в эти файлы. Также есть риск утечки паролей при всяких core dump ошибках редактора при работе с файлами (пароли могут попасть в файл vim.core). Для обычных cat/grep такого вектора угроз либо нет, либо вероятность его возникновения очень мала. В частности, я в своей жизни видел выпадание в кору vim'а (и не раз), но ни разу не видел кору для cat или grep. Тут срабатывает общая идеология: при прочих равных, чем проще программа, тем она безопаснее.
— Proteus (05/01/2014 15:54)   
По поводу записи информации на флешку, есть специальные накопители Qumo YIN & YAN, на которых установлена механическая защита от записи. Очень удобная штука.
Гость (05/01/2014 22:15)   

Вы доверяете тому, как она обращается со скрытой областью под названием HPA[link6]? Пишут, что АНБ её любит[link7]:

SWAP provides software application persistence by exploiting the motherboard BIOS and the hard drive's Host Protected Area to gain periodic execution before the Operating System loads.
— Proteus (14/01/2014 18:07)   
Нет, я доверяю тому, что после втыкания её в компьютер населенными всякими разными вирусами, она остается чиста!
Гость (15/01/2014 01:16)   
Вы недооцениваете трояны от АНБ и MS. ☺
Гость (15/01/2014 02:30)   
немного о flash[link8]
— tet_a_tet (31/01/2014 12:50)   

Если серьёзно, то это всё — спекуляции, но есть, по крайней мере, один очевидный аргумент в пользу такого решения: vim (не знаю, как vi), по умолчанию создаёт временные файлы, и есть риск утечек паролей в эти файлы. Также есть риск утечки паролей при всяких core dump ошибках редактора при работе с файлами (пароли могут попасть в файл vim.core). Для обычных cat/grep такого вектора угроз либо нет, либо вероятность его возникновения очень мала. В частности, я в своей жизни видел выпадание в кору vim'а (и не раз), но ни разу не видел кору для cat или grep. Тут срабатывает общая идеология: при прочих равных, чем проще программа, тем она безопаснее.


Отсюда вопрос – куда кладется временный файл, который создается vim? В ту же директорию? Каким образом тогда редактирвоать файл – с помощью команды echo "some text" > passfile ?
Гость (01/02/2014 02:02)   

В случае vim это, по умолчанию, ~/.viminfo, но можно переопределить.

Или просто запретить[link9] создавать этот файл. В чём ваш вопрос? Вы не знаете, что такое тильда в пути к имени файла? Это домашняя директория. Переопределение места хранения на /tmp осмысленно, только если /tmp подмонтирован как tmpfs, т.е. не пишется на диск, а своп или отключен или шифруется временным ключом. В иных случаях это действие очевидного смысла не имеет.


Да как угодно. Только ">" затрёт всё старое содержимое. Если надо просто добавить к тому, что уже есть, то ">>". В любом случае, пользоваться везде и всегда только такими командами для редактирования файлов — мазохизм, лучше решить вопрос с утечками. Под недоверенным профилем, которому нужно только извлекать пароли, можно и grep'ом пользоваться, никогда не вызывая vim, а под доверенным можно редактировать файл паролей, как самый обычный файл. Наверно, не стоит напоминать, что под доверенным юзером/профилем не надо пускать софт с закрытыми исходниками и браузеры, даже TBB.
— Kent (01/02/2014 15:35)   

Есть: kpcli, ckpass.
https://www.pgpru.com/soft/keepass

Ссылки
[link1] http://www.pgpru.com/proekt/kommentarii

[link2] http://www.pgpru.com/comment75187

[link3] http://www.pgpru.com/comment67917

[link4] http://www.pgpru.com/comment63073

[link5] http://www.pgpru.com/comment62677

[link6] http://www.pgpru.com/comment72241

[link7] http://www.pgpru.com/comment75312

[link8] http://www.opennet.ru/opennews/art.shtml?num=38754

[link9] http://www.pgpru.com/comment75854