Soubor je pro uživatele nějaká změť dat, která má jméno, vlastníka, nějaká práva a informaci o času vytvoření. Tyto obecné vlastnosti obvykle nejsou něco, co by nás příliš trápilo, protože neobsahují citlivé údaje. Existuje ale jedno temné zákoutí, do kterého běžný uživatel nevidí, protože o něm obvykle ani neví: rozšířené atributy.
To je vlastnosti většiny moderních souborových systémů, která umožňuje k souboru poznamenat libovolná textová metadata. Může jít například o elektronický podpis, podrobnosti vzniku dokumentu, bezpečnostní kontext nebo prakticky cokoliv dalšího. Libovolný program si sem může do souborového systému poznamenat něco důležitého.
Překvapením ovšem může být (a nás to v redakci překvapilo), že si sem některé programy ukládají URL, ze které byl soubor stažen. Tato informace je součástí souboru, běžnými nástroji ji neuvidíte a dokáže se souborem přežít velmi dlouhou dobu. Pokud soubor přesouváte mezi souborovými systémy (například s použitím mv
) nebo kopírujete včetně atributů ( cp -a
), tato informace se zachovává.
Proč vůbec někdo podobnou informaci na disku chce? Důvodem podle vývojářů je, že to umožňuje zachovat pro ostatní aplikace zprávu o tom, odkud daný soubor pochází. Podle kritiků se jedná o velkou díru do soukromí, zastánci naopak argumentují tím, že informace o stažení je stejně už v historii prohlížeče a pokud je soubor poslán e-mailem, nahrán přes internet do úložiště souborů nebo jinak odeslán, zpráva o původu se ztrácí. Zůstává pouze na souborovém systému.
Informace samotná je uložena jako vlastnost user.xdg.origin.url
, případně user.xdg.referrer.url
a mezi navrhované vlastnosti je řadí Freedesktop.org. Nepříjemné je, že se do této vlastnosti může dostat citlivá informace: jednorázová URL vygenerovaná pro konkrétního uživatele, vůbec samotný zdroj souboru nebo třeba jméno a heslo v případě HTTP autentizace.
Bude vás asi zajímat, které programy tyto rozšířené atributy nastavují. Ve výchozím stavu to dělá wget
, do kterého se příslušný kód dostal v červenci roku 2016. Podporu od konce roku 2010 obsahuje i nástroj curl
, ale u něj musíte toto chování explicitně vynutit parametrem --xattr
. Ve výchozím stavu informaci ukládá i Chromium, tedy i prohlížeč Chrome. Naopak Firefox se takto nechová, přestože byl před mnoha lety návrh diskutován.
Rozšířené atributy si můžete prohlédnout pomocí utility getfattr
, která je součástí balíčku attr
. Soubor stažený pomocí Chrome obsahuje následující informaci:
$ getfattr -d kombajn-sklizen.jpg # file: kombajn-sklizen.jpg user.xdg.origin.url="https://i.iinfo.cz/images/root/368/kombajn-sklizen.jpg" user.xdg.referrer.url="https://www.root.cz/"
Podobně například při použití utility wget
, u které lze ale chování při kompilaci vypnout parametrem --disable-xattr
a za běhu pak potlačit s --no-xattr
.
$ wget https://i.iinfo.cz/images/root/368/kombajn-sklizen.jpg --2018-12-26 23:21:24-- https://i.iinfo.cz/images/root/368/kombajn-sklizen.jpg Resolving i.iinfo.cz (i.iinfo.cz)... 2001:67c:68::24, 91.213.160.36 Connecting to i.iinfo.cz (i.iinfo.cz)|2001:67c:68::24|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 100058 (98K) [image/jpeg] Saving to: 'kombajn-sklizen.jpg' kombajn-sklizen.jpg 100%[===========================================>] 97.71K --.-KB/s in 0.08s 2018-12-26 23:21:24 (1.23 MB/s) - 'kombajn-sklizen.jpg' saved [100058/100058] $ getfattr -d kombajn-sklizen.jpg # file: kombajn-sklizen.jpg user.xdg.origin.url="https://i.iinfo.cz/images/root/368/kombajn-sklizen.jpg"
Zřejmě nejde o žádný zásadní bezpečnostní problém, ale v každém případě je dobré vědět, že taková trochu překvapivá funkce existuje. Ostatně podobné je to i na Windows 10 a na macOS.