Preskočiť na obsah
Domovská stránka » (Ne)bezpečná stránka bratislava.sk?

(Ne)bezpečná stránka bratislava.sk?

Po nedávnom hackerskom útoku na kataster Slovenskej republiky sa otvorila debata o úrovni kybernetickej bezpečnosti v štátnych inštitúciách. Tento incident vyvolal množstvo otázok: Do akej miery sa štát stará o ochranu svojej IT infraštruktúry? Sú jeho webové aplikácie dostatočne zabezpečené proti moderným hrozbám?

Odpovede na tieto otázky však nesúvisia iba so štátnymi orgánmi – obce, mestá a samosprávy musia taktiež prehodnotiť, ako chránia svoje aplikácie a osobné údaje občanov pred zneužitím. Kybernetická bezpečnosť je totiž hlavne o národnej bezpečnosti.

Preto som sa rozhodol preskúmať, ako je zabezpečené naše hlavné mesto a jeho oficiálna doména Bratislava.sk. Tento víkend som venoval rýchlej analýze webových stránok magistrátu a aplikácií, ktoré sú verejne dostupné na internete.

Už na úvod však považujem za dôležité zdôrazniť, že som využíval výhradne bežne dostupné nástroje a verejné informácie. Nevykonával som žiadne pokročilé penetračné testy ani „brute force“ útoky s cieľom preniknúť do systémov. Cieľom tejto analýzy bolo identifikovať základné slabiny a poukázať na možné riziká, ktoré by mohli byť zneužité útočníkmi.

Infraštruktúra domény

Ako prvý krok som sa zameral na infraštruktúru domény Bratislava.sk. Mojím cieľom bolo zistiť, na akých serveroch doména aktuálne beží a akú infraštruktúru využívala v minulosti. Na tento účel som si stiahol IP adresy z DNS servera a následne som použil nástroj Shodan, aby som získal prehľad o otvorených portoch, dostupných subdoménach, virtuálnych serveroch a ďalších základných informáciách o použitej infraštruktúre.

Pozitívnym zistením je, že doména využíva Cloudflare ako prvú líniu ochrany proti DDoS útokom a botom. Tento krok výrazne zvyšuje bezpečnosť webu a znižuje riziko zahltenia serverov škodlivými požiadavkami. Avšak počas analýzy som narazil na problém, ktorý by mohol potenciálnym útočníkom umožniť obísť túto ochranu.

V pomerne krátkom čase som dokázal identifikovať IP adresy serverov, na ktorých aplikácie magistrátu reálne bežia. To znamená, že ochranu Cloudflare je možné obísť a posielať požiadavky priamo na tieto servery, vrátane potenciálnych útokov, ako je napríklad SQL injection alebo DDoS. Tento problém považujem za chybu konfigurácie – servery by mali umožniť prístup výhradne prostredníctvom Cloudflare, pričom akékoľvek priame spojenia z iných zdrojov by mali byť blokované. Samozrejme, ak toto nebol zámer z nejakých technických príčin.

V ďalšom kroku som vykonal rýchly portscan nad subnetom 193.93.75.0/24, ktorý zahŕňa servery patriace pod túto doménu. Cieľom bolo zistiť, ktoré porty sú na serveroch otvorené a potenciálne dostupné z internetu. Zistenia ukázali, že magistrátne servery v tomto rozsahu majú otvorené iba porty 80 (HTTP) a 443 (HTTPS), čo je štandardné a očakávané pri webových aplikáciách. Dobrou správou je, že žiadny zo serverov neodpovedal na iné porty, aj keď Shodan indikoval väčší počet otvorených portov (napr. 8080, 8443 ..).

Zoznam dostupných IP:

