abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

    8.11. 00:33 | Nová verze

    Byla vydána OpenIndiana 2026.10. Unixový operační systém OpenIndiana (Wikipedie) vychází z OpenSolarisu (Wikipedie).

    Ladislav Hagara | Komentářů: 11
    8.11. 00:22 | IT novinky

    Americký výrobce polovodičů onsemi (ON Semiconductor) zrušil plány na rozšíření výroby v rožnovském závodě v Česku za dvě miliardy dolarů (podle aktuálního kurzu zhruba 43,5 mld. Kč). Důvodem je vývoj na trhu.

    Ladislav Hagara | Komentářů: 28
    7.11. 13:00 | Bezpečnostní upozornění
    Nové vydání zlib opravuje několik problémů při kompresi a dekompresi dat, přetečení bufferů, čtení mimo vyhrazenou paměť, únik neinicializovaných dat. Zvlášť významné jsou chyby v inflateGetDictionary(), inflateSync() a gzwrite(), které mohou způsobit poškození paměti. Vysoká relevance - zlib používá řada systémových i aplikačních komponent.
    vencour | Komentářů: 1
    7.11. 12:25 | Bezpečnostní upozornění
    Digicert hlásí neoprávněné čtení archivních zákaznických údajů. Došlo k němu po migraci z února 2025, po níž se interní systém, dříve dostupný jen přes VPN, stal přístupným z internetu. Chyba v oprávněních umožnila nově vytvořeným účtům číst archivní záznamy. K přístupu k datům mělo dojít mezi 27. červnem a 2. červencem 2026. DigiCert neoprávněné čtení potvrdil až 19. října 2026. Problém zpočátku vyhodnotil jako tvorbu účtů, ne jako … více »
    vencour | Komentářů: 1
    7.11. 04:44 | Pozvánky

    O víkendu probíhá na FIT VUT v Brně konference OpenAlt 2026 o otevřeném softwaru a datech, IT bezpečnosti, DIY a IoT. Na programu je spousta zajímavých přednášek. Pokud jste v Brně, stavte se. Vstup zdarma. Přednášky lze sledovat i online na VHSky a YouTube.

    Ladislav Hagara | Komentářů: 0
    7.11. 02:11 | IT novinky

    Qualcomm uzavřel víceletou dohodu se SpaceX. Bude dodávat rádiové technologie, baseband jednotky a software pro plánovanou pozemní 5G síť Starlink Mobile. Výstavba má zahrnovat desítky tisíc základnových stanic v USA. Zahájení nasazování se očekává v roce 2027. Qualcomm dohodu označuje za svůj dosud největší 5G kontrakt.

    vencour | Komentářů: 0
    7.11. 02:00 | IT novinky

    Google rozšířil Cloud Vulnerability Reward Program. Nově nabízí odměnu až 250 tisíc dolarů za vysoce závažné architektonické bezpečnostní chyby označované jako Root-in-Cloud.

    vencour | Komentářů: 0
    6.11. 12:22 | IT novinky

    V březnu byla oznámena spolupráce GrapheneOS s Motorolou. Nejnovější vlajka Motorola Signature 27 je první Motorola s oficiální podporou GrapheneOS. GrapheneOS (Wikpedie) je varianta Androidu zaměřující se na bezpečnost a soukromí.

    Ladislav Hagara | Komentářů: 5
    6.11. 04:55 | Nová verze

    Omarchy (Wikipedie) je linuxová distribuce s dlaždicovým správcem oken Hyprland. Založena je na Arch Linuxu. Vydána byla v nové verzi 4.5.0. Nově také pro Apple Silicon, konkrétně pro M1/M2/M3/Neo MacBooky.

    Ladislav Hagara | Komentářů: 3
    6.11. 03:22 | Nová verze

    Byla vydána nová stabilní verze 8.3 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 156 s bezpečnostními opravami z Chromia 157. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (8%)
     (7%)
     (4%)
     (21%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 3032 hlasů
     Komentářů: 36, poslední dnes 22:38
    Rozcestník

    Chrome sandboxován v dockeru

    6.12.2015 00:43 | Přečteno: 2102× | programování | Výběrový blog | poslední úprava: 8.12.2015 12:53

    Command-line aplikace a daemony se v dockeru nebo lxc sandboxují celkem jednoduše, ale browser potřebuje přístup k X serveru, zvuku, USB atd. - je to jedna z nejsložitějších aplikací systému. Malé HOWTO k sandboxnutí browseru. Funguje všechno, U2F autentizace má pár limitací (pokud nemáte Yubikey, U2F nemusíte řešit).

    HOWTO

    Nejprve vytvoříme chrome-browser/Dockerfile s obsahem níže. Za hodnoty uid a gid si dosadťe numerické hodnoty usera, který se bude používat pro komunikaci s X serverem. Nechceme X forwarding, chceme X komunikaci přes unixový socket - proto musí UID a GID sedět.
    # Pull base image.
    FROM ubuntu
    
    # Setup user with the same UID/GID as on your host system to make X session work over socket
    RUN export uid=1000 gid=1000 && \
        mkdir -p /home/developer && \
        echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
        echo "developer:x:${uid}:" >> /etc/group && \
        echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \
        chmod 0440 /etc/sudoers.d/developer && \
        chown ${uid}:${gid} -R /home/developer
    
    # Install Chrome
    RUN \
      apt-get install -y wget && \
      wget -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
      echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \
      apt-get update && \
      apt-get install -y google-chrome-stable
    
    # Define working directory.
    WORKDIR /home/developer
    
    # Define default command.
    CMD ["bash"]
    

    Na vytvoření image pustíme: docker build chrome-browser. Až se všechno dotahá a nainstaluje, musíme zjistit, jaký socket používá pulseaudio, asi nejlépe přes lsof -p $(pidof pulseaudio) | grep 'unix.*/native'. Nevím, zda existuje lepší způsob. Výsledek bude vypadat následovně:

    % lsof -p $(pidof pulseaudio) | grep /native
    pulseaudi 28453 user    9u     unix 0xffff8800b3edf740      0t0   716743 /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native
    pulseaudi 28453 user   31u     unix 0xffff88022fca2740      0t0   717186 /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native
    pulseaudi 28453 user   33u     unix 0xffff88017181dc00      0t0   716749 /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native
    pulseaudi 28453 user   34u     unix 0xffff8802335cc840      0t0   797769 /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native
    

    Pojmenujeme si image jako "chrome-browser". Nejprve spustíme výpis kontejnerů přes docker images a tagneme ho jako "chrome-browser".

    # docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    none                none                3a7eba31e1d4        3 minutes ago       536.5 MB
    # docker tag 3a7eba31e1d4 chrome-browser:latest
    

    Chrome browser uvnitř dockeru spustíme následovním skriptem, který se postará o komunikaci X serveru a pulseaudio přes unix socket:

    #!/bin/bash
    
    docker run -ti --rm \
        -u developer \
        -e DISPLAY=$DISPLAY \
        -v /tmp/.X11-unix:/tmp/.X11-unix \
        -e PULSE_SERVER=unix:/home/developer/pulse \
        -v /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native:/home/developer/pulse \
        -w /home/developer \
        chrome-browser \
        google-chrome
    

    Poznámka: pokud změníte systém uvnitř docker image, musíte ho commitnout přes docker commit z host systému. Až bude všechno hotové, můžete si v docker kontejneru odstranit /etc/sudoers.d/developer, který umožňuje uvnitř kontejneru sudo na "lokálního roota" bez hesla.

    Funguje všechno, U2F autentizace přes USB hidraw má limitace (update)

    Funguje celá funkcionalita Chrome browseru, U2F má mouchy - pod rootem funguje bez problémů, pod obyčejným uživatelským účtem má pár omezení. Chtělo to docela dlouhé debugování přes strace a další nástroje, ale funguje. Token musí být vložen do USB před spuštením kontejneru a musíte znát jeho hidraw device, např. /dev/hidraw4 (jinak docker vytvoří na host systému adresář stejného jména). Udev pravidla umí symlinky, ale symlink nestačí, chtělo by to hardlink. Takže skript bude vypadat (pozor na to, že --privileged dává přístup snad ke všem zařízením host systému, jenže bez něj k hidraw nepřistoupíte jako běžný user v dockeru):

    #!/bin/bash
    
    docker run -ti --rm \
        -u developer \
        -e DISPLAY=$DISPLAY \
        -v /tmp/.X11-unix:/tmp/.X11-unix \
        -e PULSE_SERVER=unix:/home/developer/pulse \
        -v /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native:/home/developer/pulse \
        -w /home/developer \
        -v /dev/bus/usb:/dev/bus/usb \
        -v /sys/bus/usb/:/sys/bus/usb/ \
        -v /sys/devices/:/sys/devices/ \
        -v /dev/hidraw4:/dev/hidraw4 \
        --privileged \
        chrome-browser \
        google-chrome
    

    Mimochodem, alsa mi nefungovala křížem přes host/kontejner hranici s libovolnou kombinací device a cgroup flagů, v strace se vždy výsledek otevření zvukové karty byl buď odmítnut přístup (EPERM) nebo dočasně nepřístupné (EAGAIN). Myslím, že je to stejně s tím pulseaudiem lepší.

           

    Hodnocení: 94 %

            špatné • dobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Max avatar 6.12.2015 21:41 Max | skóre: 73 | blog: Max_Devaine
    Rozbalit Rozbalit vše Re: Chrome sandboxován v dockeru
    Moc pěkné, díky.
    Zdar Max
    Měl jsem sen ... :(
    7.12.2015 10:01 dumblob | skóre: 10 | blog: dumblog
    Rozbalit Rozbalit vše Re: Chrome sandboxován v dockeru
    Hezke, diky. Mj. mam nyni brouka v hlave proc ALSA nejela. Nu a toho YubiKey je tez skoda.
    limit_false avatar 7.12.2015 16:20 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Chrome sandboxován v dockeru
    Toho Yubkey je škoda. Zkoušel jsem různé triky se zpřístupněním částí /sys a /dev/usb subsystémů, ale ani po dalším strace-ovaní se mi nepovedalo dohledat, v čem je konkrétně problém. Diffoval jsem stracy z host systému vs stracy z dockeru. Žádný podstatný rozdíl ale zatím neumím najít.
    When people want prime order group, give them prime order group.
    7.12.2015 12:05 ET
    Rozbalit Rozbalit vše Re: Chrome sandboxován v dockeru
    docker neznam, budu se na nej muset podivat, ale celkem me zarazilo
    echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer
    
    limit_false avatar 7.12.2015 12:24 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Chrome sandboxován v dockeru
    To je tam spíš kvůli tomu, aby se rychle dali doinstalovat balíčky a pro ladění. Samozřejme sudo bez hesla funguje jen v kontejneru.
    When people want prime order group, give them prime order group.
    7.12.2015 12:33 ET
    Rozbalit Rozbalit vše Re: Chrome sandboxován v dockeru
    pak bych to dopsal do zapisku a po instalaci/ladeni bych ten ucet odebral (jak rika kolega, jednotkou docasnosti je 1 furt)

    jinak pekny zapisek, diky, budu se na ten docker muset podivat ;-)
    7.12.2015 15:08 Jardík
    Rozbalit Rozbalit vše Re: Chrome sandboxován v dockeru
    Má to ale jeden háček. Tím, že si dovolil chrome přístup na Xka se naprosto zbytečně snažíš o jeho izolaci. Pokud se bojíš nějaké špehovací šmejďárny v Chrome (přestože Google tvrdí, že je to Chromium + extra krávoviny, nikdy mu nemůžeš věřit, že to nemá extra špehovátka), a proto Chrome izoluješ, tak si selhal. Špehovací šmejďárna teď klidně může posílat ostatním aplikacím X eventy a ovládat je a kopírovat data, odposlouchávat hesla apod, jednoduše skrze Xka. Dalo by se to např. pořešit použitím waylandu uvnitř dockeru, jenže Chrome, narozdíl od Chromia, asi pod waylandem neběží.
    limit_false avatar 7.12.2015 16:15 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Chrome sandboxován v dockeru
    S tím problémem X-ek je mi to jasné. Ono by stejně nebylo dobré dávat mu přístup k host USB zařízením, pokud bych byl cíl obejít "šmejďárnu" v Chrome. To už pak nějaká úplná virtualizace.

    Jako sandboxing je tenhle přístup spíš vhodný pro případnou obranu proti Chrome exploitu - exploit by musel velmi specificky jít po X funkcech. Když už bych měl takový problém, tak mám mnohem větší problém :-)

    Původně jsem tohle celé dělal kvůli rozběhnutí Chrome/Chromia na CentOS 6, kde Chrome nefunguje (příliš stará libc) a Chromium nelze přeložit. Není to můj hlavní prohlížeč, ale někdy se hodí. BTW překlad Chromia vyžaduje překlad celého speciálně upraveného gcc toolchainu kvůli nacl a pepperapi. To upravené gcc generuje kód, který se např. vyhýbá ret instrukci a dělá ruzné zarovnání, aby byl return-to-libc těžký.

    S tím waylandem a Chromiem to ale není až tak špatný nápad, někdy to vyzkouším. Jak se vlastně wayland napojí na host X server? Neudělalo by to stejný problém? Jinak pořád lze provozovat místo komunikace přes X socket něco jako VNC, ale to už mi použitelnější přijde seamless mód Virtualboxu.
    When people want prime order group, give them prime order group.
    7.12.2015 22:02 smazáno | skóre: 18 | blog: smazáno
    Rozbalit Rozbalit vše Re: Chrome sandboxován v dockeru
    Tech hacku je o dost vic. Takto prijde o automaticky updaty knihoven na kterych chrome zavisi (narozdil od pouziti systemove instalace), vsechen sitovy traffic jde z chrome pres extra NAT, ....
    7.12.2015 22:00 smazáno | skóre: 18 | blog: smazáno
    Rozbalit Rozbalit vše Re: Chrome sandboxován v dockeru
    Zajimavy. Jak resis respektovani systemoveho nastaveni ... od "blbyho" resolv.conf po uzivatelsky nastaveni fontu, antialiasing, tematu, ikonek atd. atd.
    limit_false avatar 7.12.2015 22:44 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Chrome sandboxován v dockeru
    Soubory se dají sdílet přes -v flag. Docker má speciální nastavení pro DNS, nepoužívá se resolv.conf (nebo se asi z toho nastavení generuje).

    Témata jsem zatím nějak neřešil. Chrome vypadá jako kdyby ani v sandboxu neběžel, má ten svůj nativní vzhled. Jediný viditelný rozdíl je např. ve file chooser dialogu. Zřejmě by to šlo nastavit uvnitř kontejneru na stejné téma, jako požívá host systém.
    When people want prime order group, give them prime order group.
    8.12.2015 13:07 smazáno | skóre: 18 | blog: smazáno
    Rozbalit Rozbalit vše Re: Chrome sandboxován v dockeru
    Zajimalo me to hlavne kvuli tomu, jak jsou dnes snahy prosazovat docker jako sandbox pro desktopve aplikace (GNOME, Ubuntu), tak jestli uz hosi nejak vyresili integraci - a koukam ze ne (predopkladam ze rozbiti konzistence celeho desktopu je pro ne "minor bug" jestli vubec), ze se stale musi resit vse pripad od pripadu.

    btw. s/nativni/nenativni/;)
    8.12.2015 14:43 Jardík
    Rozbalit Rozbalit vše Re: Chrome sandboxován v dockeru
    Vzhledem k tomu, že vývojáři gnome/gtk každou chvíli rozbíjejí témátka a jeho změna je součástí jen gnome-tweak-tool, stejně tak písmo, tak bych se vůbec nedivil, že je to nezajímá. Prostě ti vhodí to svoje rozmazané a nečitelné písmo, jeho velikost a jejich téma a jesli budeš chtít něco jiného, tak "dodělej si sám".
    10.12.2015 15:40 smazáno | skóre: 18 | blog: smazáno
    Rozbalit Rozbalit vše Re: Chrome sandboxován v dockeru
    Ano.
    limit_false avatar 7.12.2015 22:49 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše U2F USB update
    Po dalším hackování mi funguje U2F, ale zatím jenom pod rootem. Nevím zatím proč, protože USB zařízení sdílím přes /dev/bus/usb, /sys/devices, atd. a práva mají pro stejný UID/GID. Nicméně pod tím samým userem, kde funguje X a pulseaudio dostávám pro USB přístup chybu -EACCESS.

    Dobrý testovací nástroj pro U2F je u2f-host.
    When people want prime order group, give them prime order group.
    limit_false avatar 8.12.2015 09:29 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: U2F USB update
    Vypadá to asi na nějaký bug v dockeru - zařízení /dev/ttyUSB* lze minicomem v dockeru připojit, ale USB hidraw Yubikey ne.

    K USB je do spouštěcího skriptu potřeba doplnit:

        -v /dev/bus/usb:/dev/bus/usb \
        -v /sys/bus/usb/:/sys/bus/usb/ \
        -v /sys/devices:/sys/devices/ \
        --privileged \
    
    When people want prime order group, give them prime order group.
    limit_false avatar 8.12.2015 12:53 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: U2F USB update
    Záhada USB hidraw vyřešena, viz update v článku.
    When people want prime order group, give them prime order group.

    Založit nové vlákno • Nahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.