Batterilagrets dolda
OT-attackytor
En djupanalys av hur BMS, PCS-inverterare, SvK:s balansmarknads-API och leverantörsmolnet hänger ihop i ett 100 MW / 200 MWh batterilager — och varför ett intrång kan manipulera elnätets frekvensreglering utan att Ei kan rekonstruera händelseförloppet.
GridStore Energy AB
— systemkartan
GridStore Energy AB driver ett 100 MW / 200 MWh lithium-jon batterilager anslutet till Svenska kraftnäts stamnät. BESS-anläggningen deltar i aFRR- och FCR-balansmarknaderna. Fluences leverantörsmolnet är permanent anslutet. BMS-nätverket saknar i stort sett all OT-cybersäkerhetskontroll.
BMS — Battery Management System
Fluence Mosaic BMS styr cell-balansering, SOC-beräkning, temperaturövervakning och skyddsutlösning för 20 batterimoduler. BMS exponerar ett REST API mot BESS SCADA och mot Fluences Operations Cloud. API:et saknar MFA och använder ett delat API-nyckelpar som aldrig roterats sedan driftsättning 2022.
PCS — Power Conversion System
SMA Sunny Central PCS-inverterare konverterar DC från batterierna till AC för elnätsanslutning. Varje inverterare kör en integrerad webserver för konfiguration med defaultlösenord ("admin/admin") i 7 av 10 enheter. Modbus TCP-gränssnittet accepterar effektsetpoints utan autentisering — direkt manipulerbart från OT-nätverket.
BESS SCADA — Ignition
Ignition SCADA-servern hanterar systemintegration: BMS-data, PCS-effektstyrning, SvK-kommunikation och rapportering. Ignition-servern är nåbar på port 8088 direkt från kontorsnätet utan brandväggsregel. OPC-UA används mot BMS utan certifikatvalidering. Ingen multifaktorautentisering för operatörsinloggning.
SvK Balansmarknads-API
GridStore deltar i aFRR- och FCR-kapacitetsmarknaderna via SvK:s API. Budsystemet (eSett) och aktiveringssignaler är integrerade i Ignition SCADA. API-nyckeln för budsystemet är lagrad i klartext i Ignitions projektfil (Git-repo: intern). En komprometterad SCADA-server ger automatisk åtkomst till elmarknadssystemet.
Brandskydd — HI-FOG
Brandskyddssystemet kommunicerar via BACnet/IP med BMS för temperaturlarmintegrering och automatisk suppression vid termisk händelse. BACnet-nätverket saknar autentisering (BACnet/SC ej implementerat). Obehöriga BACnet-skrivkommandon kan aktivera eller inaktivera brandskyddssuppression manuellt utan larm.
Miljöbevakning och gassensorer
Temperatur- och gassensorer i battericontainrarna kommunicerar via MQTT med ett externt sensorcloud (Sensirion/Tridium). Sensordata är kritisk för tidig detektion av termisk runaway. MQTT-autentisering saknas på 12 av 18 sensorer. Manipulerade sensorvärden kan maskera ett verkligt brandförlopp.
Fluence Operations Cloud
Fluence maintainar en permanent site-to-cloud VPN-tunnel för fjärrövervakning, prediktivt underhåll och firmware-hantering. Tunneln är alltid aktiv, ej loggad hos GridStore, och ger Fluences globala operations-team åtkomst till BMS-konfigurationsparametrar. Firmware-uppdateringar sker utan GridStores godkännande per avtal.
Nätanslutning och RTU
ABB RTU rapporterar aktiv effekt, reaktiv effekt och driftstatus till SvK via IEC 61850. IEC 62351-kryptering är ej implementerat. Cisco IE3400 industriroutern kör standardkonfiguration med SNMP v2c "public" och SSH med ett svagt lösenord som användes vid driftsättning och aldrig ändrats. 4G-fallback med okrypterad uppkoppling.
Leverantörsmolnet är
en permanent bakdörr
GridStore har inga effektiva VLAN-gränser mellan BMS-nät, PCS-nät och kontorsnät. Fluences Operations Cloud och SvK API skapar permanenta dataflöden ut ur OT-miljön. API-nycklar är lagrade i klartext. Ingen trafik är loggad.
Fluence och Tesla/Megapack levererar BESS med integrerade Operations Cloud-avtal som kräver permanent anslutning för garantiuppfyllnad och prediktivt underhåll. Firmware-uppdateringar sker automatiskt via molnet utan operatörens godkännande. Att blockera molnuppkopplingen bryter BESS-garantin och riskerar att ogiltigförklara försäkringsavtalet — en situation identisk med O&M-problemet i vindkraft. Resultatet: GridStore äger BESS-anläggningen men Fluence kontrollerar firmware och har permanent systemåtkomst.
Från API-intrång
till termisk runaway
Fluence Operations Cloud-credentials stulna
En Fluence field engineer mottar en spearphishing-e-post som efterliknar Fluences interna portal. Credentials stulna och MFA-token snappad via adversary-in-the-middle proxy. Angriparen loggar in på Fluence Operations Cloud och hittar GridStore Energy AB:s BESS-anläggning i listan — full BMS-API-åtkomst via molnportalen. Inga larm triggas hos GridStore.
T0865 — SpearphishingBMS-konfigurationsmanipulation — ändrade termiska trösklar
Via Fluence Cloud-portalen ändrar angriparen BMS-konfigurationsparametrar för 4 batterimoduler: temperaturlarmtröskel höjs från 45°C till 72°C, och SOC-skyddsutlösning (overcharge cutoff) justeras upp med 8%. GridStores operatörer ser ingenting — all konfigurationsändring hanteras av Fluences molnplattform utan notifiering till GridStore.
T0836 — Modify ParameterHög laddningscykel under sommarpeakvärme
Angriparen väntar på ett dygn med hög elmarknadsefterfrågan (spotpris >2000 SEK/MWh) och trigger maximalt aFRR-budsvar. GridStore kör BESS på 95% effektuttag under varm dag. Fyra batterimoduler börjar överhetta — men BMS-larmen triggas inte förrän vid 72°C tack vare konfigurationsändringen. Termisk runaway initieras i en cell utan larm.
T0855 — Unauthorized Command MessageBrandskydd inaktiverat — HI-FOG suppression blockerad
Via BACnet/IP-nätverket skickar angriparen ett BACnet Write Property-kommando som sätter HI-FOG suppressionssystemet i testläge ("inhibit mode") — utan autentisering. När termisk runaway eskalerar 22 minuter senare aktiveras inte suppressionen. GridStore måste evakuera och stänga av hela BESS-anläggningen. Brandkåren kallas in.
T0814 — Denial of Service- Termisk incident i 4 batterimoduler — 40 MWh kapacitet skadat, ersättningskostnad 120–200 MSEK
- Personrisk: operatörerna befinner sig i anläggningen när runaway eskalerar utan larm
- SvK-åtaganden: GridStore kan inte fullgöra aFRR-balansmarknadsbud under 3–6 månaders reparation
- Ei-tillsyn: NIS2 incidentrapport 72h — utan BMS-konfigurationslogg är forensik omöjlig
- MSB-utredning: kritisk infrastruktur-incident involverar räddningstjänst
Lateral rörelse till Ignition SCADA via kontorsnätet
En operatörs-PC infekteras via en phishing-länk. Angriparen rör sig lateralt i kontorsnätet och hittar Ignition SCADA på port 8088 — direkt tillgängligt utan brandväggsregel. Ignitions standarduppgifter ("admin/password") fungerar. Angriparen har nu full SCADA-åtkomst inklusive alla integrationer: BMS-API, PCS-styrning, och SvK-API-konfiguration.
T0817 — Exploit Public-Facing ApplicationSvK API-nyckeln läses ur Ignitions projektfil
Angriparen hittar eSett API-nyckeln lagrad i klartext i Ignitions projektfil (XML-konfiguration). Med API-nyckeln kan angriparen direkt kommunicera med SvK:s balansmarknadssystem — utanför Ignition SCADA. GridStore Energy AB:s hela FCR-N-kapacitet (100 MW) och aFRR-budgivning kan manipuleras direkt utan att GridStores operatörer ser det i SCADA.
T0882 — Theft of Operational InformationFalska FCR-N-bud — GridStore rapporterar 100 MW disponibelt, levererar 0 MW
Angriparen skickar FCR-N-kapacitetsbud via SvK API för kommande dygn: GridStore erbjuder 100 MW primärreglering. Parallellt modifierar angriparen PCS-setpoints i Ignition så att inverterarna körs i ö-drift (island mode) och inte svarar på frekvensavvikelse-signaler. SvK förlitar sig på GridStores 100 MW FCR-N-kapacitet som aldrig aktiveras vid frekvensfall.
T0855 — Unauthorized Command MessageFrekvensavvikelse i stamnätet — SvK-utredning inleds
Nästa dag inträffar en oväntad kraftverkstrip i Sydsverige. FCR-N-kapaciteten som ska buffra frekvensfallet aktiveras inte av GridStore. 49,8 Hz detekteras i SvK:s centraldispatching. Manuella reserver aktiveras. SvK inleder utredning: GridStore lämnade FCR-N-bud och levererade 0 MW. Ei och MSB informeras. GridStore förlorar sin balansansvarsprestation och riskerar marknadsavstängning.
T0840 — Network Connection Enumeration- SvK-utredning: GridStore lämnade FCR-N-bud utan leveransförmåga — balansmarknadssanktion
- Elmarknadsavstängning: GridStore riskerar tillfälligt tillståndsåterkallande
- Ei-tillsyn: NIS2 Bilaga I incident — SvK-rapport och Ei-rapport parallellt, 72h-krav
- Utan Ignition-händelselogg kan GridStore inte bevisa extern manipulation — intern sabotage-misstanke
- Kontraktuella skadeståndskrav från SvK och balansmarknadsaktörer som lidit skada av frekvensavvikelsen
SMA PCS-webserver med "admin/admin" — intern nätverksskanning
En angripare med åtkomst till kontorsnätet (via phishing, insider eller okrypterad 4G-fallback) kör en nätverksskanning och hittar 10 SMA Sunny Central PCS-inverterare på OT-nätet. 7 av 10 webservrar svarar med defaultlösenordet "admin/admin". Angriparen loggar in och ser PCS-konfigurationsgränssnittet med full styrning: effektsetpoints, gridanslutningsparametrar och skyddsinställningar.
T0822 — Default CredentialsÄndring av spännings- och frekvenstoleranser i PCS-skyddsprofil
I SMA-webserverns avancerade inställningar ändrar angriparen spänningstoleransen för gridanslutning (Umax höjs från 110% till 125% av nominell spänning) och frekvenstoleransen vidgas. De ändrade skyddsinställningarna innebär att inverterarna inte kopplar bort vid överspänningshändelser som normalt ska trigga skyddsutlösning.
T0836 — Modify ParameterPlanerat underhållsstopp — återkoppling av BESS
Under ett planerat 2-timmars underhållsstopp kopplas BESS från elnätet. Vid återinkoppling — ett normalt driftsmoment — uppstår en transientsöverspänning på 118% UN i den lokala elnodspunkten (PCC) på grund av en simultant anslutande vindparksenhet i samma nätpunkt. Normalt skyddar PCS-inverterarna mot detta. Med ändrade trösklar kopplar inte inverterarna ifrån.
T0855 — Unauthorized Command MessageTransformatoröverspänning — 3 av 10 PCS-inverterare skadade
Transientsöverspänningen på 118% skadar transformatorisoleringar i 3 av 10 PCS-inverterare. Kraftelektronikens IGBT-moduler havererar. 30 MW PCS-kapacitet går ur drift. Reparationstid: 8–12 veckor per enhet (SMA långa leveranstider). GridStore kan inte uppfylla sina FCR-åtaganden. Utan händelselogg på PCS-konfigurationsändringar: inget bevis för manipulation.
T0814 — Denial of Service- 30 MW PCS-kapacitet skadat — reparationskostnad 15–25 MSEK, 8–12 veckors leveranstid
- FCR-åtaganden kan inte uppfyllas: balansmarknadssanktioner och SvK-utredning
- Försäkringsärende: PCS-tillverkaren (SMA) hävdar felkonfigurering — försäkringen täcker möjligen inte
- Ei-rapport 72h: PCS-konfigurationslogg saknas — NIS2-brott parallellt med incidentrapport
- Elmarknadsotillförlitlighet: GridStore kan under 2–3 månader inte delta i FCR-N/aFRR
Leverantörsmolnet äger
säkerheten i praktiken
| System | Kritikalitet | OT-cyber-ansvarig | NIS2/Ei-ansvarig | Loggad? |
|---|---|---|---|---|
| Fluence Mosaic BMS | Kritisk | Fluence (leverantör!) | VD/CISO | Nej (Fluence Cloud) |
| SMA PCS-inverterare | Kritisk | SMA (leverantör) / IT | Oklart | Nej |
| Ignition SCADA | Kritisk | IT-avdelningen (delvis) | VD/CISO | Delvis |
| SvK Balansmarknads-API | Kritisk | IT (klartext-nyckel) | Oklart | Nej |
| HI-FOG brandskydd | Hög | Marioff (leverantör!) | Oklart | Nej |
| MQTT gassensorer | Hög | Sensirion (moln) | Oklart | Nej |
| ABB REX640 RTU | Hög | ABB (leverantör!) | VD/CISO | Nej |
Leverantörsmolnet är en permanent, okontrollerad bakdörr
Fluences Operations Cloud har permanent åtkomst till BMS-konfiguration, larmtrösklar och firmware. GridStore loggar inte denna åtkomst och kan inte skilja en legitim Fluence-åtgärd från en angripare som komprometterat Fluences molnplattform. NIS2 artikel 21.2(d) kräver att detta regleras kontraktuellt och loggas tekniskt.
Balansmarknads-API-nyckeln är en direkt elnätsattackvektor
En klartext-lagrad SvK API-nyckel i en SCADA-konfigurationsfil ger varje angripare med SCADA-åtkomst direkt förmåga att manipulera FCR- och aFRR-bud. BESS är ensamma noder med stor effekt — deras bud påverkar direkt SvK:s frekvensreglering. Det är en kritisk infrastrukturattackvektor av nationell betydelse.
OT-säkerhet i BESS är säkerhetskritisk, inte bara cybersäkerhet
Manipulation av BMS-larmtrösklar och brandskyddssuppression skapar direkt personrisk — inte bara produktionsbortfall. Det gör BESS till en kategori där OT-cybersäkerhetsbrister kan klassas som säkerhetskritiska. Ei och MSB kan klassificera en BESS-incident som kritisk infrastruktur-incident med separat utredning.
Ei-rapport utan BMS-konfigurationslogg är omöjlig
NIS2 kräver 72h-rapport till Ei med händelserekonstruktion. BMS-konfigurationsändringar sker via Fluence Cloud utan logg hos GridStore. PCS-parameterförändringar loggas inte lokalt. En angripare kan manipulera GridStores BESS, orsaka en incident och lämna utan digitala spår i GridStores egna system.