Komoly gyenge pontja lehet a visszaváltási rendszernek
A vonalkóddal ellátott nyomtatott utalvány akár hamisítható is lehet egy tetszőleges összeggel, állítja a Mantra Information Security, bár a módszer gyakorlatban való kivitelezése nem egyszerű.
Az IT-biztonsággal foglalkozó Mantra Information Security alapítója, Bucsay Balázs nemrég egy kritikus hibáról számolt be az európai kötelező visszaváltási rendszerben (DRS), ami elméletben jelentős anyagi haszonszerzésre adhatna lehetőséget a rosszindulatú szereplőknek. A szakértők konkrét csalást nem követtek el, az etikai szabályokat betartva hívták fel a rendszer üzemeltetőinek figyelmét a problémára, valamint tettek javaslatot arra, miként tehetnék biztonságosabbá a vonalkódokra támaszkodó újrahasznosítási rendszert.
Idén nyáron lett a gyakorlatban hazánkban is eredménye a 2019-ben megjelent az Európai Parlament és a Tanács röviden csak SUP (egyszer használatos műanyagokra vonatkozó) irányelvének, melynek célja a körforgásos gazdaságra történő átmenet elősegítése. Ennek eredményeként számos tagország vezetett be visszaváltó-rendszert, bizonyos tagállamokban már korábban, hazánkban pedig július elsejétől a REpont rendszert, amivel az italcsomagolásokat mindenki könnyedén visszaválthatja.
A visszaváltó-rendszer alapelve egyszerű: a vásárlók a sértetlen palackokat nem összenyomott állapotban, jól olvasható vonalkóddal a kihelyezett automatákba helyezhetik, ahol visszaigényelhetik a termék árába beépített visszaváltási díjat, amit három módon lehet kérni (utalvány, átutalás, jótékonykodás), amennyiben az adatbázisban megtalálható a palackon olvasható vonalkód.
Machine recruiting: nem biztos, hogy szeretni fogod Az AI visszafordíthatatlanul beépült a toborzás folyamatába.
A legnépszerűbb megoldás a nyomtatott 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 (1D) 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ó.
A Mantra szakértőinek feltűnt, hogy a vonalkód alatt feltüntetett számsorozat egy részlete mutatja az utalvány értékét, aminek a 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,
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 a rendszerek számára, hogy hibákat észleljenek a tévesen beírt számjegyek esetén, mielőtt egy tranzakció végrehajtását megkísérelnék.
Ugyan az automata által előállított utalványok nem a Luhn-algoritmust használják, de a megoldás 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.
Bucsay bejegyzése szerint 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 tudna generálni. 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.
A Mantra szakemberei nem tervezik sem 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 már felvették a kapcsolatot, ami elismerte a hiba létezését, és dolgozik a rendszerrel való visszaélések visszaszorítására szolgáló megoldásokon - derül ki a bejegyésből. A nem csak magyar, hanem más uniós országokból származó utalványok vizsgálata után a Mantra 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 az offline támadások megelőzése érdekében. 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ék véletlenszerű azonosítókkal lenne helyettesítve belső tartalom nélkül, ezeket a véletlen számokat a nyomtatáskor generálná a rendszer, és biztonságosan tárolnák 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. Egy ilyen megoldás implementálása azonban további erőforrásokat és időt igényelne, de jelentősen növelné a biztonságot és megakadályozná az utalványértékek jogosulatlan manipulálását. A javasolt megoldás műszakilag megvalósítható lehetne a meglévő kereteken belül, növelve a DRS biztonságát és megbízhatóságát. Érdemes hozzátenni, hogy a jelenlegi rendszerben egy konkrét visszaélés kivitelezéséhez még más tényezőkre is figyelnie kellene a csalóknak, az utalványokat például speciális vízjellel ellátott papírra nyomtatják.