Mire jó a CDN?

Fórumok

Hát arra, hogy elég egyetlen ponton megnyomni, és máris többezer honlapot lehet megfertőzni általa. Most pont ez történt a polyfill.io-val. Ha valaki használja ezt a CDN-t, sörgősen álljon le vele.

https://sansec.io/research/polyfill-supply-chain-attack

A cloudflare persze próbál úgy csinálni, mintha nem az ő saruk lett volna a CDN-ek hájpolása úgy eleve; na nem mintha egy single point of failure lecserélése egy másik single point of failure-re bármit is javítana a helyzeten...

https://blog.cloudflare.com/automatically-replacing-polyfill-io-links-w… (sic!)

Már nagyon várom, mikor fogja valaki felnyomi a cloudflare-t és egycsapásra megfertőzni millió honlapot!

Hozzászólások

Mire jó az internet? Hát arra, hogy elég egyetlen ponton megnyomni, és máris többezer honlapot lehet megfertőzni általa. Ha valaki használja az internetet, sörgősen álljon le vele. :D

A linux nem érintett ahogy látom. No problem. :)

"Sose a gép a hülye."

Barki hasznalhat 1-nel tobb CDN-t egyszerre (mi pl 4-et 5-ot), hogy lesz ebbol SPoF?

Barki hasznalhat 1-nel tobb CDN-t egyszerre

Hogy töltöd be ugyanazt a jslib-et egy html oldalon belül 1-nél több cdn-ről?

hogy lesz ebbol SPoF?

Hát nem nyilvánvaló? Ha lerohad a cloudflare pl., akkor egycsapásra több millió oldal nem fogja tudni betölteni a js szarját és elérhetetlenné válik.

A vps-ről nyújtott Vér István Bt. szolgáltatása pöpec, de a Cloudflare az SPoF? Globálisan nagyon sok adatközpontból hálózati eszközök és gépek tízezreiről nyújtanak nagyon elosztott nagyon hibatűrő szolgáltatást. És semmi nem tart vissza hogy egynél több CDN-t sorolj fel a DNS rekordban, ha félsz attól, hogy a CF letérdel.

Tudok még pár védendő elemet:

  • DNS: érdemes a felhasználóknak email és SMS formában is elküldeni a mindenkori aktuális IP címét a szolgáltatásodnak
  • Internet: heti CD mellékletben érdemes terjeszteni a tartalmat szigorúan papír újság mellett, amiben offline is lehet reklámozni
  • Google: senki sem emlékszik hol van a pöpec kis szolgáltatásod, enélkül nem találnak oda. Érdemes postai úton hetente emlékeztetni a felhasználókat 
  • Bank: no money, no business, valahogy be kell szedni lóvét a felhasználóktól akkor is, ha összeomlik a bankrendszer. A fentiekben javasolt posta helyett érdemes az újságot és a heti emlékeztetőket már egyből izmos behajtókkal kiküldeni, nehogy a feledékeny felhasználóknak ne égjen a retinájukba, hogy fizetniük kell.

A vps-ről nyújtott Vér István Bt. szolgáltatása pöpec

Hiszed Te, én sosem mondtam ilyent.

Cloudflare az SPoF?

Igen, pontosan ugyanúgy, ahogy a polyfill is az.

És semmi nem tart vissza hogy egynél több CDN-t sorolj fel a DNS rekordban

Ezt HTML-ből...? Vagy Vér István Bt. által gondoltad?

És ez a DNS hogy véd meg az ellen, hogy valaki felnyomja a cloudflare-t és fertőzött js-ekkel pakolja tele? Pont mint ahogy itt most történt a polyfill-el? Azt hiszed, egy DNS rekord megvéd ettől?

Na várj, itt két különböző architektúra elemről beszélünk. 

A CDN egy elosztott cache réteg, ami mögött van egy tartalom szolgáltató (webszerver), ami felelős azért, hogy mi megy kiszolgálásra és az milyen cache policy mellett. 

