Egyesével kezdtek beszélni magukról. Eszter a rendszer szerveroldali részén dolgozott. Bence, huszonnyolc éves, a mobilalkalmazásért felelt. András, harminckettő, az adatbázissal foglalkozott: azzal a hellyel, ahol a felhasználókról szóló összes információt tárolták. Én közben jegyzeteltem. Tömören, lényegre törően: név, projekt, jelenlegi feladat.
A sor végül Márkhoz ért. Megköszörülte a torkát. A hangja még mindig magabiztosan csengett, de a testtartása már nem volt ugyanaz: nem terpeszkedett hátra a székben, hanem kihúzta magát.
– Márk. Frontend. A felhasználói fiók felületét csinálom.
– A frontend az, amit egy átlagos felhasználó a képernyőn lát – mondtam, bár inkább a jegyzet kedvéért, a rend miatt magyaráztam. – Gombok, űrlapok, oldalak. A személyes fiók pedig az a rész, ahová az ember a nevével és jelszavával belép, módosítja a beállításait, megnézi az előzményeit. Jól értem?
Márk kurtán bólintott.
– Határidő? – kérdeztem.
– Hát… rendben van. Folyamatban.
– Pontosabban kérem. Melyik napra?
Vállat vont.
– Péntekre, gondolom.
– Rendben. Amit eddig elkészítettél, azt ma ötig várom ellenőrzésre. Látni akarom, hol tartasz.
A szája sarka alig észrevehetően megrándult. Gúnyos kis félmosoly volt, de észrevettem. És rajtam kívül még ketten. Az egyikük az a fiú volt, aki reggel is felhorkant a folyosón; most hátradőlt a székében.
Az értekezlet véget ért. Mindenki az ajtó felé indult. Épp a noteszemet pakoltam össze, amikor a folyosóról meghallottam Márk hangját. Nem beszélt hangosan, de suttogni sem próbált. Pont úgy mondta, hogy eljusson hozzám, ugyanakkor később nyugodtan állíthassa: „nem önnek szólt”.
– Ismeretséggel ültették ide. Láttátok? Kis notesz, kis toll. Mint valami könyvelésen. Huszonhárom év tapasztalat, aztán úgy öltözik, mint egy könyvtáros. Kíváncsi vagyok, meddig bírja.
Valaki halkan felnevetett.
Eszter a vízadagolónál állt. Mindent hallott. Rám nézett. Én a monitor felé fordítottam az arcom.
Háromszor. Fél nap alatt háromszor. Először reggel a folyosón: „néni, álljon arrébb”, két tanú előtt. Másodszor az értekezleten az a félmosoly, amikor feladatot adtam neki. Harmadszor pedig ez az „ismeretséggel került ide”, a hátam mögött, de olyan hangerővel, hogy biztosan meghalljam.
Megnyitottam a projekt kódját a képernyőn. Először azt kellett átlátnom, mi készült el eddig. Amint az ujjaim a billentyűzetre simultak, bennem is lecsendesedett valami. Ez volt az én terepem. Itt az életkor nem számított. Itt csak egy kérdés létezett: működik, vagy nem működik.
Öt órára Márk elküldte a kódját átnézésre. Megnyitottam a fájlokat. Tizenkét modul, valamivel több mint négyszáz sor. A felhasználói fiók oldala: az a felület, ahol az ember belép a weboldalra, átírja az adatait, visszanézi, mit vásárolt korábban. Nem tartozott a legbonyolultabb feladatok közé, de pontosságot követelt. Különösen a biztonsági részeknél, mert az oldal mögött nem kitalált adatok álltak, hanem valódi emberek valódi személyes iratai.
Márk odalépett az asztalomhoz. Keze a zsebében, álla enyhén megemelve. A fejhallgató a nyakában lógott.
– Átküldtem. Működik minden. Mehetek?
– Várj egy kicsit – mondtam, miközben görgetni kezdtem a kódot. – Ülj le, kérlek.
Nem ült le. Állva maradt, egyik lábáról a másikra helyezve a súlyát.
Az első hibát a harmadik percben találtam meg. A jelszó ellenőrzése rosszul volt megírva: a program átengedte az üres mezőt. Olyan volt, mint egy ajtózár, amely kinyílik, ha valaki egyszerűen lenyomja a kilincset. Kulcs nélkül. Bárki beléphetett volna más fiókjába anélkül, hogy tudta volna a jelszót.
– Itt – mutattam a sorra. – Az ellenőrzés nem fut le megfelelően. Üres jelszóval is be lehet jutni. Érted, ez mit jelent? Valaki idegen belép a te fiókodba, és mindent lát: nevet, címet, bankkártyaszámot.
Márk közelebb hajolt a monitorhoz.
– Ja, igen. Apróság. Majd javítom.
– Ez nem apróság. Ez egy ajtó zár nélkül.
A második hiba: a felhasználói adatok védelem nélkül mentek át a rendszeren. Mintha valaki személyi igazolvány-adatokkal teli levelet nem borítékban adna fel, hanem nyílt képeslapon. Útközben bárki elolvashatta volna.
A harmadik: ugyanazt a műveletet egyetlen közös megoldás helyett négy különböző helyre másolta be. Mintha egy receptben az „melegítsd elő a sütőt száznyolcvan fokra” utasítás minden egyes oldalon újra szerepelne. Ettől a program lassabb lesz, és sokkal könnyebben törik el.
Aztán jött a negyedik. Az ötödik. A hatodik.
Márk hallgatott. A füle már nem rózsaszín volt, hanem vörös. Élénkpiros, mint a főtt rák a tányéron. Kihúzta a kezét a zsebéből, és összefonta a mellkasa előtt.
A hetedik hiba különösen veszélyes volt. A program nem ellenőrizte, létezik-e egyáltalán a felhasználó, mielőtt megmutatta volna neki az oldalt. Mint egy postás, aki úgy visz ki csomagot egy címre, hogy előtte meg sem nézi, áll-e ott ház. A küldemény eltűnik a semmiben. Az adatok pedig oda kerülnek, ahová egyáltalán nem volna szabad.
– Hét hiba – csuktam be a noteszemet. – Négyszáz sorban. Ebből három kritikus. Ha ez a kód éles weboldalra kerül, a felhasználók személyes adatai gyakorlatilag bárki elé kiterítve hevertek volna.
Márk állt előttem. A karját már nem fonta össze; a teste mellett lógott. Az ujjai ökölbe szorultak.
– Kijavítom – mondta halkan.
– Természetesen kijavítod. Holnap reggel tízre kérem az új verziót. Mind a hét ponttal.
Megfordult, és elindult kifelé. Gyors léptekkel ment, vissza sem nézett. Az ajtó nem csapódott be mögötte; az utolsó pillanatban visszafogta.
