- I en situasjon der man står uten verktøy å hjelpe seg med, blir jo alt bedre enn å ha ingenting, sier utvikleren Magnus Nyland til kode24.
I slutten av desember kom nyheten om at Amedia, det tredje største mediehuset i Norge, var hacket. Hackingen har blitt kalt for et angrep mot demokratiet og fikk alvorlige konsekvenser for konsernets aviser, der et stort antall ikke kunne levere papiraviser til leserne sine.
Midt oppi det hele sto utvikleren Magnus Nyland, som har vært tilknyttet Amedia-avisen iFinnmark.
Som Medier24 først omtalte: I løpet av kort tid kodet han en produksjonsløsning som ble brukt av hele konsernet.
Hacker-knepene du bør vite om i 2022: SQL injection, XXE, XXS og SSRF
Fikk vite via en kompis
Nyland har vært tilknyttet iFinnmark i flere år. Både som ekstern utvikler, men i 2021 også som sommervikar på papirdesken.
Han var midt i juleferien sammen med familien, da en kompis sendte en melding med en VG-artikkel om Amedia-hackingen den 28. desember. Men han la det litt bort og tenkte ikke mer over det.
- Dagen etter gikk vel omfanget mer opp for meg da jeg ble kontaktet med spørsmål om å hjelpe til med å gjennomføre produksjon av papiraviser helt uten systemene man normalt bruker til å gjøre dette.
Det var et sikkerhetshull i Windows, koblet til en printer, som skal ha vært veien hackerne tok seg inn på, skrev Avisa Oslo, som er eid av Amedia.
Selve angrepet var et klassisk ransomware-angrep. Hackerne tok seg inn i serverne, krypterte dataene og la igjen en lenke til sted der Amedia kunne gå i dialog med hackerne om et pengekrav.
- Naivt å tro at det ikke finnes norske datakriminelle
Brukte Javascipt
Ifølge Nyland kom det på plass noen nødløsninger ganske kjapt. Men hackingen gjorde at ting tok ekstremt mye lengre tid, blant annet fordi innhold måtte hentes manuelt fra systemet journalistene bruker til å skrive saker.
I en tid med stadig kortere deadliner og flere publiseringsflater kan dette få store konsekvenser.
- Jeg tenkte vel egentlig ganske tidlig at det da måtte gå an å få til noe automatisering rundt dette, slik at jeg og de rundt meg skulle få det litt enklere, og nevnte vel ideen i forbifarta en av de første virkedagene på nyåret. Det gikk ikke så veldig lang tid før prosjektet fikk tommel opp, sier han.
Nyland grep etter det som satt best i fingrene: Løsningen ble skrevet i Javascript med biblioteker han har brukt før, for eksempel Express, Axios og Convict. I tillegg til en egenlagd løsning for å generere Indesign-filer.
- Angriperne kommer inn, utforsker, ligger lavt, henter ut data, starter kryptering
Kodet på kveldstid
Selve systemet kjører NodeJS i en container hos et datasenter i Norge.
- Nå er det jo veldig mange andre kule ting man selvfølgelig hadde hatt lyst til å ha gjort og prøvd, men når man raskest mulig skulle sitte med ei løsning som faktisk gjorde den tiltenkte jobben, følte jeg ikke helt at akkurat dette var rette tidspunktet til å bruke mye tid på å utforske nye ting.
På dagtid var hendene fulle med å lage papiravis, så kodingen ble unnagjort på kveldstid.
- Fra jeg skrev første linje kode til jeg hadde første MVP å vise fram slik at andre kunne teste for å validere konseptet, gikk det vel med to-tre kveldsøkter. Minimumsløsningen var veldig minimum, men man fikk bekreftet at man var på rett spor.
Ekspert: - Norge har stått i en ransomware-pandemi
Laget for alle avisene
Det gikk en kveld til, så kom Nyland og kollegene til et punkt der mesteparten av visjonen var oppnådd: Å hente ut ferdig formaterte artikler som kunne settes rett over på avissidene.
- Det som videre skjedde, var at andre fikk nyss i hvordan vi hadde løst dette hos iFinnmark, sier Nyland.
Etter litt veldig kjapp møtevirksomhet, falt beslutningen om at dette plutselig skulle bli ei løsning som var tilgjengelig for alle avisene i Amedia.
Han sier at det det tok to dager fra beslutningen falt til første versjon var produksjonssatt for alle. Systemet har i etterkant fått flere funksjoner og blitt bugfikset.
Blant annet kom ikke artikkelbilder med over rett inn på siden, men måtte i stedet monteres inn manuelt i første versjon, da filformatspesifikasjonen som var tilgjengelig ikke fortalte hvordan dette skulle gjøres korrekt.
- Etter en del prøving, feiling og testing fant jeg ut av dette også, avslutter Nyland.