Az, hogy a külső függőségeidről csinálsz e másolatot a saját webszerveredre vagy sem, az egy független probléma attól, hogy skálázási vagy DDoS védelmi szempontból raksz e elé CDN-t.

A polyfill egy ügyes, de security szempontból eredetileg is igencsak megkérdőjelezhető szolgáltatással állt elő, a "webszerverén" módosított js verziókat készített röptében, amiket egyébként a Cloudflare-en mint CDN-en keresztül terített, ezért tudta a CF URL rewrite-tal kidobni őket

Ki mondta, hogy a CDN egy biztonsági megoldás? Te magad írod, hogy:

nem mintha egy single point of failure lecserélése egy másik single point of failure-re bármit is javítana a helyzeten

Vagyis a CDN nem javít, de nem is ront a biztonságon. Tessék használni subresource integrity ellenőrzést, pont erre találták ki.

Vagyis a CDN nem javít, de nem is ront a biztonságon.

Hogyne rontana. Behoztál egy plusz függőséget a képbe, amire semmi kihatással sem tudsz lenni. Ha elmegy a cdn, vagy ha lecserélik az ott tárolt jquery-t egy fertőzöttre, akkor megszívtad úgy is, hogy a szerveredet fel sem kellett törni.

Pontosan ez történt most a polyfill-el, és a couldflare-el is bármikor megtörténhet.

No. Azért válasszuk szét, hogy "megtörik a CDN-t" vagy bekerül az origin/source részre egy malware terjesztő, és a CDN oldal értelem szerűen nekiáll cache-elni. Az mennyivel jobb amikor hasonló logikivál nyílt forrású csomagforrásban rejtenek el eztazt (megtörtént nemrég), és minden Linux disztró átveszi.

mire jo a viz? hat arra hogy szociopata meszarosok beledobjak a megeroszakolt nok hullait....persze masra is, de most arrol beszelunk hogy a viz ocsmany szar dolog :D

Én két részre választanám. Van, amikor általános fájlokat (JS könyvtár, ikonkészlet, betűtípus, ..) nem letöltesz és saját szerverről szolgálsz ki, hanem külsős CDN-ről hivatkozod be. Ez szerintem csak arra jó, hogy a CDN kiszolgálója nyomon tudjon követni, valószínűleg ezért is nyomják nagyon mindenhol. A másik 'előnye', hogy úgy lehet pl. egy WP-s oldalba behúzni sok millió függőséget, hogy nem kell fájlokhoz nyúlni, nem kell programozni, csak Ctrl+C és Ctrl+V és már működik is :)

Ill. van az az eset, amikor jelentős forgalmat bonyolít egy weboldal, és a statikus tartalmakat (JS, CSS mellett nem változó képek is pl.) területileg elosztva, több szerverről szolgálnak ki. Ezzel skálázhatóbbá válik a rendszer és költséghatékonyabb is, személy szerint ennek látom értelmét, de ezzel tényleg csak komoly forgalom esetén van értelme foglalkozni.

Ez szerintem csak arra jó, hogy a CDN kiszolgálója nyomon tudjon követni, valószínűleg ezért is nyomják nagyon mindenhol.

Igen, pontosan erre van, minden más csak parasztvakítás ls ködösítés.

Semmivel sem lesz lassabb a honlap, ha a js-t ugyanonnan tölti le a böngésző, mint a html-t és nem pedig egy harmadik féltől. Sőt, CDN-hez újabb tcp csatornát kell kiépíteni, míg a helyben tárolt js jöhet ugyanabban a csatornában is. (Az esetleges szerverközpontok közötti latency meg egyébként is annyira minimális manapság, hogy egy átlaguser észre sem veszi, EU-s szerverről vagy USA-beli szerverről töltődött-e be a jquery.js...)

