uBlock Origin ve Firefoxu a ochrana CNAME

uBlock Origin ve Firefoxu a ochrana CNAME
« kdy: 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á), 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)


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)
« Poslední změna: 02. 05. 2021, 18:30:31 od Petr Krčmář »


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“.