{"id":1956,"date":"2015-02-14T16:23:08","date_gmt":"2015-02-14T14:23:08","guid":{"rendered":"http:\/\/soci.hu\/blog\/?p=1956"},"modified":"2015-02-14T16:24:18","modified_gmt":"2015-02-14T14:24:18","slug":"net-fejtoro-4-megoldas","status":"publish","type":"post","link":"https:\/\/soci.hu\/blog\/index.php\/2015\/02\/14\/net-fejtoro-4-megoldas\/","title":{"rendered":".NET fejt\u00f6r\u0151 4. &#8211; megold\u00e1s"},"content":{"rendered":"<p>K\u00e9rd\u00e9s: mi\u00e9rt nem j\u00f3, ha az ASP.NET Machine Key-emet Random.NextBytes()-szal gener\u00e1lom?<\/p>\n<p>A Machine Key-t alapban viewstate valid\u00e1l\u00e1sra haszn\u00e1lja az ASP.NET. HMAC algoritmussal csin\u00e1l egy hasht, amihez a Machine Key-t mint kulcsot is felhaszn\u00e1lja. Ez a kev\u00e9sb\u00e9 probl\u00e9m\u00e1s dolog. Ami sokkal veszettebb, hogy amikor bel\u00e9ptet\u00fcnk valakit az ASP.NET forms security-vel, akkor a bel\u00e9ptetett felhaszn\u00e1l\u00f3t azonos\u00edt\u00f3 adatot ezzel a Machine Key-jel titkos\u00edtj\u00e1k. Ha valaki megismeri ezt a kulcsot, akkor tud gener\u00e1lni kamu kukit, amibe azt a user id-t \u00edr be, amit csak akar. Azaz meg tud szem\u00e9lyes\u00edteni m\u00e1sokat. Ebb\u0151l azt\u00e1n lesz spoofing, vagy ak\u00e1r elevation of privilege. Magyarul senki nem szeretn\u00e9, ha b\u00e1rki m\u00e1s bel\u00e9phetne a nev\u00e9ben egy v\u00e9dett website-on. P\u00e9ld\u00e1ul az internetes bankj\u00e1ba.<\/p>\n<p>Sz\u00f3val, tal\u00e1n most m\u00e1r \u00e9rthet\u0151, a Machine Key-t nem szeretn\u00e9nk, ha b\u00e1rki megszerezn\u00e9 vagy kital\u00e1ln\u00e1. Megszerezni csak a site felt\u00f6r\u00e9s\u00e9vel lehet, \u00e9s admin jogokkal, tegy\u00fck fel ez nem t\u00f6rt\u00e9nt meg. Ha azonban a v\u00e9letlen sorozat gener\u00e1torunk kisz\u00e1m\u00edthat\u00f3, akkor m\u00e1s is ugyanazzal az algoritmussal tud gener\u00e1lni egy olyan kulcsot, amit \u00e9n is gener\u00e1ltam. \u00c9s m\u00e1r j\u00f6nnek is be m\u00e1s nev\u00e9ben.<\/p>\n<p>A .NET Random pszeudo-random gener\u00e1tor, azonos seed-del mindig ugyanaz a sorozat j\u00f6n ki bel\u0151le. Azt mondj\u00e1tok de \u00e9n ravasz vagyok, \u00e9s beadom a DateTime.Now.Ticket neki inputk\u00e9nt, az \u00fagysem tudja a t\u00e1mad\u00f3. Nem tudja, de p\u00f6rgetni \u0151 is tudja ezt a sz\u00e1mot addig, am\u00edg ki nem tal\u00e1lja a megfelel\u0151 seedet.<\/p>\n<p>Mi a megold\u00e1s? Olyan random gener\u00e1tor kell, ami teljesen kisz\u00e1m\u00edthatatlan. Pl. a termikus zaj digitaliz\u00e1lva t\u00f6k\u00e9letesen j\u00f3 erre a c\u00e9lra. Ha ilyen modul nincs a g\u00e9pben, akkor a Windows megpr\u00f3b\u00e1l valami nagyon randommal kij\u00f6nni, p\u00e9ld\u00e1ul \u00f6sszerakva olyan vad perf counter \u00e9rt\u00e9keket, mint a proci ventil\u00e1tor sebess\u00e9ge \u00e9s egyebek.<\/p>\n<p>A l\u00e9nyeg, hogy ha cripto szinten random \u00e9rt\u00e9k kell, akkor az <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/system.security.cryptography.rngcryptoserviceprovider%28v=vs.110%29.aspx\">RNGCryptoServiceProvider<\/a>  t\u00edpust kell haszn\u00e1lni erre a c\u00e9lra.<\/p>\n<p>Egy\u00e9bk\u00e9nt meg IIS 7.5-t\u0151l machine key-t tud gener\u00e1lni az IIS Manager GUI is. :)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>K\u00e9rd\u00e9s: mi\u00e9rt nem j\u00f3, ha az ASP.NET Machine Key-emet Random.NextBytes()-szal gener\u00e1lom? A Machine Key-t alapban viewstate valid\u00e1l\u00e1sra haszn\u00e1lja az ASP.NET. HMAC algoritmussal&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,32,4,22,93],"tags":[],"class_list":["post-1956","post","type-post","status-publish","format-standard","hentry","category-net","category-iis7","category-szakmai-elet","category-security","category-teaser"],"_links":{"self":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1956","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=1956"}],"version-history":[{"count":2,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1956\/revisions"}],"predecessor-version":[{"id":1960,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/1956\/revisions\/1960"}],"wp:attachment":[{"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=1956"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=1956"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soci.hu\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=1956"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}