Host: 193.93.75.229 () Ports: 80/443/open/
Host: 193.93.75.232 () Ports: 80/443/open/
Host: 193.93.75.235 () Ports: 80/443/open/
Host: 193.93.75.236 () Ports: 80/443/open/
Host: 193.93.75.237 () Ports: 80/443/open/
Host: 193.93.75.238 () Ports: 80/443/open/
Host: 193.93.75.239 () Ports: 80/443/open/
Host: 193.93.75.240 () Ports: 80/443/open/
Host: 193.93.75.242 () Ports: 80/443/open/
Host: 193.93.75.245 () Ports: 80/443/open/
Host: 193.93.75.247 () Ports: 80/443/open/
Host: 193.93.75.251 () Ports: 80/443/open/

Zastaralé TLS protokoly

V rámci analýzy som sa zameral aj na používané TLS protokoly a platnosť SSL/TLS certifikátov. Jedným z najväčších prekvapení bola úplná absencia podpory moderného protokolu TLS 1.3, ktorý sa považuje za aktuálny bezpečnostný štandard. Naopak, na viacerých serveroch bol stále aktívny zastaraný protokol TLS 1.0, ktorý už niekoľko rokov predstavuje vážne bezpečnostné riziko.

Aj keď iróniou je to, že všetka komunikácia sa na strane Cloudflare dešifruje a odtiaľ posiela na magistrátne servery. Aký má zmysel šifrovanie, keď Cloudflare ako „prostredník s povolením“ vidí celý obsah? Ale to je debata na inokedy, zatiaľ verme, že toto nezneužijú 🙂

Poklady skryté v subdoménach

Počas analýzy ma prekvapilo množstvo subdomén, ktoré magistrát používa. Rozhodol som sa preskúmať väčšinu z nich, aby som zistil, čo obsahujú. Mnohé mali názvy ako dev, staging, new alebo nova, čo naznačovalo, že môžu obsahovať testovací obsah alebo aplikácie vo vývoji.

A naozaj, objavil som niekoľko „pokladov“. Niektoré by podľa môjho názoru nemali byť verejne dostupné bez prístupu cez korporátnu sieť (VPN), najmä intranetové aplikácie a ERP.

Medzi tieto poklady patrili dev a staging verzie webových stránok, GraphQL playgroundy, ERP systém Noris Next, intranet BCS, Enforcement, CMS systémy Strapi či Harbor s odkazmi na Bratiska-CLI.

Niektoré dev verzie Strapi boli natoľko zle nakonfigurované, že som sa vedel prihlásiť pomocou východzieho mena a hesla!

Pozitívnym zistením je to, že žiadne osobné údaje ani účty tam neboli, čiže išlo asi o nedokončenú inicializáciu aplikácie.

Príklad Strapi DEV, kde som sa vedel prihlásiť:

Interné aplikácie na webe

Interné aplikácie, ako sú intranet a ERP systémy, nemusia nevyhnutne vyžadovať prístup cez VPN, ale ich umiestnenie priamo na internete bez ďalších vrstiev ochrany zvyšuje riziko zneužitia. Dobrou praxou je, ak útočník potrebuje okrem mena a hesla aj prístup k VPN, ktorý býva monitorovaný. Pri takýchto aplikáciách by mal byť samozrejmosťou dvojfaktorový prístup, no mám vážne pochybnosti, že je v tomto prípade aktivovaný. Hypoteticky, použitie bežných knižníc hesiel by mohlo viesť k prelomeniu prístupu (takéto pokusy som zámerne nevykonával).

Ako som už spomenul, počas analýzy som narazil na prístupové body k aplikáciám, ako je BCS intranet, Noris Next Online, a dokonca na aplikáciu odboru dopravy na magistráte. Noris Next si zaslúži špeciálnu pozornosť, keďže ide o systém určený na správu daní, pokút a pohľadávok. Prelomenie prístupu k tomuto systému by mohlo mať priamy finančný dopad na mesto!

Pri podrobnejšej analýze som zistil, že mnohé z týchto aplikácií trpia zásadnými problémami. Niektoré mali zapnuté debug módy, ktoré zobrazovali podrobnosti o aplikácii, iné umožňovali prehliadať adresáre na serveri, čo by malo byť štandardne zakázané. Najväčším problémom však bola zastaranosť niektorých verzií aplikácií – podľa zoznamov CVE (Common Vulnerabilities and Exposures) obsahujú kritické zraniteľnosti, ktoré by mohli byť zneužité útočníkmi.