Jól használni CDN-t gondolkodásmód váltást is igényel.

  1. Csoport: számomra is meglepő volt milyen sok funkciót lehet átrakni statikusba úgy, hogy a felhasználók számára dinamikusnak néz ki. Ez innentől full cache-elhető.
  2. Csoport: folyamatosan változik a tartalom, ezért muszáj folyamatosan teríteni. Elég ha felhasználónként konzisztens, azaz nem gond, ha két gépen a tartalom pár másodpercig eltér. Ez nagyon alacsonyra vett cache ttl mellett szintén cache-elhető. Vigyázni kell arra, hogy a dinamikusnak látszó lekérdezések szabályozott véges érték készlettel rendelkezzenek, azazfel tudd sorolni milyen query paraméterek lesznek és azoknak mi az értékkészlete - ekkor a CDN WAF védelme ki tudja szűrni a próbálkozókat. Ha nem így teszel, akkor a CDN minden számára ismeretlen paraméter együttállás miatt be fog hívni hátra és akkor a backend-nek kell állni a teljes terhelést. Mivel dinamikus, így jó eséllyel db van mögötte, azt gyorsan le lehet fektetni és akkor az egész szolgáltatás eldől. Ezzel némi munkával a legtöbb dinamikus szolgáltatás lefedhető.
  3. Csoport: muszáj dinamikusnak maradni, mert pl szigorú raktár elszámolású webshop-od van (nem véletlen kerüli ezt ki az összes webshop és inkább utólag mondja, hogy bocsi mégsincs raktáron). Ekkor a db elemi változásait egyből vissza is kell teríteni kliens oldalra. Meg lehet csinálni, de ezen a CDN már nem segít, baromi bonyolult és drága ezt jól skálázni. Általában azért bevállaltatnak az üzlettel némi aszinkronitást és az ezzel járó hibázási lehetőséget, és akkor már csak ennek a minimumra szorítása a feladat, itt jönnek be az event streaming-re felfűzött megoldások

API: általában 2-es csoport, amennyiben nem tudod szűrni WAF-on, akkor kell egy olcsó megoldás fail fast-ra, azaz tudd még azelőtt eldobni az érvénytelen kérést, mielőtt drága komponenst (db) elér. Ez GET-re jól működik. 

POST-ot kerüld, ha lehet, az általában a 3. csoportba esik

Érdemes megnézni a network nézetet néha. A CDN-es cuccok van hogy HTTP3-on jönnek le, ott nem is TCP a protokoll. (Nekem saját szerveren még nem sikerült összerakni a HTTP3-at, igaz nem is próbáltam.) És elképesztő sebessége van a CDN-eknek. Én egy Magyarországon működő VPS-en hosztolt oldal esetében mértem a latencyt és a CDN elképesztő gyors volt. Ennek ellenre átírtam helyben hosztoltra mert én sem vagyok CDN párti, de a teljesítménye el kell ismerni, hogy nagyon jó tud lenni.

De ami sokkal durvább, hogy skálázód DDOS elleni védelmet nem tudsz CDN nélkül csinálni. Ezt nem úgy értem, hogy te nem tudsz, hanem hogy általános alany sem tud, bizonyos méret alatt nem lehet megcsinálni. Ha betámadnak, akkor csakis valamelyik ilyen szolgáltató tud kihúzni a szarból AFAIK. De aki jobban ért hozzá javítson ki, ha nem így van!

skálázód DDOS elleni védelmet nem tudsz CDN nélkül csinálni

Dehogynem. Konkrétan üzemeltettem ilyent, egy munkahelyen pedig én terveztem az egész rendszert. Nemzetközileg ismert projekt, ami új verzió kiadásakor irdatlan forgalmat szokott kapni, viszont biztonságtechnikai okokból elfogadhatatlan, hogy máshonnan osszák a binárist. Megoldottuk, simán. Nem olcsó nyilván, de a cloudflare sem az, csak ott az adataiddal kell fizetni.

