Как браузер помогает товарищу майору

Как браузер помогает товарищу майору
14 \ 03 \ 19
Знаете, когда я почти нечаянно обнаружил, читая прекрасную книгу Дмитрия Кетова «Внутреннее устройство Linux» (и это не реклама), что каждый скачанный нами файл из Интернета с легкой руки браузера оставляет в расширенных атрибутах файла (в inode файла, не в самом файле) как минимум полную ссылку на то откуда он был скачан, я пришел в легкое возбуждение и хотел тут же броситься спасать мир. Позже, немного изучив этот вопрос, почитав «коммиты» и «комменты», говорившие, что этой возможности, встроенной в ядро GNU/Linux, как минимум уже около 10 лет, что ею пользуется не только браузеры, но и, к примеру, популярная утилита wget (curl нет), и что эта вещь считается чуть ли не нормой в Linux (и, как выяснилось позже в MacOS), то я немного подуспокоился.

Одно не давало мне покоя: поиск ключевого слова getfattr в google по сайту «Хабра»: site:Лучшие публикации за сутки / Хабр getfattr, равно как и по ЛОРУ: site:LINUX.ORG.RU — Русская информация об ОС Linux getfattr ничего толком не дал. «Значит» — подумал я — «эта тема еще особенно не обсуждалась». — Что же, тогда пришло время ее обсудить, но для начала пришлось немного по-исследовать. И вот что я обнаружил:

4189d11e67c8196426e65e9c0222e852.webp
Дисклеймер*. Из-за отсутствия времени буду добавлять много букв по мере возможности. Пока только конкретика.

Да, каждый скачанный файл с помощью любого Chromium-совместимого браузера (проверено в lxc-контейнере на Chrome, Chromium, Yandex и последней Opera) записывает в расширенных атрибутах файла, спрятанных в недра файловой системы, вот такой вывод:

i@ars:~$ getfattr -d logo.png
# file: logo.png
user.xdg.origin.url="https://habr.com/images/logo.png"
user.xdg.referrer.url="https://habr.com/images/logo.png"

При этом все они честно ничего не пишут, если вы скачиваете файл в режиме «инкогнито» / «private browsing»

Знали ли вы об этом? Если да, то хорошо. Если нет, то теперь будете знать. Что касается Firefox и Palemoon — эти парни честно игнорируют эту помощь товарищу майору. Весь букет программ для просмотра Интернет-страниц я не проверял, но думаю, все, что основано на Chromium делает это, остальные скорее нет.

Теперь о MacOS и Windows. В «макоси» данная функция также работает в Chrome:

iMac-Igor:~ [censored]$ xattr -l habr_logo.png
com.apple.metadata:kMDItemWhereFroms:
00000000 62 70 6C 69 73 74 30 30 A2 01 02 5F 10 20 68 74 |bplist00..._. ht|
00000010 74 70 73 3A 2F 2F 68 61 62 72 2E 63 6F 6D 2F 69 |tps://habr.com/i|
00000020 6D 61 67 65 73 2F 6C 6F 67 6F 2E 70 6E 67 5F 10 |mages/logo.png_.|
00000030 20 68 74 74 70 73 3A 2F 2F 68 61 62 72 2E 63 6F | https://habr.co|
00000040 6D 2F 69 6D 61 67 65 73 2F 6C 6F 67 6F 2E 70 6E |m/images/logo.pn|
00000050 67 08 0B 2E 00 00 00 00 00 00 01 01 00 00 00 00 |g...............|
00000060 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000070 00 00 00 51 |...Q|
00000074
com.apple.quarantine: 0001;5c8a21e7;Google Chrome;26D6C537-E6B0-4715-9E77-656FF1C5B7A9

… работает она и в Safari. В FF не проверял, но полагаю, что прекраснодушный Firefox для MacOS также лишен этой «привилегии», как и в Linux.

Утверждается, что это фича используется для определения файла «скаченного из Интернет» и именно по наличию этого атрибута в «макоси» выскакивает предупреждение об опасности запуска и т.п. Хм… Странно… Но здесь мы плавно перейдем к Windows.

«Венда» вещь безусловно бездарная и следящая за всеми с неприкрытым цинизмом. (чего только стоят неотключаемые обновления в W10! ). В ней, в NTFS также спрятаны лазейки для записывания чего угодно в расширенные атрибуты файлов. Называются они streams и могут все тоже самое. Говорят, что в эти припрятанные файловой системой «потоки» периодически любят что-нибудь да записывать вирусы, поскольку все остальные программы их используют редко. Не могу ничего сказать, я Windows последние 10 лет не пользуюсь.

И все же. При первом приближении в Win10 я не обнаружил подобной «мелочи», а именно того факта, чтобы в расширенный атрибуты NTFS Google Chrome писал ссылки подобно тому, как он делает это в Linux и MacOS. Оговорюсь: это при первом приближении, поскольку утверждается, что у streams есть как-бы несколько слоев и не все они прямо доступны.

Вот так, если кратко обстоит дело с тем, как устроены не только браузеры, но и файловые системы при предельно кратком приближении.

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

Вот такие шуточки.
 
Последнее редактирование:
Назад
Сверху Снизу