Byla vydána beta verze Ubuntu 25.04 s kódovým názvem Plucky Puffin. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 25.04 mělo vyjít 17. dubna 2025.
Textový editor Neovim byl vydán ve verzi 0.11 (𝕏). Přehled novinek v příspěvku na blogu a poznámkách k vydání.
Živé ISO obrazy Debianu Bookworm jsou 100 % reprodukovatelné.
Boudhayan "bbhtt" Bhattcharya v článku Uzavření kapitoly o OpenH264 vysvětluje, proč bylo OpenH264 odstraněno z Freedesktop SDK.
Představeny byly nové verze AI modelů: DeepSeek V3-0324, Google Gemini 2.5 a OpenAI 4o Image Generation.
XZ Utils (Wikipedie) byly vydány ve verzi 5.8.0. Jedná se o první větší vydání od backdooru v XZ v loňském roce.
Byla vydána nová verze 0.40.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.
Byla vydána nová verze 2.20 svobodného video editoru Flowblade (GitHub, Wikipedie). Přehled novinek v poznámkách k vydání. Videoukázky funkcí Flowblade na Vimeu. Instalovat lze také z Flathubu.
LibrePCB, tj. svobodný multiplatformní softwarový nástroj pro návrh desek plošných spojů (PCB), byl vydán ve verzi 1.3.0. Přehled novinek v příspěvku na blogu a v aktualizované dokumentaci. Vypíchnut je interaktivní HTML BOM (Bill of Materials) a počáteční podpora Rustu. Zdrojové kódy LibrePCB jsou k dispozici na GitHubu pod licencí GPLv3.
Minulý měsíc Hector "marcan" Martin skončil jako upstream vývojář linuxového jádra i jako vedoucí projektu Asahi Linux. Vývoj Asahi Linuxu, tj. Linuxu pro Apple Silicon, ale pokračuje dál. Byl publikován březnový přehled dění a novinek z vývoje. Vývojáře lze podpořit na Open Collective.
cryptsetup
u.Motto:
Když člověk zahesluje soubor s 50 znaky, tak ten obsah nebude pro jiné oči ani pro policii. Já bych řekl, že tam bylo něco hodně mimo zákon.(Michal Jiřík, diskuze na Novinkách)
Kdekdo dnes šifruje disk nebo alespoň jeho část. Nemusí po vás zrovna jít třípísmenkové organizace; dnešní malé netbooky lidé nosí pořád s sebou a jak asi víme, na veřejnosti se bohužel cennější věci občas ztrácejí. Pro nového „majitele“ notebooku by pak naše SSH a PGP klíče, maily, údaje o internetovém bankovnictví, dokumenty, fotografie… byly takovým příjemným bonusem k nově nabytému hardwaru. Linuxové distribuce se tomuto smutnému trendu přizpůsobily a většina jich dnes již nabízí zapnutí šifrování disku (nebo alespoň domovského adresáře) jedním kliknutím. Když už vám někdo ukradne hardware, nemusí mít přece ještě všechna vaše data.
Většina osobních počítačů nemá žádný specializovaný šifrovací koprocesor (např. technologie Padlock na deskách Via Epia) a když už má, tak buď nejsou ovladače pro Linux, nebo to stejně nikdo nenastaví. Proto se musí veškeré operace provádět na CPU. Jádro tedy při šifrování vezme data, která chce zašifrovat, pomocí klíče (který získalo ze zadaného hesla*) je zašifruje a zapíše na disk. Při dešifrovaní se postupuje obdobně – přečtou se zašifrovaná data z disku, klíčem se dešifrují a dešifrovaná se předají uživatelskému prostoru. Všichni jsou šťastní.
*Z praktických důvodů se ve skutečnosti k šifrování nepoužívá rovnou heslo. Jednak je obvykle krátké (AES256 by, pokud dobře počítám, potřebovala jako klíč 43 znaků z a-zA-Z0-9) a druhak by se při změně hesla musela přešifrovat všechna data. Proto se heslem zašifruje náhodný (a dlouhý) klíč a šifruje se až tímto klíčem. Při změně hesla se pak jenom přešifruje klíč novým heslem. Klíč může být navíc úmyslně šifrován nějakým zoufale pomalým algoritmem, a tak se ztěžuje útok hrubou výpočetní silou [brute-force]. Více info: PBKDF2
K šifrování je tedy potřeba klíč (obvykle o délce několika stovek bitů). A ten se musí při běhu systému někde uchovávat. Při šifrování CPU se klíč uchovává – jako většina ostatních pracovních dat – v RAM. Chytrý šifrovací software si samozřejmě dává pozor, aby se klíč omylem nezapsal do swapu, odkud by si ho mohl případný útočník snadno přečíst (pokud by byl swap nešifrovaný). Ale i v samotné RAM je klíč v nebezpečí.
Některé desky při startu obsah paměti nemažou. Pokud se útočník fyzicky dostane k počítači a bude mít možnost zavést vlastní operační systém (nezaheslovaný BIOS, jako první zařízení je nastavena CD mechanika…), počítač restartuje, nastartuje vlastní systém a přečte si zbylá data z paměti. Zkuste si: strings /proc/kcore | less
.
Ovšem i když útočník nemůže zavést vlastní systém, jsou data v ohrožení. Pořád totiž může počítač rozdělat, paměť vyndat, přehodit ji do vlastního počítače (který má pod kontrolou) a přečíst tam. RAM sice neudrží data bez napájení moc dlouho, řádově zlomky sekund až sekundy, ale lze tomu pomoci ochlazením. Bombičky s butanem se prodávají jako plyn do zapalovačů a butan má teplotu varu lehce pod 0 °C. Dokonce ani tekutý dusík není pro obyčejné smrtelníky zcela nedostupný.
Tomuto typu útoků se říká cold boot attack. Po zadání sousloví do svého oblíbeného vyhledávače jistě naleznete spousty studií, prací a experimentů.
Poznámky: Podobný útok lze velmi jednoduše a nenápadně realizovat i pomocí FireWire, což je ale nad rámec článku a navíc to autor nemá kde vyzkoušet. Hledejte firewire dump memory. Možná se časem objeví něco podobného i pro USB 3.0. DMA pro Plug'n'Pray zařízení se musí vždy důsledně ošetřit, ale návrháři čipů se na to občas vykašlou.
Notebooky jsou na tom, co se týče vybavených útočníků, hůře. Protože mají akumulátor, lze je zapnuté přenést do dobře vybavené laboratoře a provést důkladnou forenzní analýzu až tam.
Po rozvážení dojdeme k tomu, že se lze bránit třemi způsoby:
cryptsetup
umí od verze 1.1 operace luksSuspend
a inverzní luksResume
. Ta první přepíše klíč v paměti a zablokuje I/O operace s diskem (proces, který se pokusí číst nebo zapsat, bude pozastaven). luksResume
si vyžádá heslo a obnoví předchozí stav. Ale nemůžeme uspávat rovnou systémový oddíl, protože bychom pak neměli jak přečíst binárku programu cryptsetup
. Proto budeme chránit pouze vybrané části domovského adresáře. A proč pouze části? Aby byl systém použitelný i po zahození klíče. Pro to potřebujeme například soubory .bashrc
, konfiguraci desktopového prostředí a další.
Máme před sebou systém, který má v adresáři /home/jenda/moje
připojený šifrovaný LUKS oddíl s citlivými daty. Protože citlivé jsou i konfigurace některých programů, vytvořili jsme si do tohoto šifrovaného adresáře symbolické odkazy takovéhoto typu:
# cd /home/jenda # ln -s moje/.ssh . # ln -s moje/.gnupg . # ln -s moje/tmp .
Můžeme vyzkoušet odpojení souborového systému.
# cryptsetup luksSuspend home
Pokud se teď nějaký proces pokusí přistoupit na takto odpojený souborový systém, bude zablokován. Chytřejší GUI aplikace, které běží ve více vláknech (gedit), to obvykle jenom dají nějak najevo; ty hloupější (Firefox) úplně zatuhnou. Můžeme se podívat, že opravdu zatuhly při pokusu o přístup k souboru na uspaném zařízení.
~> strace feh tmp/hpscan001.png … open("tmp/hpscan001.png", O_RDONLY) = 4 fstat64(4, {st_mode=S_IFREG|0644, st_size=486486, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb786e000 read(4,
Až se pokocháte zamrznutou půlkou systému, obnovíme činnost zařízení:
# cryptsetup luksResume home Enter passphrase for /dev/sda2: nbusr123
Takže si můžete vytvořit skript, řekněme lock.sh
, který zahodí klíč a pak se bude ptát na heslo, nastavit si ho na nějakou klávesovou zkratku a spouštět ho vždy při odchodu od počítače.
#!/bin/bash echo Usínám cryptsetup luksSuspend home echo Probouzím cryptsetup luksResume home
To je ale nepohodlné, například u notebooku bychom chtěli odpojovat zařízení vždy při uspání.
Vytvoříme si, řekněme, adresář /opt/paranoid
, a vytvoříme v něm skripty lid.sh
, unlock.sh
a unlock-sudo.sh
.
#!/bin/bash # lid.sh - spustí se po zavření víka notebooku cryptsetup luksSuspend home
#!/bin/bash # unlock.sh - spustí se po pokusu o autentizaci přes PAM cat - | sudo /opt/paranoid/unlock-sudo.sh exit $?
#!/bin/bash # unlock-sudo.sh - je spouštěn z unlock.sh, protože se mi nepodařilo přinutit pam_exec, aby spouštěl přes sudo rovnou… # poznámka: pokud bude návratový kód 0, obrazovka se odemkne HESLO=`cat -` if [ $HESLO = nbusr123 ]; then exit 0 fi echo "$HESLO" | cryptsetup luksResume home exit $? # možné problémy: $HESLO se uloží do paměti, odkud ho lze cold boot útokem přečíst. # Naštěsí se po odemknutí disku vykonají nahromaděné I/O operace, takže se paměť zaplní vyrovnávací pamětí.
Proč je v unlock-sudo.sh
to ověřování i proti jinému heslu? Aby bylo možné odemknout obrazovku i v případě, kdy nechcete zadávat heslo k disku (před policejní hlídkou…), ale chcete se například jenom podívat do sbírky zákonů.
Nyní ještě musíme zařídit, aby se ty skripty opravdu spouštěly tak, jak chceme. To jde celkem snadno. Nejdříve to odpojování při zavření víka notebooku: hned na začátek souboru /etc/acpi/actions/lid.sh
přidáme náš skript:
#!/bin/sh /opt/paranoid/lid.sh (zde pokračuje původní skript)
A jak spouštět skripty pro odemknutí? Debian s Xfce zamyká při uspání obrazovku pomocí programu xscreensaver
a ten při odemykání obrazovky provede PAM akci specifikovanou v /etc/pam.d/xscreensaver
. Přidáme tedy na začátek následující řádek
auth sufficient pam_exec.so expose_authtok quiet seteuid /opt/paranoid/unlock.sh #vysvětlení: postačující zadané heslo cesta ke skriptu # k autentizaci se předá na stdin
A ještě, aby nám fungovalo sudo
pro unlock-sudo.sh
bez hesla, spustíme visudo
a přidáme:
User_Alias PD = jenda Cmnd_Alias PDCM = /opt/paranoid/unlock-sudo.sh PD ALL= NOPASSWD : PDCM
Ještě je možné po probuzení spustit webkameru a nahrávat, jestli se nám někdo nesnaží dostat do notebooku nebo použít klíč uložený na jednom šifrovaném oddílu k inicializaci druhého oddílu, a tak se zbavit potřeby zadávat při startu počítače dvě hesla, kteréžto funkce popíšeme dle zájmu čtenářstva jindy nebo nikdy.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
`yes ahoj`
) a pak rebootnout. Po rebootu bys teoreticky měl vidět ty řetězce (ale jak říkám, funguje to jen na některých deskách).
echo
jako builtin.
if [ $HESLO = nbusr123 ]; then
Proč je v unlock-sudo.sh to ověřování i proti jinému heslu?To nbusr123 je v tomhle clanku heslo ke klici pro sifrovany disk. To jako myslis vazne, ze bych nekam do shell scriptu napsal heslo k sifrovanymu disku???? Jediny heslo v plaintextu mam heslo pro automount pro sambu k Windows AD uctu, je to citelny pouze pro roota (automount) a heslo k linuxu mam jiny nez to do Windows.
/opt/paranoid/unlock-sudo.sh
)
$HESLO != nbusr123
nebo testovat login heslo $HESLO = login-heslo
. Pak to pri login heslu vyskoci a nebude resumovat luks.
Mozna by bylo lepsi tam testovat nejake non-luks a non-system heslo, cili uplne nejakej jine, pak ale ztraci to zadavani hesla trosku smysl. To by bylo mozna lepsi spis otevrit po prihlaseni k xscreensaveru pak nahodit jeste jedno pro zadani hesla k disku a nebo manualne nastartovat (kvuli policii, aby nevidela, ze tam chce dalsi heslo).
#!/bin/bash
# unlock.sh - spustí se po pokusu o autentizaci přes PAM
cat - | sudo /opt/paranoid/unlock-sudo.sh `whoami`
exit $?
#!/bin/bash
# unlock-sudo.sh - je spouštěn z unlock.sh, protože se mi nepodařilo přinutit pam_exec, aby spouštěl přes sudo rovnou…
# poznámka: pokud bude návratový kód 0, obrazovka se odemkne
HESLO=`cat -`
me=$1
if [[ `grep $me /etc/shadow | awk -F "$" -v heslo="$HESLO" '{print "echo " heslo " | openssl passwd -1 -salt " $3 " -stdin"}' | sh` = ` grep $me /etc/shadow | awk -F ":" '{print $2}'` ]]; then
exit 0;
fi
echo "$HESLO" | cryptsetup luksResume home
exit $?
Mozna by bylo lepsi tam testovat nejake non-luks a non-system hesloOsobně testuji systémové, ale jinak je celkem jedno, jestli systémové nebo nějaké jiné - pokud někdo dokáže ten soubor přečíst, znamená to, že už stejně má přístup do systému a systémové heslo je mu pak už k ničemu.
Mno na standardne nastavenym firemnim notesu nenabootujes zniceho jinyho nez z disku.Což z jedné minuty dělá dvě, že :).
A nez ten vymenis, tak se ti data z pameti vypari.Instalace backdooru pokud vím, data z paměti vůbec nepotřebuje.
Ostatne i pri nejlepsich moznych podminkach pro tenhle typ utoku mas jen relativne malou pravdepodobnost (ale nenulovou samo), ze ziskas co hledas.Záleží o kterém typu se bavíme, pokud o nasazení backdooru, tak tím se dá v získat přístup k libovolným datům na počítači, která dotyčný odemkne.
Mne z toho vychádza len to, že šíriš návod, ktorý je užitočný pedofilom a teroristom, ktorý sú prakticky jedinými skupinami, kde má cold boot attack zmysel. Veď kto nerobí nič zlé, nemusí sa podobnými blbosťami zaoberať, pretože sa nemá čoho báť.Nemuzu si pomoct, ale z obou vet mi vstavaj vlasy hruzou na hlave. Ta prvni je blaznive paranoidni a ta druha zase blaznive idealisticka ... Kam na tyhle nazory ty lidi chodej.
dd if=/dev/urandom of=/tmp/bigfilea az se zaplni disk, tak smazat /tmp/bigfile
Na Linux může tohle kdykoliv přijít taky (šířilo se to přes děravý Firefox), výhoda Linuxu tady je snad adress space randomizationVýhoda Linuxu je taky třeba AppArmor – pomocí něj můžeš „zabednit“ prohlížeč (jakýkoli, ne jen Firefox) tak, aby mohl dělat jen to, co nezbytně ke svojí činnosti potřebuje – takže se např. nepodívá do ~/.ssh, ~/.gnupg nebude fungovat jako server, nebude spouštět další procesy atd.
Nejsem si jistý, jestli si všichni tihle promažou paměť, aby se z ní nedalo vytáhnout heslo, spíš bych řekl, že ne. Nic o tom nevím. Dokud nebudu mít tyhle komponenty pod kontrolou a záruku, že nikdo z nich v paměti heslo nenechal, nemůžu si být jistý.Chápu, ale líp to asi udělat nejde. Správný paranoik by možná zadával heslo rovnou na virtuální konzoli a ne přes X, čímž by to omezil v podstatě jen na ten ovladač klávesnice. Nicméně je to zajímavý námět na experiment s virtuálním strojem.
Pokud jsem dřív měl hesla aj. v nešifrovaných souborech, tak po zabezpečení mi na disku žádné takové soubory nesmí zůstat.Já to instaloval na panenský disk (respektive byla tam původně OEM Windows), nic svého jsem tam ještě neměl.
Je nějaký šikovný program, co vymaže všechno, co je na disku mimo soubory?Ano, stačí zaplnit velkým souborem. Dělá se to i při zálohování obrazu disku, kdy se takhle vytvoří dlouhé sekvence nul, které se následně zkomprimují gzipem.
Chápu, ale líp to asi udělat nejde. Správný paranoik by možná zadával heslo rovnou na virtuální konzoli a ne přes X, čímž by to omezil v podstatě jen na ten ovladač klávesnice. Nicméně je to zajímavý námět na experiment s virtuálním strojem.Tuším, že takhle se dá vytahat heslo k biosu - BIOS jede v "reálném módu" (16bit), kde na adrese 0040:001A až 0040:003D (segment : offset) je kruhový buffer na 16 kláves. Ve chvíli, kdy nastartuje systém, tak ten si obvykle začne řešit klávesnici jinak (přes různé ovladače a něco jako kruhový buffer na stisknuté klávesy má někde jinde). Bohužel často ten systém zapomene ten původní BIOSový buffer promazat a pokud tu paměť nepoužije na nic jiného (vzhledem k tomu, že na takhle nízkých adresách je tabulka přerušení a další důležité věci, tak to tam spíš asi zůstane), tak v tom bufferu to naklofané heslo zůstane.
Je nějaký šikovný program, co vymaže všechno, co je na disku mimo soubory
dd if=/dev/zero of=/cesta/libovolne_jmeno_souboru && sync && rm /cesta/libovolne_jmeno_souboru
Obrana? Co takhle ten klíč prostě rozsekat na několik kousků, přidat mezi ně slušnej padding (třeba random data) a nechat OS, ať to nastránkuje na různá místa paměti? Stránka má myslím 4K (nebo už 8K?) a těch pár KB zbytečně zaplněné paměti navíc by se mohlo vyplatit.
Já vím, jak ale jinak "schovat" klíč? To "řešení" s cache processoru je vlastně taky "obscurity". Šlo mi o to, že pokud by takto nějaký userspace program rozsekal klíč do spousty menších částí, sníží schopnost úspěšně rozluštit (pravděpodobně) poškozenou tabulku stránek a tudíž poskládat finální klíč.
Já vím, jak ale jinak "schovat" klíč?Takhle určitě ne. Ten program, který ho takhle rozstrká a pak zase zpětně sestaví, musí být v jádře. A jádro je natažené v paměti a nešifrované na disku (v /boot). Odradí to asi jenom script kiddies.
To "řešení" s cache processoru je vlastně taky "obscurity".Ne, to se zakládá na tom, že cache procesoru zvenku nevyčteš, hardwarovým zásahem asi taky těžko a po resetu se okamžitě zaplní jinými daty. Je to podobné, jako kdybys měl system-on-chip nebo TPM (jak to bylo) mezi dvěma komorami s náhodným tlakem, takže když jednu provrtáš, čip se rozpadne na kousky.
Má pointa byla čistě z pohledu userspace, to rozsekání by provedl program a jádro by to náhodně "fragmentovalo" na stránky, které by mohly být náhodně spojené/rozházené. Takový Firefox má těžko naalokováno 500MB vedle sebe ve fyzické (ne virtuální) paměti.
Na druhou stranu - je pravda, že kernel vývojáři v současnosti pracují na defragmentaci paměti, takže výsledný efekt by nemusel stát za to.
Ani TPM, ani jiné šifrovací karty neumí to, co potřebujeme – nemít otevřená data jinde než v procesoru. My nepotřebujeme černou krabičku, z které padá otevřený text. My potřebujeme procesor, z kterého lezou zašifrovaná data určená pro fyzickou paměť.
Dost to komplikuje architektura x86, která má do určitého bloku mapované I/O a která má DMA buffery v téže fyzické paměti, kterou chceme mít zašifrovanou.
nehledě k tomu, že na Linuxu je backend k Truecryptu dm-cryptTruecrypt má na linuxu jako backend dm-crypt? Měl jsem za to, že novější verze (tuším od 5.0 výše) už nemají modul do kernelu, ale fugují přes FUSE ...
Tohle jde jednoduše testovat ve virtuálním stroji, který suspendnete a hledáte známou sekvenci - heslo zadané z klávesnice - v obrazu RAM na diskuTohle je trochu ztížené tím, že to heslo se tam nemusí objevit "v plaintextu" - pokud bude za každou klávesou pár bajtů pro flagy (v DOSu byl v 16znakovém buferu 2. bajt na extended flagy), případně bude navíc každá klávesa dvakrát (zmáčknuto + odmáčknuto) tak mezi jednotlivými znaky hela bude "nějaký bordel", v horším případě se tam ty klávesy objeví nějak "zakódované" (Q=1, W=2, E=3, R=4, T=5 ....) kdy to heslo takhle nebude vidět, v "nejhorším" případě tam může být např. nějaký spoják s ukazateli, takže to heslo tam nemusí být ani popořadě.
luksSuspend maže z paměti klíče používané v cryptoAPI (to je přesně to, co hledá ten prográmek) a klíč v interní mapovací tabulce dm-cryptu (jíž je klíč součástí, "dmsetup table --showkeys"). Pozor na to, že v paměti jsou stále stránky s odšifrovanými (plaintext) daty. Něco jde vypláchnout, ale některá data tam prostě zůstanou.Teoreticky by to šlo řešit, že při suspend se vygeneruje náhodný klíč, tím se zašifruje skoro celá RAM včetně všech klíčů (tedy kromě suspend a téhle šifrovací/dešifrovací rutiny), pak se vygeneruje z hesla kterým má být prováděno resume další klíč, kterým se zašifruje ten náhodný (jehož originál se pak smaže, ale může se uložit jeho hash) Při dešifrování se zadá heslo, dešifruje se klíč od paměti, pokud hash sedí, dešifruje se pamět, pokud ne, bylo zadáno blbé heslo (pokud by se pokračovalo v dešifrování paměti, byl by z toho akorát odpad) Ve chvíli, kdy je to takhle suspendováno, tak by to mělo být rezistantní i vůči coldboot (klíče v paměti nejsou ...)
Truecrypt má na linuxu jako backend dm-crypt? Měl jsem za to, že novější verze (tuším od 5.0 výše) už nemají modul do kernelu, ale fugují přes FUSE ...Ano, IIRC verze 4 mela vlastni dm modul, 5 mela ciste FUSE, 6 a vyse pouziva dm-crypt (krome nejakych kompatibilnich konterjneru, takze FUSE tam je stale take).
Tohle je trochu ztížené tím, že to heslo se tam nemusí objevit "v plaintextu"jiste. ale v nejake forme to tam bude. a pokud to nekomu stoji za to, urcite si da praci to poskladat. a s tom virtualni masinou si muzu udelat snapshot pred zadanim a po zadani a podivat se, co se kde zmenilo. jakmile vim, jake patterny to generuje, jde to automatizovat.
Teoreticky by to šlo řešit, že při suspend se vygeneruje náhodný klíč, tím se zašifruje skoro celá RAM včetně všech klíčůdm-crypt je driver na blokove zarizeni, to by byl uplne jiny projekt, ktery by musel byt navazany na memory management. a nemyslim, ze by to k necemu bylo - proc to pak nehibernovat do sifrovaneho swapu radsi?
proc to pak nehibernovat do sifrovaneho swapu radsi?Odswapovat 2 - 16 GB paměti (dle stroje) trvá ... dlouho, řádově minuty (dle RAM a rychlosti disku). To samé pak zpětné načtení z disku. Přešifrovat celou paměť sice také není úplně hned (dle Truecrypt benchmarku core 2 quad dosahuje s AES 344 MB/sec, rozumně rychlé harddisky mají řádově tak 80 - 100 MB/sec), ale je to o dost rychlejší (v obou případech šifruji tak jako tak celou paměť, jen to pak nemusím pak ukládat na disk :)
PS2: Má někdo nápad jak tuto obranu prolomit kromě fyzického vytlučení hesla z uživatele?
Nenápadná neutralizace panic keyboard
To by si měl přečíst Tom co poslal disk na reklamaci do Mironetu. Nebo aspoň něco o šifrování.
Jinak krom ColdBoot útoku mě napadl další způsob. Např. v takovém Ubuntu, pokud nainstaluješ kexec, tak ti automaticky bez jakéhokoliv ptaní přidá k parametrům jádra crashkernel=128M (vzhledem k tomu, že GRUB2 už nezobrazuje ani nabídku jsem si toho všiml až když mi ta paměť začala scházet). Pak si stačí jen vyčíhat okamžik, kdy bude klíč v paměti, pomocí klávesového komba Alt+SysRQ+C ručně navodit umělý Crash systému (Kernel Panic), počkat než jádro sletí a přebootuje pomocí kexecu nové (crash) jádro, které krom roota také nabídne v souboru /proc/vmcore, předchozí jádro jak vypadalo v okamžiku zmáčknutí zkratky. Stačí už jen někam zkopírovat, stáhnou k příslušnému jádru debugovací symboly (vzhledem k tomu, že většina běžících jader je distribučních to ani není moc namáhavé), podívat se jakým systémem byl zašifrovaný příslušný oddíl nebo adresář, mkrknout do zdrojáků v které proměnné nebo v kterém bufferu je držen klíč, spustit gdb a k němu příslučný dump, print jmeno_promenne a práce je hotová. Některé pokročilejší distra (jako Fedora) to jádro dokonnce pěkně pročistí a neservírují ho do /var/crash (schálně, kdo šifruje /var, tak nechť hodí kamenem) a nebo mají takové pokročilé featury jako přímý debuging spadeného jádra přímo z crashkernelu, takže člověk se nemusí ani namáhat s rebootem. Asi si něco zašifruju abych se mohl hrát.
A věřím, že každé distro obsahuje takových kachen několik. Vždyť např. v mém případě není neobvyklé abych přišel k počítači a u Fedory mi v rožku viselo upozornění na update balíků kvůli bezpečnostním chybám některých důležitých služeb (které většinou běží pod rootem) a u každé bezpečností chyby link na bugreport (holt chlapci z RedHatu jsou svědomití) kdy u některých nemusí být ani nemožné natrefit na demonstrační expolit. Se pak člověk nemusí babrat ani s rebootem a pokud se mu podaří dostat se do některého rootovského procesu, může si libovolně šmejdit po paměti a najít si ten klíč (nadruhou stranu, když je někdo rootem, tak se asi ani nemusí babrat s tím klíčem).
Nemít paměť tak na ráně. Například zařízení typu system-on-chip mají paměť spolu s procesorem v jednom BGA pouzdře, případně ji mají zalitou takovým tím hnusným asfaltem.No, nevim. Ještě jsem teda na SoC s integrovanou pamětí nenarazil. Až takový najdeš, dej mi prosím vědět. Ihned odkoupím. Většina boardů ji má vyvednou do samotného čipu a se SoC pomocí plošňáku propojenou. Na druhou stranu je pravda, že většina jich je natvrdo na ten plošňák připájených a má to tak malé piny, že i ten epoxid je proti tomu hadr (ale jde to – buď s mikropájkou a pevnou rukou a nebo pomocí nějakých triků ke kterým klidně nabídnu link). No zas většina takových boardů má JTAG (ale to má skoro valná většina dnešních zařízení – vždyť Xboxy se už dneska pomalu ani jinak nehackují) a nebo rovnou eJTAG. Přes ten není problém přepnout procesor do debug módu a podstrčit mu libovolné instrukce. Já se teď např. hrabu v PrAcc kódu, který má za úkol dostat se skrze virtuální adresu na NAND a vytáhnout z ní do Test Data Out její obsah. No přepsat tu virtuální adresu z adresy NAND čipu na RAM čip je minimum. Takže není problém přijít, udělat si v rychlosti skrze JTAG dump celé paměti (novější mrchy skrze ten JTAG podporují už i DMA módy
The industry standard finally became an IEEE standard in 1990 as IEEE Std. 1149.1-1990[1] after many years of initial use. That same year Intel released the first processor with JTAG: the 80486takže bůh ví jak jsou na tom se zpětnou kompatibilitou Intelí procesory dnes. Ale všechny ostatní populární non-X86 ho mají určitě. I s dokumentací. A to včetně TouchBooku.
Na konferenci LinuxAlt (6.-7. 11. 2010) předvede Petr Krčmář ve svém příspěvku Jak prolomit šifrování disku za dvě sekundy takzvaný cold boot útok.Sakra, to je mi docela líto že jsem nebyl přítomen. Mohla to být docela sranda. Doufám, že to bude někde dostupné.