I har lige introduceret en injectionmulighed, der er endnu værre end den, der blev introduceret i 2013, og som jeg i efteråret har informeret Claus om direkte på mail.
Nogle eksempler:
Opbevaring af koder
Den 29. oktober 2013 blev der i tråden viewtopic.php?f=5&t=923 gjort opmærksom på problemet i, at I lader alle passwords gemme som md5-hashes.
Den 11. november 2013 blev anvist en mulighed for, hvordan man kunne højne sikkerheden omkring opbevaring af passwords.
Intet skete.
I september 2014 lagde jeg et pull request på github med implementering af den foreslåede løsning i koden, og I har siden blot kunnet skrive løsning af.
Men stadig intet er sket her pr. april 2015.
Hul i databaseudtræk
Januar 2013 reklamerer I i tråden viewtopic.php?f=17&t=897 for mulighden for databaseudtræk.
Problemet her er, at Saldi fuldstændig ukritisk udleverer alle de oplysninger fra databasen, man spørger om.
Det kunne jo f.eks. være et fuldt udtræk af tabellen over regnskabets brugere og deres passwords. At passwords ligger som md5-hashes er reelt ingen hindring.
Man kan altså let skaffe sig en anden brugers loginoplysnigner, og kan udgive dig for denne i Saldi.
Måske denne bruger også bruger samme kombination af brugernavn og password på sin webmail, facebook, netbank, nemid...
Det handler altså ikke kun om Saldi isoleret. I har et kæmpeansvar over for jeres brugere for, at deres passwords er ordentligt beskyttede; især når I introducerer alvorlige huller i koden efterfølgende.
Adgangskoder til ftp-servere mv. er et andet eksempel på oplysnigner, der nemt kan hentes ud fra regnskabet. Endda endnu lettere fordi disse oplysnigner ligger i klartekst. Så sparer hackeren 10 sekunder på at skulle slå en md5-hash op.
Ovenstående er slemt nok i sig selv, men det stopper ikke her.
Det er også muligt gennem funktionen databaseudtræk at injekte poster i regnskabsdatabasen. Det lykkedes mig som en test sidste efterår at oprette en ny bruger med eskalerede rettigheder.
At I i koden prøver at opfange sql-kommandoerne delete og update er utilstrækkeligt, når I samtidig glemmer at blokere for insert.
De ovenstående muligheder for at udnytte dette hul har jeg advaret Claus om i en e-mail i november 2014, uden at det er blevet forsøgt rettet.
Eksekvering af php-kode i labelprint
Nu april 2015 reklamerer I i tråden viewtopic.php?f=17&t=1159 for muligheden for labelprint for varer.
Blot ved at læse tråden og se koden efter er det tydeligt, at I tillader fuldstændig ukritisk eksekvering af php-kode fra bruger input.
Jeg har netop undersøgt på en nyinstallation, om problemet er af så stort omfang, som jeg frygtede, da jeg så indlægget i tråden. Og det er det.
I har reelt åbnet op for, at en hvilken som helst bruger kan få adgang til at opdatere, indsætte og slette ikke blot i et enkelt regnskabs database, men i saldis hoveddatabase. En hacker kan derved stjæle hele jeres kunderkartotek, ændre alle brugeres password, forhøje eller nedsætte antallet af købte posteringer mv. Kun fantasien sætter grænserne, fristes man desværre til at sige.
-o0o-
I bliver simpelthen nødt til at tage sikkerheden alvorligt og få læst op på gængse sikkerhedsprocedurer for php, sql mv. i stedet for at opfinde jeres egne hullede løsninger.
På forsiden af saldi.dk står bl.a, at "Dine data er sikret i et top moderne hostingcenter."
Jeg er ked af at skulle sige det, men lige nu er det bedre overensstemmende med sandheden at skrive "Dine data gemmes i et top moderne hostingcenter, men kan læses af alle og enhver".
Som en afsluttende disclaimer skal jeg naturligvis oplyse, at jeg på intet tidspunkt har opnået, forsøgt at opnå, eller haft til hensigt at opnå mig adgang til data, der ikke tilhører mig selv. Alt hvad jeg skriver ovenfor er undersøgt, afprøvet og bekræftet på min egen server og alene med til formålet opfundne "dummy"-data.
Jeg har ovenfor bevidst ikke skrevet præcis, hvordan hullerne kan udnyttes, og jeg agter ikke at gøre det.
Jeg har længe forsøgt at bidrage til at undgå eller lukke de sikkerhedsproblemer, der gør sig gældende i et system som Saldi, men jeg kan blot konstatere, at det ikke bliver taget seriøst eller prioriteret fra udviklernes side. Og det er en skam, for I risikerer at kunderne flygter væk fra den hostede løsning, som I tjener jeres penge på.