Kis pályán működik. Veszel egy nagyobb kapacitású DDoS védelmi eszközt, mint amekkora az internet madzagod, és örülsz mindaddig, amíg valójában nem leszel célpont. Utána esélyed sincs.

Nézd meg ebben a cikkben a számokat és nézz utána mekkora vassal védted volna ki: 

https://www.bleepingcomputer.com/news/security/cloudflare-mitigates-rec…

Saját vas elfogyási sorrend:

  1. SSL végződtetés per sec, meglepően alacsony számokat tudnak a nagyon nagy vasak is
  2. IDS/IPS nem tudja időben feldolgozni a kéréseket, ezért sorbanállási cunamit okoz 
  3. WAF csatlakozik az előtte szólóhoz
  4. Elfogy a sávszélességed és a részlegesen beérkező kérések életben tartják a kiszolgáló szálakat, így deadlock alakul ki a backend-en (feltéve hogy ügyes voltál és korlátoztad, mert ha nem, akkor elfogyott a memória és akkora a load és a nyitva lévő socket-ek száma, hogy belépni sem tudsz) és már semmit nem szolgálsz ki

Eleve ott bukik a dolog hogy az ISP-d fog lekorlátozni, hogy a saját infráját megvédje ha tényleg komolyra fordul a dolog.

Nyilván lehet ISP-vel együttműködő DDOS védelemet is kialakítani Blackhole, BGP Flowspec stb, vagy magától az ISP-től venni szolgáltatásként. De a Cloudflare a végén mindig nagyobb lesz :)

"garantáltan a legnagyobb forgalmú magyar infrastruktúra"

Ez esetben dolgoztunk együtt, és továbbra is fenntartom, hogy bármekkora itthon fellelhető vaskupac kispálya a CF képességeihez képest. Nem olvastad el a cikket amit fent linkeltem, nem létezik akkora vas a piacon (nem csak itthon), ami ekkora számokat akár csak nagyságrendileg közelít. 

Semmivel sem lesz lassabb a honlap, ha a js-t ugyanonnan tölti le a böngésző, mint a html-t és nem pedig egy harmadik féltől.

Mi van akkor, ha van mondjuk egy CSS/JS library, aminek minden verziojat ugy szazmillio weboldal hasznalja? Honnan toltodik be a .js fajl, amikor a masodik/n-edig olyan weboldalt nyitod meg, ami ugyanarrol a CDN-rol toltene le ugyanazt a fajlt? Es honnan, ha az n-edik weboldal toltene be a sajat domainjerol?

Szerkesztve: 2024. 06. 28., p – 07:02

Sokan szkeptikusok itt, de ez a polyfill.io dolog nagyon nem vicc.

Rengeteg, tényleg rengeteg weboldal megy így hogy mindenféle publikus CDN-ekről importálnak JavaScript kódokat a Jquery-től a Bootstrap-en keresztül a polyfill.io-ig.

A polyfill.io-t most megvette egy kínai cég és a HTTP kérés fejléceitől és ki tudja még mitől függően dinamikusan generált polyfilleket tol a böngészőknek.

A polyfillek lényege, hogy régi böngészők is tudnak újabbakra írt Javascript kódokat futtatni. Ez szép dolog, de a polyfill.io most azt csinálja, hogy a saját kódjait injektálja mindenféle függvényekbe.

Gyakorlatilag akár le is logolhatnak minden billentyűlenyomást, oda irányítanak, ahová akarnak, stb. És meg is teszik.

Szerk: szerencsére a domain szolgáltató már letiltotta a nevet, de ez hónapokon keresztül ment így.

Igen, sokan nem értik itt, mi is a baj. Nem az én dolgom az IT biztonságtechnológiai kikupálásuk, úgyhogy használjanak csak CDN-t, no meg persze felhős jelszómenedzsert is! Sok sikert!