Branch Privilege Injection (CVE-2024-45332, Paper) je nejnovější bezpečnostní problém procesorů Intel. Intel jej řeší ve včerejším opravném vydání 20250512 mikrokódů pro své procesory. Neprivilegovaný uživatel si například může přečíst /etc/shadow (YouTube).
Dle plánu byl vývoj Firefoxu přesunut z Mercurialu na Git. Oficiální repozitář se zdrojovými kódy je na GitHubu.
V terminálovém multiplexoru GNU Screen byly nalezeny a v upstreamu ve verzi 5.0.1 už opraveny bezpečnostních chyby CVE-2025-23395, CVE-2025-46802, CVE-2025-46803, CVE-2025-46804 a CVE-2025-46805. Podrobnosti na blogu SUSE Security Teamu.
Training Solo (Paper, GitHub) je nejnovější bezpečnostní problém procesorů Intel s eIBRS a některých procesorů ARM. Intel vydal opravnou verzi 20250512 mikrokódů pro své procesory.
Byla vydána nová verze 25.05.11 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Nejnovější Shotcut je již vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.
Svobodný elektronický platební systém GNU Taler (Wikipedie, cgit) byl vydán ve verzi 1.0. GNU Taler chrání soukromí plátců a zároveň zajišťuje, aby byl příjem viditelný pro úřady. S vydáním verze 1.0 byl systém spuštěn ve Švýcarsku.
Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 209. brněnský sraz, který proběhne tento pátek 16. května od 18:00 ve studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Jelikož se Brno stalo jedním z hlavních míst, kde se vyvíjí open source knihovna OpenSSL, tentokrát se OpenAlt komunita potká s komunitou OpenSSL. V rámci srazu Anton Arapov z OpenSSL
… více »GNOME Foundation má nového výkonného ředitele. Po deseti měsících skončil dočasný výkonný ředitel Richard Littauer. Vedení nadace převzal Steven Deobald.
Byl publikován přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie) za uplynulé dva měsíce. Servo zvládne už i Gmail. Zakázány jsou příspěvky generované pomocí AI.
Raspberry Pi Connect, tj. oficiální služba Raspberry Pi pro vzdálený přístup k jednodeskovým počítačům Raspberry Pi z webového prohlížeče, byla vydána v nové verzi 2.5. Nejedná se už o beta verzi.
mkfs.btrfs /dev/sdb1Přidal druhý disk:
btrfs device add /dev/sdb1 /To proběhlo bez problému, potom balancing:
sudo btrfs fi balance start -mconvert=raid1 -sconvert=raid1 -dconvert=raid1 -f / ERROR: error during balancing '/': Input/output errordmesg:
pou@wolf:~$ sudo dmesg [2112712.190302] BTRFS info (device sda1): relocating block group 10766778368 flags 17 [2112712.527166] BTRFS info (device sda1): relocating block group 9693036544 flags 17 [2112724.780928] BTRFS info (device sda1): found 39295 extents [2112738.949982] BTRFS info (device sda1): found 39288 extents [2112739.921742] BTRFS info (device sda1): relocating block group 4324327424 flags 1 [2112759.323408] BTRFS warning (device sda1): csum failed ino 264 off 404922368 csum 1791219600 expected csum 3524111029 [2112759.324131] BTRFS warning (device sda1): csum failed ino 264 off 404922368 csum 1791219600 expected csum 3524111029První disk má 64G druhý (nově přidaný) má 128G - což myslím, že by vadit nemělo. Prosím o radu. Děkuji
Řešení dotazu:
[2112759.323408] BTRFS warning (device sda1): csum failed ino 264 off 404922368 csum 1791219600 expected csum 3524111029
no tady ti pise ze mu nesedi kontrolni soucet pri cteni z toho originalniho disku....
sudo btrfs check --repair /dev/sda1 enabling repair mode /dev/sda1 is currently mounted. Aborting.Jedná se o server na který mám horší fyzický přístup (proto ten druhý založní disk).
sudo btrfs scrub start /Skontroluj kedy scrub skončí:
sudo btrfs scrub status /V dmesg by sa mali objaviť chybové výpisy aj s názvami súborov. Opraviť súbory (záloha, vymazať...). Spustiť scrub, keď bude bez chyby pokračovať s raid.
A možná taky zkusit ten balance
provést v rescue režimu nebo zkrátka v režimu, kdy bude méně programů otravovat se špatným použitím O_DIRECT
— pokud by to jinak nešlo. Jak jsem psal níže, tohle opravdu vypadá na chybu, která by s tím mohla souviset.
Identifikace poškozených souborů a jejich mazání je opravdu až to poslední. Dokud je v logu u nějakého souboru warning, nikoliv error, rozhodně to není důvod k jeho smazání!
Myslím si, že vysvětlení by mohlo být tady v kapitole Direct IO and CRCs. Odkazovaný E-mail nabízí podrobnější vysvětlení. Ten log skutečně říká warning, nikoliv error. Třeba nějaká aplikace během toho balancování používala ošklivým způsobem direct IO (O_DIRECT
). Jenom mi není jasné, proč celý balance
kvůli tomu ohlásil chybu.
Kdy na tom oddíle naposledy proběhl scrub
? Bohužel tohle v odkazovaném návodě úplně chybí. Před každou takovou větší operací, která mění strukturu filesystému, je rozumné nechat proběhnout
scrub
, čistě pro jistotu. To bych i teď doporučoval jako úplně první věc.
(Následující je jen kontext, který pravděpodobně nesouvisí s tímto konkrétním případem: Kdyby tam byl místo warning error, jmenovalo by se to silent data corruption. Btrfs chrání proti silent data corruption jednoduše tím, že nikdy nevrátí poškozená data. Má checksumy dat i metadat a jakmile checksum nesedí, příslušný blok se nedá přečíst. To je sice na první pohled kruté, ale hned na druhý pohled je to mnohem lepší, než kdyby se poškozená data dál šířila a kopírovala (jako u většiny jiných souborových systémů). U jednodiskového filesystému s jednou replikou dat to znamená, že příslušný blok je ztracený. U dvou replik dat na jednom disku nebo u RAID1/5/6 konfigurace přes více disků se naštěstí blok obvykle dá opravit; buď se načte z druhé repliky, nebo se dopočte z parity — samozřejmě jen pokud checksum u druhé repliky či checksumy u dostatku "paritních" bloků sedí.)
Zpět k tématu: Tady je popsaný příkaz, který umožňuje identifikovat soubor (nebo adresář), který se četl, když ten kontrolní součet neseděl (podle čísla inodu):
sudo btrfs inspect-internal inode-resolve 264 /
Na jednom z mých strojů je pod tímto inodem vedený adresář /dev
, na jiném je tam adresář /var
. Je to samozřejmě individuální podle toho, jak proběhla instalace toho systému; takhle nízká čísla inodů dostanou obvykle soubory a adresáře vytvořené na filesystému jako jedny z prvních.
Kdyby byl poškozený adresář /dev
, jeho smazání a nahrazení (pomocí live média) je celkem triviální záležitost. Kdyby byl ovšem poškozený adresář /var
, běhal by mi z toho mráz po zádech. Jak ovšem naznačuje fakt, že jde o warning, nikoliv error, nemusí tohle nic zásadního znamenat. Doporučuji prostě spustit
scrub
a pak se uvidí, co a jak.
sudo btrfs inspect-internal inode-resolve 264 /
jsem zjistil, který soubor je poškozen a smazal ho (byly to soubory zálohy logů).
Poté jsem znovu spustil
sudo btrfs scrub start /Stále tam však trčí 5chyb -
sudo btrfs scrub status / scrub status for f214bc43-6382-4157-b80a-54f6f6f7a8af scrub started at Mon May 13 21:06:18 2019 and finished after 00:02:23 total bytes scrubbed: 4.37GiB with 5 errors error details: csum=5 corrected errors: 0, uncorrectable errors: 5, unverified errors: 0
sudo dmesg [2124093.659350] BTRFS warning (device sda1): checksum error at logical 4069195776 on dev /dev/sda1, sector 10061184, root 263, inode 159281, offset 9424896, length 4096, links 1 (path: var/lib/influxdb/wal/_internal/monitor/6/_00001.wal) [2124093.659382] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 29, gen 0 [2124093.659404] BTRFS error (device sda1): unable to fixup (regular) error at logical 4069195776 on dev /dev/sda1 [2124093.667186] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 30, gen 0 [2124093.667211] BTRFS error (device sda1): unable to fixup (regular) error at logical 4069212160 on dev /dev/sda1 [2124093.668069] BTRFS warning (device sda1): checksum error at logical 4069216256 on dev /dev/sda1, sector 10061224, root 263, inode 160032, offset 0, length 4096, links 1 (path: var/backups/dpkg.status.1.gz) [2124093.668098] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 31, gen 0 [2124093.668117] BTRFS error (device sda1): unable to fixup (regular) error at logical 4069216256 on dev /dev/sda1 [2124093.668743] BTRFS warning (device sda1): checksum error at logical 4069220352 on dev /dev/sda1, sector 10061232, root 263, inode 160032, offset 4096, length 4096, links 1 (path: var/backups/dpkg.status.1.gz) [2124093.668759] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 32, gen 0 [2124093.668769] BTRFS error (device sda1): unable to fixup (regular) error at logical 4069220352 on dev /dev/sda1 [2124093.669341] BTRFS warning (device sda1): checksum error at logical 4069224448 on dev /dev/sda1, sector 10061240, root 263, inode 160032, offset 8192, length 4096, links 1 (path: var/backups/dpkg.status.1.gz) [2124093.669356] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 33, gen 0 [2124093.669367] BTRFS error (device sda1): unable to fixup (regular) error at logical 4069224448 on dev /dev/sda1 [2124293.937484] BTRFS warning (device sda1): checksum error at logical 4069195776 on dev /dev/sda1, sector 10061184, root 263, inode 159281, offset 9424896, length 4096, links 1 (path: var/lib/influxdb/wal/_internal/monitor/6/_00001.wal) [2124293.937516] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 34, gen 0 [2124293.937538] BTRFS error (device sda1): unable to fixup (regular) error at logical 4069195776 on dev /dev/sda1 [2124293.945168] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 35, gen 0 [2124293.945189] BTRFS error (device sda1): unable to fixup (regular) error at logical 4069212160 on dev /dev/sda1 [2124293.945928] BTRFS warning (device sda1): checksum error at logical 4069216256 on dev /dev/sda1, sector 10061224, root 263, inode 160032, offset 0, length 4096, links 1 (path: var/backups/dpkg.status.1.gz) [2124293.945951] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 36, gen 0 [2124293.945966] BTRFS error (device sda1): unable to fixup (regular) error at logical 4069216256 on dev /dev/sda1 [2124293.946667] BTRFS warning (device sda1): checksum error at logical 4069220352 on dev /dev/sda1, sector 10061232, root 263, inode 160032, offset 4096, length 4096, links 1 (path: var/backups/dpkg.status.1.gz) [2124293.946690] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 37, gen 0 [2124293.946705] BTRFS error (device sda1): unable to fixup (regular) error at logical 4069220352 on dev /dev/sda1 [2124293.947398] BTRFS warning (device sda1): checksum error at logical 4069224448 on dev /dev/sda1, sector 10061240, root 263, inode 160032, offset 8192, length 4096, links 1 (path: var/backups/dpkg.status.1.gz) [2124293.947420] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 38, gen 0 [2124293.947434] BTRFS error (device sda1): unable to fixup (regular) error at logical 4069224448 on dev /dev/sda1Jenže soubor/y neexistuje/í:
sudo btrfs inspect-internal inode-resolve 160032 / ERROR: ino paths ioctl: No such file or directory
sudo ls /var/backups/dpkg.status.1.gz ls: nelze přistoupit k '/var/backups/dpkg.status.1.gz': Adresář nebo soubor neexistujeDíky
Tady se tentokrát objevuje root 263
.
Jestli si to dobře pamatuju, tohle číslo by mohlo být ID nějaké subvolume. Ukazuje se číslo 263 někde ve výpisu btrfs subvolume list /
?
Jestli jo a jestli příslušná subvolume není přímo přístupná z `/var` (třeba proto, že je k ní úplně jiná cesta; může jít třeba o snapshot namountovaný kdovíkam, jestli vůbec někam), pak by to vysvětlovalo, proč ten soubor v kořenovém souborovém systému není.
U mě například ten výpis subvolume vypadá takto:
ID 259 gen 824284 top level 5 path arch_root ID 260 gen 824317 top level 5 path arch_home ID 261 gen 824317 top level 5 path arch_var ID 262 gen 824210 top level 259 path etc ID 263 gen 29 top level 261 path arch_var/lib/machines ID 891 gen 601725 top level 261 path arch_var/lib/portables
Samozřejmě tam toho bude mnohem víc (ba spousta) u někoho, kdo používá automatické periodické snapshoty a/nebo atomické aktualizace systému pomocí snapshotů.
Chtělo by to podívat se, která subvolume má ID 263 a případně kam je namountovaná. Ono se taky dá takhle do té subvolume přímo explicitně podívat:
mount -o subvolid=263 UUID=f214bc43-6382-4157-b80a-54f6f6f7a8af /mnt
Takhle^^^ se ta příslušná subvolume objeví v /mnt
a dá se zkontrolovat, jestli je tam /mnt/var/backups/dpkg.status.1.gz
nebo ne (a jestli se dá smazat). No a jestli ne, pak mi nezbývá než konstatovat, že v tomhle případě nechápu, co se děje.
Ještě k těm cestám k subvolume: Některé systémy jsou nastavené tak, že bootují z jiné subvolume než kořenové. Třeba zrovna já to tak mám. Takže například arch_root
je můj kořenový filesystém a subvolume arch_var
je namountovaný do /var
, což z pohledu kořenové subvolume je /arch_root/var
. (Adresáře, kde se mají implicitně objevovat subvolume, se dají určit pomocí btrfs subvolume set-default ...
nebo postaru a tradičně (byť méně elegantně) pomocí /etc/fstab
a optionů subvol
nebo subvolid
.
Protože seznam subvolume a (někdy; nejsem si jistý jak přesně to je) i cesty k poškozeným souborům se generují podle toho set-default
nastavení, nikoliv podle toho, jak věci uspořádá /etc/fstab
, může se hodit nakouknout do kořenové subvolume. To se dá zařídit jednoduše namountováním filesystému (opakovaně), třeba do /mnt
:
mount UUID=f214bc43-6382-4157-b80a-54f6f6f7a8af /mnt
Podle toho, co se tam^^^ objeví, můžou pak cesty k subvolume nebo k souborům v dmesg
dávat lepší smysl. Například u mě bude po takovém mountu (v souladu se seznamem subvolumes zmíněným výše) vidět toto:
# ls /mnt arch_home arch_root arch_var
pou@wolf:~$ sudo dmesg -c pou@wolf:~$ sudo btrfs scrub start / scrub started on /, fsid f214bc43-6382-4157-b80a-54f6f6f7a8af (pid=6588) pou@wolf:~$ ERROR: there are uncorrectable errors pou@wolf:~$ sudo btrfs scrub status / [sudo] heslo pro pou: scrub status for f214bc43-6382-4157-b80a-54f6f6f7a8af scrub started at Tue May 14 07:04:58 2019 and finished after 00:02:23 total bytes scrubbed: 4.38GiB with 1 errors error details: csum=1 corrected errors: 0, uncorrectable errors: 1, unverified errors: 0 pou@wolf:~$ sudo dmesg [2160221.182631] BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 41, gen 0 [2160221.182657] BTRFS error (device sda1): unable to fixup (regular) error at logical 4069212160 on dev /dev/sda1 pou@wolf:~$ sudo btrfs scrub status / scrub status for f214bc43-6382-4157-b80a-54f6f6f7a8af scrub started at Tue May 14 07:04:58 2019 and finished after 00:02:23 total bytes scrubbed: 4.38GiB with 1 errors error details: csum=1 corrected errors: 0, uncorrectable errors: 1, unverified errors: 0 pou@wolf:~$
journalctl --output cat | grep '4069212160' | uniq
pou@wolf:~$ sudo journalctl --output cat | grep '4069212160' | uniq BTRFS error (device sda1): unable to fixup (regular) error at logical 4069212160 on dev /dev/sda1 pou@wolf:~$Ještě doplním:
pou@wolf:~$ sudo journalctl --output cat | grep -i btrf |tail -n 30 BTRFS warning (device sda1): checksum error at logical 4069220352 on dev /dev/sda1, sector 10061232, root 263, inode 160032, offset 4096, length 4096, links 1 (path: var/backups/dpkg.status.1.gz) BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 37, gen 0 BTRFS error (device sda1): unable to fixup (regular) error at logical 4069220352 on dev /dev/sda1 BTRFS warning (device sda1): checksum error at logical 4069224448 on dev /dev/sda1, sector 10061240, root 263, inode 160032, offset 8192, length 4096, links 1 (path: var/backups/dpkg.status.1.gz) BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 38, gen 0 BTRFS error (device sda1): unable to fixup (regular) error at logical 4069224448 on dev /dev/sda1 pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs scrub status / pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs inspect-internal inode-resolve 160032 / pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs scrub status / pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs subvolume list / pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs device stat /dev/sda pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs scrub start / pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs scrub status / pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs scrub status / BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 39, gen 0 BTRFS error (device sda1): unable to fixup (regular) error at logical 4069212160 on dev /dev/sda1 pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs scrub status / pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs scrub start / pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs scrub status / pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs scrub status / pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs scrub status / pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs scrub status / BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 40, gen 0 BTRFS error (device sda1): unable to fixup (regular) error at logical 4069212160 on dev /dev/sda1 pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs scrub status / pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs scrub start / BTRFS error (device sda1): bdev /dev/sda1 errs: wr 0, rd 0, flush 0, corrupt 41, gen 0 BTRFS error (device sda1): unable to fixup (regular) error at logical 4069212160 on dev /dev/sda1 pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs scrub status / pou : TTY=pts/1 ; PWD=/home/pou ; USER=root ; COMMAND=/bin/btrfs scrub status / pou@wolf:~$
Tak u toho čísla bloku by se mělo dát zjistit, ze kterého souboru pochází:
btrfs inspect-internal logical-resolve 4069220352 /
Ovšem tohle^^^ má zase ten samý problém kolem hledání cest — zase to vyžaduje implicitní kořenový subvolume. Když se nabootuje z jiného subvolume, říká mi to: ERROR: logical ino ioctl: No such file or directory
.
Takže, pokud tomu dobře rozumím, workaround by asi byl:
mount UUID=f214bc43-6382-4157-b80a-54f6f6f7a8af /mnt btrfs inspect-internal logical-resolve 4069220352 /mnt btrfs inspect-internal logical-resolve 4069224448 /mnt btrfs inspect-internal logical-resolve 4069212160 /mnt
Toto^^^ by mělo (snad, možná) říct, kterých souborů se problém týká. No a jestli ani tohle nepřinese kloudný výsledek, já osobně bych pak asi vyzkoušel příkaz btrfs restore ...
. To už je ale těžké kladivo a musí se to provést na odmountovaném filesystému.
Tento blogpost shrnuje možné postupy v různých situacích (včetně této) a zmiňuje taky btrfs restore ...
. Možná by se hodilo něco z toho zkusit, ale nikdy jsem podobnou situaci v praxi neviděl, takže nevím, co doporučit.
Tiskni
Sdílej: