Fórum Root.cz
Hlavní témata => Software => Téma založeno: mikesznovu 02. 05. 2021, 15:54:32
-
Tohle bude trochu expertní dotaz. Když si ve Firefoxu s doplnkem uBlock Origin zapnu funkci ublock-Settings Ochrana proti CNAME cloakingu (kdo neví o co jde, tak tady je popis se to zapíná (https://github.com/gorhill/uBlock/wiki/Dashboard:-Settings#uncloak-canonical-names)), tak to dokáže odhalit jestli načítané domény na stránce "nevedou na jiné" domény, akorát na úrovni DNS, tedy na jiné úrovni než HTTP redirect. (Někde je to zneužíváno malwarem a reklamami například b.datart.cz -> datard.sentry.io nebo s.noviny.cz -> d1243xyz.cloudfront.net, někdy je to užitečné pro cdn code.jquery.com -> něco.hwcdn.net)
(https://user-images.githubusercontent.com/585534/74553124-aee6ce00-4f24-11ea-8aea-7963cb21bbf4.png)
Ostatně, podobná věc jde provozovat mimo browser (v browseru je to efektivnější, protože jen ten má informaci, která doména v "tu chvíli je v adresním řádku", což je určitá strategická optimalizace, nebo spíš zpřehlednění), třeba na dns serveru v routeru nebo jako systémový resolver, pro něj se dotazy na domény z browseru jeví stejně, tuhle informaci nemá.
Dotaz:
Příklad: nějaká stránka načítá code.jquery.com/skript.js (jako příklad to není praktické, tak řekněme že načítá ještě domény tracking.mojestranka.cz, což je cname na googleanalytics.com). Rozšíření uBlock Origin mi s touto ochranou ukáže v seznamu domén řádek navíc modrým písmem x1234x5.hwcdn.net "code.jquery.com" u kterého separátně mohu povolit/zakázat načítání.
Proč ale se mi v dns logu už nezobrazí dotaz na hwcdn.net ??? (Ať už je ve firefoxu zablokovaný nebo ne)
Pro informaci: jaká je komunikace firefoxu s DNS serverem:
Počítač s FF pošle na DNS server na routeru : DOTAZ typu A na : code.jquery.com: type A, class IN
Router odpoví: Standard query response 0xc0fb A code.jquery.com CNAME cds.s5x3j6q5.hwcdn.net A 69.16.175.10 A 69.16.175.42 OPT -- tedy Answers má 3 položky
- code.jquery CNAME xyz.hwcdn.net
- xyz.hwcdn.net A 123.4.5.6
- xyz.hwcdn.net A 123.4.5.7
Výsledek je, že pokud si zablokuji xyz.hwcdn.net (na systémovém resolveru, ne ve firefoxu a ni na routeru), tak to prohlížeč nezajímá uBlock Používá nějaké api browser.dns, proto to funguje jenom na firefoxu. Samozřejmě není problém si blokovat domény ve firefoxu, mě ale zajímá, proč se k němu nedostane informace z systémového resolveru
Proč se ptám:
Pokud si dám ochranu proti CNAME cloakingu na systémovém resolveru (na smartphonu, kde běží prohlížeč), tak tam vidím, že při pokusu o resolvování code.jquery.com je tam ihned pod tímto jménem xyz.hwcdn.net, a mohu ho tedy v systémovém resoloveru zablokovat. Je přitom uplně jedno, jestli v firefoxu je ta ochrana zapnutá nebo vypnutá.
Takže shrnuto:
systémový resolver s decloakováním CNAME vidí oba DNS názvy (code.jquery + .hwcdn.net), takže případně kdybych blacklistoval hwcdn.net, tak aplikace neresolvuje tázané dns jméno. (pokud zablokuji code.jquery, tak je to samozřejmé.) V logu jsou vidět obe jména.
Ale Firefox-uBlock když resolvuje tázané jméno, tak ví, na jaké jméno se resolvuje (protože je to napasané modrým písmem - viz obrázek).Ale v systémovém logu je jen první jméno(code.jquery.com)
Proč to nefunguje při vypnuté CNAME ochraně v systémovém resolveru, tak že firefox už nezjišťuje u systémového resolveru odpoveď na hwcdn.net. Načte se obsah se správné IP hwcdn 123.4.5.7 místo blacklistované (0.0.0.0)
-
Když se DNS resolveru ptáte na CNAME záznam, může resolver rovnou vrátit odpověď i pro ten alias. Tj. klient se zeptá: „Jaká je IP adresa pro code.jquery.com?“ A resolver odpoví: „code.jquery.com je alias pro cds.s5x3j6q5.hwcdn.net. A mimochodem, cds.s5x3j6q5.hwcdn.net má IP adresy 69.16.175.42 a 2001:4de0:ac18::1:a:3b“.