Dáta ľahko prístupné pre scraping

Ako dátového inžiniera ma potešilo, keď som objavil niekoľko inštancií GraphQL Playground. Samozrejme, nemohol som odolať a musel som sa s nimi trochu pohrať – veď „playground“! Prvé, čo som chcel zistiť, bolo, či je povolený introspection a prístup k schémam. A samozrejme, všetko bolo povolené, čo znamenalo, že polovica práce bola hotová. Potom stačilo už len „querovanie“ a bolo to!

Ľahký prístup k dátam nemusí byť v princípe zlý, pokiaľ sú tieto dáta použité slušným spôsobom. Problém však nastáva, keď sa dáta ako e-maily, telefónne čísla a mená (napríklad zamestnancov daňového oddelenia, ako je vidieť na obrázku) stanú ľahko dostupné. Tento typ informácií výrazne uľahčuje automatizáciu phishingových útokov a môže viesť aj k prelomeniu prístupu k aplikácii Noris Next, o ktorej sme hovorili skôr.

Okrem GraphQL som sa pozrel aj na iné používané API na stránke. Zaujal ma Meilisearch, ktorý mal API kľúč zabudovaný priamo v JavaScripte. Jednoduchými príkazmi cez cURL si teraz môžem vyhľadávať čokoľvek, čo chcem, a zautomatizovať sťahovanie dát podľa kľúčových slov. Aj keď toto považujem skôr za výkonovú hrozbu (ak by sa vyhľadávacie požiadavky nadmerne zneužívali), nie je to až také kritické z hľadiska bezpečnosti, ale určite to nie je ideálna prax.

Penetračné testy za 60 000 EUR a stále takéto nedostatky

V roku 2022 si magistrát Hlavného mesta objednal penetračné testovanie svojich IT služieb, čudujem sa, že po takmer 3ch rokoch tam ostali takéto nedostatky. Môžeme sa len pýtať či na to testeri neprišli, alebo ich odporúčania nepadli na úrodnú IT pôdu na magistráte.

Katastrálna mapa Bratislavy

Toto sem pridávam už len ako vtip, nakoľko masívny a dlhotrvajúci výpadok stránok ÚGKK znemožnil prístup ku katastrálnym mapám. Mne sa počas analýzy magistrátnych servrov podarilo nájsť tento starší Gisplan portál (UPDATE: zdá sa, že tento portál už vypli). Aj keď údaje v ňom vyzerajú tak 5 rokov staré, možno to niekomu poslúži pri hľadaní čísla parcely…

Odporúčania

Na základe analýzy domény *.bratislava.sk je jasné, že je tam niekoľko bezpečnostných nedostatkov, ktoré by mohli ohroziť nielen dáta, ale aj celkovú funkčnosť mestských aplikácií. Od starých šifrovacích protokolov, cez prístupné testovacie aplikácie až po slabé zabezpečenie interných systémov. Toto všetko by mohlo otvoriť dvere pre hackerov.

Čo by mal spraviť magistrát?

  1. Aktualizovať šifrovanie – zbaviť sa zastaraného TLS 1.0 a prejsť na silnejšie verzie.
  2. Ochrániť interné aplikácie – tieto aplikácie by mali byť prístupné len cez VPN.
  3. Zabezpečiť subdomény – odstrániť neaktívne alebo testovacie verzie.
  4. Zlepšiť autentifikáciu – pridať dvojfaktorovú autentifikáciu do interných aplikácií.
  5. Zabezpečiť prístup k zdrojový serverom – aby ochrana Cloudflare mala význam.
  6. Pravidelne aktualizovať aplikácie– viď stará verzia Strapi.
  7. Spraviť IT bezpečnostný audit spolu s mestskými časťami a samozrejme nezabudnúť na disaster recovery plan a zálohy.
Značky: