A masik az az ellenorizetlen input: masszivan meg kell szurni mint JS-ileg, mind idezojelileg a bejovo adatokat (alapbol az altalam epitett / configolt keretrendszerekben a "text" tipusnak egyik se engedelyezett), mindazt a valtozot, amit az adott action akar opcionalisan felhasznal, kulon, configba vagy a fajl elejen jelezni kell, tipussal, es a tipusmegadas rogton ellenoriz.
De
Vessunk egy pillantast erre a chrome exploitra.
Ezt az Isten se. Ez egy tanutetel egy NP-teljes problemara.
Gondatlanok voltak a Google programozoi?
Felhasznaloi szempontbol igen: bennemaradt 14-20 hiba, aminek egyuttes kihasznalasaval a gepre exe-t lehet telepiteni.
Fejlesztoi szemmel: nem volt meg olyan bongeszokkel kapcsolatos cikk, ahol ennyiszer olvastam volna az "isolation" szot: ebben a cuccban minden szet van szedve mindentol, s a jogok eleg brutalis kontrollja van, iszonyatosan finomhangolva. Megis feltortek.
A feltores az nem olyan, mint amikor egy hid osszeomlik: a Tacoma Narrows Bridge osszeomlasa 1940-ben azert tortent, mert egy baromi hosszu hidon egy baromi eros szel fujt, de a felhasznalok normalisan hasznaltak. A Hyatt hotel osszeomlasa egy tulterheleses felhasznalasban tortent (konkretan a nyitobulin), egy hulye megoldas miatt (ami amugy a terveken mashogy szerepelt.
A feltores az olyan mint amikor belehajtanak egy repulogeppel a World Trade Centerbe. Azok az emberek, akik fel akarjak torni a rendszer, marhara nem rendeltetesszeruen hasznaljak.
Gaz hogy osszeomlott a WTC? Igen, az. Talan meg pert is inditottak, de azert a mernokoket nem igazan lehet felelosse tenni azert, hogy nem terveztek, hogy nehany arab belehajt tornyonkent egy szelestorzsu utasszallitot a magasba. Amugy a pinces robbantast anno tulelte. Ja, es az arab kikerhette a WTC epiteszeti terveit a new york-i tanacstol, mert az mar ott volt, a mernok viszont nem igazan gondolkozott utasszallitoban.
Igen, vannak biztonsagi szoftverek. A legtobb biztonsagi megoldas valamilyen adott feltetelezeseken alapul. Egy asztali gepen, ahol van egy CPU, egy vinyo, egy memoria, effektiv barmilyen feltetelezes elmeleti, hacsak nem kizarolag az OpenBSD felhasznalokat akarjuk kiszolgalni.
Ahol tehetem, a fizetesi rendszer paypal vagy barki csak nem en, a login facebook vagy barki csak nem en. Ha olyan az adat, a vinyo titkositott. Ha meg olyanabb, kulon gepen van ami az adatot ugy tartja magaban mint egy privat kulcsot, es nagyon megirt interfeszeken lehet csak tole kerdezni, es lehetoleg keves a kozos infrastrukturaja barmivel.
Nyilvan ez utobbit is cs.hetem, ha egyszercsak valami rg ugy dont, hogy osszevirtualizalja a komplett rendszert, es a host rendszeren keresztul torik meg; ugye anno a freeblog lett osszevirtualizalva a sajat backup storage-evel, nem mondok semmit, de ez is ilyen problema...
Az rg-k is ludasak: a multkor demonstraltam egy rendszeren, ahol a fejleszto csoportba tartozo LDAP-accountokkal at lehetett menni a tesztszerverekre, onnan at a staging-re, majd at a prodra, a prodbol pedig (mivel a forraskod ismert volt, hisz az SVN-hez a hozzaferest is az az LDAP adta) ki lehetett szedni a db configjat, es siman lekerni barmit. Programozokent ezen mit vedjek?
De a biztonsagi szakertok tobbsege nem epitett meg egy rendes rendszert se: akinek erre van gusztusa, az rendszerint max pentesztel, esetleg secu cuccokat ir a metasploithoz vagy tudomisen, de nem full frontendes, nagyterhelesu webappokat irogat enterspajz kornyezetben az biztos.
Meg valami az enterspajzrol: egy ilyen cuccon dolgoznak also hangon 20-an. Namost a bug, definicio szerint az, amikor az egyik programozo felreerti a masikat. Lehet, hogy Brian Kernighan-t erti felre es Buffer Overflow-t okoz, vagy azt gondolja, majd Linus megvedi a memoriat, Linus meg ugy gondolja, ez a programozo dolga, tokmindegy, egy 20 fos csapatban vannak, lesznek, voltak felreertesek, belul es kivul egyarant.
Nyilvan brutalisan szurjuk, ez a dolgunk; minden ra van epitve egy iszonyat alacsony bugratas rendszerre (ahhoz amugy nem TDD-zgetni kell, hanem tervezni, az a legtobb programozo remalma, de mindegy). Egy ilyen WTC-jellegu tamadast nem vedunk ki, pont, sajnalom. Ha perelnek, akkor se fogunk.
Kedvteloknek es rendes mernokokert kialtoknak szivvel ajanlom Petroski-tol a To Engineer Is Human-t. O amugy strukturalis dolgokkal, anyagtannal (femek, hidak!) foglalkozo gepeszmernok.
- Aadaam blogja
- A hozzászóláshoz be kell jelentkezni
- 1663 megtekintés
Hozzászólások
"UML-ekkel bizonyitom be, hogy bizonyos hozzaferes elvi lehetetlensegbe utkozik"
--
"You're NOT paranoid, we really are out to get you!"
- A hozzászóláshoz be kell jelentkezni
Eax, azert egy buffer overflow-t meg kiszedek egy flowchartbol, vagy rajovok, hogy egy adott aktornak nem kene valami API-hoz hozzaferni :)
That said, tudom, hogy en vagyok Magyarorszag utolso ipari UML-felhasznaloja, na de a cuccaimat nem is szoktak torni.
Hogy is van?:) A jo modellezo nem azt tudja, mit kell beletenni, hanem hogy mit lehet/kell/szabad kihagyni!
(hatteranyag: determinisztikus, teljesen definialt automatak (FoNy), Petri-halok es LTL kifejezesek (Form))
- A hozzászóláshoz be kell jelentkezni
"Eax, azert egy buffer overflow-t meg kiszedek egy flowchartbol"
Az jo, epp hallottam, hogy nehanyan szivesen vennek, ha pl. a linux kernelbol kiszedned a buffer overflow-kat.
"na de a cuccaimat nem is szoktak torni"
Ha jol emlekszem, a legutobbi kodod 17 soraban Hunger kollega visszakezbol 5 hibat talalt. En egy kicsit ovatosabban fogalmaznek.
Szerk: ja, es azt meg nem lattuk be, hogy egeszpontosan hogyan is lesz a "UML-ekkel bizonyitom be, hogy bizonyos hozzaferes elvi lehetetlensegbe utkozik"-bol "azert egy buffer overflow-t meg kiszedek egy flowchartbol".
--
"You're NOT paranoid, we really are out to get you!"
- A hozzászóláshoz be kell jelentkezni
A sorrendet tessek megerteni: elobb van a dizajn, aztan a kod.
Azt is tisztazzuk, mit ertunk flowcharton: az en flowchartjaim tartalmazzak minden egyes muvelet be es kimeno adatait, tehat 3 oszlopod van kb.
| input adattipusok | program flow | output adattipusok |
ez amugy egy bevett technika aktivitasdiagrammoknal, bar ez "sima" flowchart.
Buffer overflow emlekeim szerint akkor van, ha varsz valamennyi inputot egy adott memoriateruletre, de nem annyiban maximalizalod az olvasast, a tipusrendszert meg megkerulod pointerezessel. Ezaltal atfolyhat az adatod egy masik memoriateruletre, elobb-utobb talan sikerul - mivel Neumann-architektura - futtatando kodot is atirnia a tamodonak, nem "csak" adatot.
Amikor igy latod a cuccot, es ez egeszen szepen vegig van vezetve a user interview-ktol, mindig, lepesrol lepesre konkretizalva, akkor meg tudod mondani, hogy az ott mekkora lesz. Vagy megbizhato API-t hasznalsz, vagy nem olvasol tul.
Ennek az elsodleges celja, hogy mire odaersz hogy begepeld a kodot, ne legyenek "varazsadataid": ne legyen olyan, hogy nem tudod mit, honnan szedj, ne kelljen ugy castolnod, hogy nem szamitottal ra, mert papiron meg siman megnezed ilyenkor hogy osszeegyeztetheto-e a ket tipus, de gepeleskor mar annyi minden zaj van...
Engem meg arra neveltek, meg elsos egyetemistakent a BME elott a SZE-n, hogy szepen felirod elotte hogy mik a bemeneti adataid, hany bajtosak, mik a kimeneti adataid, hany bajtosak. Lepesenkent.
Sot, ha at akartal menni a vizsgan, egy bittel nem foglalhattal tobbet mint kene, az beszorozta a pontjaidat 0-val.
Szoval a konkretum: akkor is, ha nem fuggvenyparameter, hanem beolvasott tipus (sot, fokent akkor!), a tipust felirom, es mivel tudatos a tipus hossz megvalasztasa (az altal valik tudatossa, hogy sajat kezemmel irtam le, papirra, motorikus memoria), a rendszer lehet szo nelkul felbevag egy tulmeretezett inputot (bar erre jobban figyelek), de nem enged BOF-t. Minden beolvasott adatot tipusellenorzok (pont azert, mert a compiler ezeknel nem teszi, pedig a papiromon ott a tipus) es visszaellenorzom begepeles utan a papirt, igy azt gondolom, javits ki,ha ezek utan is tevednek, hogy elkerulom a buffer overflow-t.
Macera, papirmelo. Ha jol emlekszem, multkor egy 2000 soros kodhoz vagy 200 A4-es lapot szedtem ossze a vegere. Raketabiztos a cucc amugy, igaz, sokkal prozaibb oka van annak, hogy nem lehet torni.
Statikus, offline kodanalizis. Nem lehet nagyon felskalazni, mondjak, de egy 2 millio soros kodrol nem is azt akarod tudni, mint egy 200 sorosrol. En kinyomtattam egyszer egy 3000 soros kodot refaktor elott es egy hetig ceruzaval jelolgettem rajt az elemeket (meg forditottam olaszrol a valtozoneveket). Utana egy ulto helyembe refactoroltam. (ilyen nagysagrendben mar van automata teszteles is, igaz, egyszeruen "felvettem" az eredeti rendszer bemeneteit es kimeneteit, majd ellenoriztem, hogy az uj rendszer ugyanugy viselkedik-e minden bemenetre. Ezutan a ket rendszer egy ideig egyutt futott, es csak akkor engedtek at hibajelzes nelkul valamit, ha egyetertettek.)
Lassu, konzervativ. Senki nem panaszkodott meg, hogy lassabb lennek mint a tobbiek, ez varhatoan azert van, mert az atlagidom feleannyi.... Igaz, annak tobbseget egy papirlap felett gornyedve toltom, ha nekem kell kodot irnom.
Akkor szokott felcsendulni a hisztihimnusz amikor probalom finoman emlegetni, hogy lehetne am igy is, vagy amikor megkerdezi valami managger, hogy "mi lenne, ha most a papiros bohockodast kihagynad", amire az a valaszom, "semmi, ahhoz masik programozo kell, ha gondolod, rugj ki vagy add at a taszkot, velem ez a modszer es ennyi ido lesz". Az is fele mint amit mastol kap, ezt o is tudja.
A legutobbi kodomrol:
Az egy demonstracios kod volt, pont neked, meg talan gtalkon is atkuldtem, hogy nezz ra. Hadovaltatok a kommentekben osszevissza dolgokat, senki nem ertett belole semmit, mert csak felszavas menozesekre futotta, hat ugye aki csak beszel vegfelhasznaloi rendszerekrol az igy szokta. Konkretum lof.sz se, mert aki auditalja az nem irja.
Csinaltam a szovegetek alapjan egy naiv implementaciot, ugylatszik ez nem volt eleg vilagos. Egy dologban voltam haklis, hogy mindenkeppen nyujtani akartatok az idot 1 mp fole, mert ez biztonsagilag biztos marha jo, csak sajna 200-250 msec alapjan kell valaszolnia valaminek ahhoz, hogy ne erezze a user hogy akad a rendszer. Ez hard limit, hacsak nem adsz minden usernek egy spanglit, hogy feleolyan lassan verjen a szivuk, mer' akkor jo lesz fel masodperc is. Egy jelszoellenorzo rendszer vegen sajna altalaban szenizotop-alapu processzor van, a sziliciumosnal inkabb certek mennek.
Utana voltal szives es benyogted, hogy a bcrypt nevu libet / algoritmust kell hasznalni oszt szevasz. A masik srac pedig nem birt elolvasni egy 200 soros implementaciot a pbkdf_v2 -re, ami raadasul a google elso talalata, hogy az jo-e. Ebbol en azt kovetkeztettem, hogy bemagolta mint hogy Afrika legnagyobb folyoja a Nilus, hogy jelszotitkositasra pbkdf_v2-t kell hasznalni.
Tudod, azt gondolom, az a szakerto, aki nem tud konkret peldakoddal eloallni egy szakteruleti problema eseten, az nem eleg jo. Fuggetlenul attol, mennyire erted a szakteruletet: ha barki nekem azt mondja a sajat szakteruletemre, hogy "csinald jobban bazdmeg", elkerem a kontextust, leulok, es megcsinalom. Volt mar, hogy az enyem se lett jobb (pont ugyanaz jott ki), akkor elnezest kertem.
Az, hogy ti mennyit tudtok a biztonsagrol, az csak kontextusban derul ki. A kontextus pedig hus-ver emberek altal hasznalt rendszer, akinek a jelszava vagy Cica, vagy fel van irva mert nem birja megjegyezni, aki elkeveri a token-t, es akinek az OTP-rol a bank jut az eszebe.
Itt a kontextus meg az a rendszer, ami ezeknek az embereknek keszul, olyan emberek altal, akik nem ezzel foglalkoznak. En szoftvertervezessel foglalkozom. Lehet hogy nem tetszik neked, lehet hogy feleslegesnek erzed (a programozok is), de ha odaultetnek, hogy tervezzek meg egy aktualis programot, megtervezem. Hogy jo-e, nem jo, ez egy masik kerdes.
Egeszen addig, amig ilyen szintu doksik nem kerulnek ki - publicba - a kezetek kozul, es csak sejtelmesen hummogtok, addig nem derul igazabol ki, hogy ez most egy script kiddie szelhamossaga-e, vagy verprofie. Lehet hogy penzert osszeszeded magad es megteszed, nem erdekel. Itt nem tetted se az elozo beszolasoddal, se az idezett postnal.
Szoval ennyit az ovatos beszologatasokbol.
(A tobbiektol elnezest, ez blogrovat.)
- A hozzászóláshoz be kell jelentkezni
tecc
- A hozzászóláshoz be kell jelentkezni
Te is tudod biztosan, hogy nem erről van szó. Vannak olyan programozók a szakmában kilószám, akiknek annyi fogalma sincs a biztonságos programozásról, mint egy érdeklődő laikusnak. Ez kiderül akkor, amikor egy-egy projekt kapcsán kapcsolatba kerülök programozókkal és megkérdezem tőlük, hogy ez meg mi a véres faszér' van így?
Példa:
Programozó: "nem tudok kapcsolódni az adatbázishoz"
Én: "hogyan próbálod?"
Programozó: "sa / üres password"
Én: "miért gondolod, hogy jó ötlet SQL szervert üzemeltetni üres password-del? alapban nem is települ úgy, külön meg kell erőszakolni, hogy ilyen szar legyen"
Programozó: "nekem úgy kell és kész"
Én: "de mi az oka?"
Programozó: "mert ez van hardcode-olva a forrásba"
Én: "facepalm, 2012-ben?"
Te erre mi mit mondanál?
Értem, hogy miről beszélsz, de szerintem te is, hogy én miről.
--
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
Mindketten ertjuk, de bizzuk tan a birosagra a ketto kozti hatarvonal kijeloleset?
Egy parmillio soros forraskodban az a 10-20 ember 10 even at sok-sok ezer dologra kell hogy figyeljen, a biztonsag az egyik.
Raadasul iszonyat up-to-date-nek kell lenni, b.szottnagy es nyakatekert az irodalma. Nezzunk par peldat:
- "jajj, idokozbe kiderult, a DES nem biztonsagos",
- "jajj, a PHP / Ruby / stb legfrissebb valtozataban talaltak egy BOF hibat, mar kijavitottak, viszont abban meg olyan bug van amitol a mi rendszerunk egyaltalan nem fut",
- "ha ez a RoR ficsor be van kapcsolva, mint kiderult, framework-szinten torheto a rendszer, mi meg epitunk ra"
Mindez
- user szempontbol pontosan 0 hasznot hajt (amig fel nem torik, persze),
- brutalisan meroleges mindenre (mert ha kiderul valami ficsorrol hogy nem biztonsagos, lehet a fel rendszer arra epul),
Raadasul
- a vedekezes ellene atlathatatlan forraskdokat eredmenyez (defenziv programozas), es
- iszonyat lassu behemotokat (tultervezes) (gondolkozzunk, mibe kerul egy thread-szintu izolacio, threadenkent vizsgalt jogokkal, mint ami a chrome-ban van... nem lassu a chrome, ertem en, de ha ez nem lenne, mennyivel lenne gyorsabb?)
Nem latok eles hatarvonalat: minden biztonsagi res gondatlansag eredmenye. Van, amikor egy zero-day exploithoz GUI-s telepito tartozik, kissrac meg kozli veled, gyerekjatek volt feltorni. Hataf.szom.
Megkergetem a programozot ha SQL injection van a kodjaban, de a biztonsagi szakertok olyan elvarasokat tamasztanak mintha mindenki ezzel foglalkozna, minden mas gyerekjatek lenne, es mi az hogy nem erted hogy a sha1 hash nem eleg, mi az, hogy nem hallottal meg arrol, hogy ezt mar feltortek.. ez iszonyat.
Amugy a sybase alapbol sa/nincsjelszo-val telepul. Lehet, onnan jott :)
- A hozzászóláshoz be kell jelentkezni
Az MS SQL is úgy települt, de már lassan 5 éve (vagy több) még külön szól, hogy ez így nem biztonságos. A fent említett példában szerintem semmilyen bíróság sem kell, hogy megállapítsuk, hogy ki a hunyó.
--
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
Azért vágod, hogy ennél azért te sokkal általánosabban akarod ráhúzni a vizes lepedőt a szoftverfejlesztőkre?
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Nem általánosabban. Csak a gondatlanokra, akik szerintem faszkorbácsot érdemelnek.
--
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
De ha perelnek, ahhoz kell birosag, erted, nem forumposztok alapjan fog valaki karteriteni / bortonben ulni.
(A sybase nem kerdezi meg, milyen jelszot akarsz, o csak beallitja az sa-t ures jelszoval, oszt majd megvaltoztatod ha akarod)
Szoval: hol a hatar? Hol tartunk karban egy listat arrol, hogy mi az, ami meg a te hibad, amit tudnod kell, es mi az, amiert mar nem perelhetnek be?
Mert azt gondolom te se gondolod komolyan, hogy pwnie gyoztes chrome-hekkelesekert borton jar.
- A hozzászóláshoz be kell jelentkezni
Barkit barmiert be lehet perelni.
- A hozzászóláshoz be kell jelentkezni
szerintem ez mar ezen a szinten filozofia, hogy valoban hardcode-olva van-e a jelszo, ha eleve nincs is jelszo :-) Csak a poen kedveert, ez melyik termek, amelyik szamara igy kell telepiteni az sql szervert, hogy mukodjon?
- A hozzászóláshoz be kell jelentkezni
"Vannak olyan programozók a szakmában kilószám, akiknek annyi fogalma sincs a biztonságos programozásról, mint egy érdeklődő laikusnak."
Maintainerek is vannak ilyenek, némelyik nagyobb nyíltforrású projektben. Viszont vannak cégek - biztonsági szakértőkkel - akik jópénzért szívesen (néha ingyen is) auditálnak programokat és segítenek azok biztonságossá tételében.
Laikusként/ügyfélként egyébként minden programot NEM biztonságosnak kellene tekinteni amíg valaki/cég odanem rakja a tökét vagy pénzt áldozva másnak/másik cégnek a tökét, hogy az biztonságos valamilyen általa dekralált vállalt szinten.
És ez sem lenne elég, szerintem legalábbis innen a büfékocsiból mindig elgondolkodok, hogy pl. a Steamet, Securomot vajon miért nem zavarja hogy hetek alatt fossá törik a cuccaikat - talán a sokat utált Ubisofton lehet látni vmi erőlködést, illetve megújúlást. Oké, hogy ezek csak játékszoftverek de lehetnének akár inkubátorvezérlők vagy nukleáris csapásmérő rendszerek is.
Az, hogy nincs ezen a fronton változás az azt jelenti számomra, hogy:
- vagy tényleg nem lehet megcsinálni ilyenre
- vagy nem fizetik meg rendesen a biztonsági szakértőket, nem költenek eleget erre (lehet kivan kalkulálva mennyit érdemes erre költeni)
No rainbow, no sugar
- A hozzászóláshoz be kell jelentkezni
Ő nem programozó, hanem egy egyetemista, aki a zhra akarja leadni a cuccot maximum :) Ilyesmit többéves tapasztalattal komoly programozó nem csinál.
- A hozzászóláshoz be kell jelentkezni
Nem, nem az. Senior programozó. A habot a tortán nem is említettem. Eztet az interneten keresztül el akarta érni közvetlen az 1433-on. Nem VPN-en. Úgy kajakra. És nem értette, hogy hol a probléma.
Hát istenem. Clipperen nevelkedett. Ott ilyen problémák nem zavarták.
--
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
Kivancsi vagyok hogy szoktal-e ilyenkor szolni a sajat vagy a programozo felettesenek, hogy szerinted gondok vannak a project minosegevel es a programozo hozzaertesevel?
Mert ha csak haveri tarsasagban es/vagy forumokon elnevetgelunk rajta attol te meg ha lenne 'felelossegrevonasi torveny', akkor lehetnel buntars(vagy tettestars? -fixme, nem vagyok jaratos ilyenekben). Vagy bar most nem szolsz, de ha lenne torveny akkor szolnal? Kellene egy ilyen szavazas is. :)
- A hozzászóláshoz be kell jelentkezni
"masszivan meg kell szurni mint JS-ileg"
- A hozzászóláshoz be kell jelentkezni
rovid celzas XSS-re, mi baj vele?
- A hozzászóláshoz be kell jelentkezni
Folytasd kérlek.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Tenyleg nem ertem, mi bajotok, tan ne szurjuk ki a script tageket es hasonlokat?:)
- A hozzászóláshoz be kell jelentkezni
Ja, hogy csak nem érthetően fogalmaztál. Elsőre nekem az jött le, hogy JS-ben akarsz szűrni.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Hát, ne JS-ből az egyszer fix.
- A hozzászóláshoz be kell jelentkezni
jaa, neeem... olyat neha csinaltunk, hogy json-ban volt a configja a formnak, es a JS es a szerver is ugyanazt szurte, de az azert volt, hogy amikor elmesz az adott fieldrol, mar hibat csipogjunk neked, ne legyen az, hogy valami a js-nek jo, a szervernek nem, vagy forditva... de nyilvan az van "biztonsagban" ami altalam felugyelt gepen fut, biztonsagi ellenorzes szerveroldalon. Jelen esetben a script tag-ekre celoztam egy inputmezobe pl.
- A hozzászóláshoz be kell jelentkezni
"Ahol tehetem, a fizetesi rendszer paypal vagy barki csak nem en, a login facebook vagy barki csak nem en"
Paypal oke (sot, ott mas a Paypal mogott allo vallalat eroforras elosztasa a biztonsagos penzugyi tranzakciok lebonyolitasahoz, mint egy kisebb vallalat megkisebb informatikai divizioja eseten, igy az kifejezetten elony, ha Paypallal lehet fizetni), de Facebook az nalam pl. ilyeneknel kizaro ok, 9gag-re ezert van es lesz 0 db kommentem pl.
Erdekes blogbejegyzes tho', ramfert most egy ilyen olvasmany :)
- A hozzászóláshoz be kell jelentkezni