Na webových stránkách se nachází mnoho různých typů bezpečnostních zranitelností, jedna zajímavá se nazývá „Session Fixation“. Fixace relace je problém, kdy útočník může ovlivnit identifikátor relace alias id relace uživatele a poté jej použít k získání přístupu ke svému účtu. Existují dva způsoby, jak tento typ zranitelnosti může fungovat, může útočníkovi umožnit buď najít nebo nastavit ID relace jiného uživatele.
Jak se provádí útok fixace relace
ID relace uživatele je často klíčovou součástí autentizace na webu a v mnoha případech je jediným údajem, které identifikuje konkrétního přihlášeného uživatele. Problémem je, že pokud útočník může nastavit nebo zjistit ID relace jiného uživatele, mohou používat token relace a poté být schopni jednat jako uživatel.
Obvykle se to dělá tak, že přimějete uživatele, aby klikl na určitý typ phishingového odkazu. Samotný odkaz je zcela legitimní, ale obsahuje proměnnou, která nastavuje zadané ID relace. Pokud se uživatel poté přihlásí pomocí ID relace a server mu při přihlášení nepřidělí nové ID relace, může útočník jednoduše nastavit stejné ID relace a získat přístup k účtu oběti.
Dalším způsobem, jak může útočník zjistit ID relace oběti, je, že se objeví v adrese URL. Pokud se například útočníkovi podaří oklamat oběť, aby jí poslala odkaz, který obsahuje ID relace oběti, může útočník použít ID relace k přístupu k účtu oběti. V některých případech k tomu může dojít zcela náhodou. Pokud například uživatel zkopíruje adresu URL s ID relace a vloží ji příteli nebo do fóra, každý uživatel, který následuje odkaz, bude přihlášen k účtu uživatele.
Sanace fixace sezení
Existuje několik řešení tohoto problému a jako vždy je nejlepším řešením implementovat co nejvíce oprav v rámci strategie hloubkové ochrany. Prvním řešením je změnit ID relace uživatele, když se přihlásí. To zabrání útočníkovi, aby kdy mohl ovlivnit ID relace přihlášeného uživatele. Můžete také nakonfigurovat server tak, aby vždy přijímal pouze ID relací, které vygeneroval, a explicitně odmítal všechna ID relací poskytnutá uživatelem.
Web by měl být nakonfigurován tak, aby do adresy URL nikdy nevkládal žádné citlivé údaje o uživateli, jako je ID relace, a měl by je umístit do parametru požadavku GET nebo POST. Tím se zabrání tomu, aby uživatel náhodně narušil své vlastní ID relace. Použitím ID relace i samostatného ověřovacího tokenu zdvojnásobíte množství informací, které útočník potřebuje k získání, a zabráníte útočníkům v přístupu k relacím se známými ID relace.
Je důležité, aby všechna platná ID relace pro uživatele byla po kliknutí na tlačítko odhlášení zrušena. Je možné znovu vygenerovat ID relace na každý požadavek, pokud jsou ID předchozí relace neplatné, zabrání to útočníkům v použití známého ID relace. Tento přístup také výrazně snižuje okno hrozby, pokud uživatel prozradí své vlastní ID relace.
Povolením více těchto přístupů může strategie hloubkové obrany tento problém eliminovat jako bezpečnostní riziko.