Tech

Komoly hibát találtak az üvegvisszaváltási rendszerben

Farkas Norbert / 24.hu
Farkas Norbert / 24.hu

Az Európai Parlament és a Tanács még 2019-ben döntött az egyszer használatos műanyagokra vonatkozó irányelv elfogadásáról, amelynek hazánkban idén nyáron lett eredménye: július elsejétől a REpont rendszer által bárki könnyedén visszaválthatja az italcsomagolásokat. A visszaváltó rendszer alapelve egyszerű: a vásárlók a sértetlen palackokat sértetlen állapotban, jól olvasható vonalkóddal a kihelyezett automatákba helyezik, majd három módon kérhetik a termék árába beépített visszaváltási díjat: utalványként, átutalásként vagy jótékonysági felajánlásként.

A legnépszerűbb megoldás a készpénzre is váltható utalvány, melyen a visszaváltott palackok adatai mellett az összeg és a szokásosnál szélesebb, alul hosszú számsorral szegélyezett vonalkód látható. A legtöbb egydimenziós vonalkódhoz hasonlóan ez a számsor a vonalkódolvasók számára értelmező formátumban tartalmazza a fontosabb információkat különféle vastag és vékony csíkokba kódolva. A vonalkód alatti szám megegyezik a benne tárolt számsorral, ami bárki számára könnyen kiolvasható.

Az IT-biztonsággal foglalkozó Mantra Information Security azonban felfigyelt egy kritikus hibára, amely elméletben jelentős anyagi haszonszerzésre adhatna lehetőséget a rosszindulatú szereplőknek.

A hwsw közlése szerint a vonalkód alatt feltüntetett számsorozat egy részlete mutatja az utalvány értékét, amelynek megváltoztatása esetleges visszaélésekre adhat lehetőséget, amennyiben egy további metódust is követnek a rosszindulatú felek. A szakértők több minta gyűjtése után azonosították, hogy az utalvány 26 számból álló kódjának utolsó két kulcseleme az összeg és az ellenőrző számjegy, illetve olyan azonosítók is szerepelnek még benne, mint az üzlet egyedi kódja vagy egy egyszerűsített időbélyeg.

Mi a probléma?

Az ellenőrző számjegy lényegében egy hibaellenőrző kód, amely a számsorozat érvényességét erősíti meg a kasszáknál, ezen a koncepción alapulnak a Luhn-algoritmust használó betéti vagy hitelkártyák (Visa, Mastercard, Amex) is. Ez az algoritmus lehetővé teszi a kártyaszám utolsó számjegyének kiszámítását az előzőek alapján, lehetővé téve, hogy a rendszerek hibákat észleljenek a tévesen beírt számjegyek esetén, mielőtt egy tranzakció végrehajtását megkísérelnék.

A visszaváltó automata által előállított utalványok ugyan nem a Luhn-algoritmust használják, a megoldás mégis nagyon hasonló, és amennyiben egy rosszindulatú fél képes lenne az utalványok hibaellenőrző kódját visszafejteni, elméletileg érvényes kódokat generálhatna egyedi összegekkel, akár egészen magasakkal. A cég alapítója, Bucsay Balázs jelezte: sikerült feltörniük a hibaellenőrző kódot, majd azt Python-szkriptbe implementálni.

Egy programmal lényegében az utalvány bármely kódjának megadásával (az ellenőrző számjegy kivételével) kiszámítható válik a helyes ellenőrző számjegy.

Ez azt jelenti, hogy ha valaki módosítaná az utalvány kódjában szereplő összeget, egy új érvényes utalványt is létrehozhatna. A vonalkód csíkjainak előállítása sem különösebben nehéz, elvégezhető nyílt forráskódú eszközök vagy online források segítségével.

Nem csak a hazai rendszer lehet érintett

A Mantra szakemberei nem fogják közzétenni a Python-szkript, sem a mögötte álló matematikai formula nyilvánossá tételét: a szakértők az etikai szabályokat betartva a gyakorlatban nem hajtottak végre visszaélést. A mögöttes infrastruktúráért felelős céggel viszont már fel is vették a kapcsolatot, amely elismerte a hiba létezését, és dolgozik a rendszerrel való visszaélések visszaszorítására szolgáló megoldásokon.

A nemcsak magyar, hanem más uniós országokból származó utalványok vizsgálata után a cég egyébként arra a következtetésre jutott, hogy a probléma szélesebb körű lehet.

A sebezhetőséget az jelenti lényegében, hogy az utalvány értéke közvetlenül a vonalkódba van kódolva, és nem védi semmilyen biztonsági mechanizmus. Ha valaki képes előállítani vagy módosítani a vonalkódot, elméletben azonnal észlelés nélkül módosíthatja az utalvány értékét. A szakértők javaslata szerint az ideális megoldás az lehetne, ha a kódolt értéket véletlenszerűen generált azonosítókkal helyettesítenék belső tartalom nélkül, amit nyomtatáskor generálna a rendszer, biztonságosan tárolva egy központi adatbázisban.

Az utalvány bemutatásakor az üzlet rendszere a központi adatbázis online ellenőrzésével hitelesíthetné annak érvényességét, garantálva, hogy csak valós utalványokat fogadjanak el. A megoldás sok pénzbe és időbe kerülne, viszont jelentősen növelné a biztonságot és megakadályozná az utalványértékek jogosulatlan manipulálását. Jelenleg egyébként az is plusz biztosítékot jelent, hogy az utalványokat például speciális vízjellel ellátott papírra nyomtatják, másrészt az is kérdéses, hogy megéri-e pár ezer forintért vállalni a kockázatot.

Cikkünk elkészítése közben a Google Trends adatait is felhasználtuk.

Ajánlott videó

Olvasói sztorik