View Single Post
I det siste har utnytting av svakheter i personsikkerhetssystemet vært in her på nFF, og nå er det på tide å dra det enda lenger. Jeg vil nå avdekke den triste sannheten om Stabburet Leverpostei og hvordan hvem som helst kan generere kodene som står på boksene. Dette betyr i praksis at hvem som helst kan gå inn på jernkampen.no, Stabburets leverposteiside, og skrive inn leverposteikoder UTEN å ha vært i butikken og kjøpt leverpostei. Stabburet sender nemlig intetanende ut leverpostei-jojoer til folk som de tror er trofaste kunder av leverpostei. Dette trenger dog ikke være tilfellet.

På jernkampen.no er det fire bilder av leverposteibokser med tomme tekstfelter i. Her skal brukeren skrive inn tisifrede koder han eller hun har funnet på kjøpte leverposteibokser i butikken. Skriver du inn fire koder får du en jojo i posten. En leverposteiboksformet jojo. Det er allment kjent at en slik gjenstand er verdt sin vekt i gull. Men det slutter ikke her - skriv inn fire koder til, og du er med i trekningen av ett leverposteiboksformet armbåndsur. Jeg vet hva dere tenker: må ha.

Hvordan er det mulig? Jeg åpnet kilderkoden til spillet for å finne ut hvor databasen med gyldige koder ligger. Jeg fant den ikke. Hvorfor? Det er ingen. I stedet er det en algoritme som forteller om en gitt kode er gyldig. Her er algoritmen:

Kode

v2.checkInput = function () {
  var v4 = Number(this.theRoot.ins_mc.nr_txt.text);
  if (!isNaN(v4) && this.theRoot.ins_mc.nr_txt.length == 10) {
    var v3 = this.theRoot.ins_mc.nr_txt.text;
    var v7 = parseInt(v3.charAt(6));
    var v6 = parseInt(v3.charAt(7));
    var v5 = parseInt(v3.charAt(8));
    var v9 = parseInt(v3.charAt(9));
    var v2 = new Array();
    if (v7 <= 2) {
      switch (v7) {
        case 0:
        case 1:
          break;
        case 2:
          if (v6 > 4) {
            v2.push('error');
          } else {}
          break;
        default:
          v2.push('error');
      }
    } else {
      v2.push('error');
    }
    if (v5 <= 6) {
      switch (v5) {
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
          break;
        case 5:
        case 6:
          if (v6 > 0) {
            v2.push('error');
          } else {}
          break;
        default:
          v2.push('error');
      }
    } else {
      v2.push('error');
    }
    if (v2.length > 0) {
      trace('> error > ' + v2.length);
      this.theParent.theParent._main.popUp({'head': 'Feil i kode', 'msg': 'Koden er feil. Vennligst prøv igjen'});
    } else {
      trace('> alles in ordnung');
      this.regCode(v4, this.getID());
    }
  } else {
    trace('> code must contain 10 digits and only numbers');
    this.theParent.theParent._main.popUp({'head': 'Feil i kode', 'msg': 'Koden må inneholde 10 tall'});
  }
};
Etter litt studering av koden fant jeg en av mange løsninger til generering av koder: fem tilfeldige tall etterfulgt av 206 og så to tilfeldige tall som etter prøving og feiling viser seg å måtte være lave. Det vil si at alle koder som begynner med et tall fra 00000 til 99999 etterfulgt av for eksempel 20611 er gyldige. Dette er en million muligheter. Og det er flere.

Det aller mest triste med denne svakheten er at den er vanskelig å rette på. Hva med alle boksene som allerede er i system? Jeg tenker en scenario der en helt alminnelig tiåring har mast seg til en boks med Stabburet Leverpostei og gleder seg som en gal da han skriver inn koden på boksen: "KODEN ER TATT" eller "VI HAR DESVERRE SKIFTET SYSTEM PGA HACKING". Det gjør meg trist. Uansett må slike svakheter avdekkes slik at vi i fremtiden kan ha bedre systemer. Jeg innser at denne avdekkingen kan få samfundet til å vakle, men jeg så ikke noe annen mulighet.

Gratulerer med jojo i posten!
Sist endret av dexter; 30. juli 2007 kl. 14:04.