Какво е фиксиране на сесия?

Има много различни видове уязвимости в сигурността, открити в уебсайтовете, една интересна се нарича „Фиксиране на сесията“. Фиксирането на сесията е проблем, при който нападателят може да повлияе на идентификатора на сесията, известен още като идентификатора на сесията на потребител, и след това да го използва, за да получи достъп до техния акаунт. Има два начина, по които този тип уязвимост може да работи, тя може да позволи на нападателя да намери или зададе идентификатора на сесията на друг потребител.

Как се извършва атака за фиксиране на сесия

Идентификаторът на сесията на потребител често е ключова част от удостоверяването на уебсайта и в много случаи е единствената информация, която идентифицира конкретния потребител, който е влязъл. Проблемът с това е, че ако нападателят може да зададе или научи идентификатора на сесията на друг потребител, той може да използва маркера на сесията и след това да може да действа като потребител.

Обикновено това се прави чрез подвеждане на потребителя да щракне върху вид фишинг връзка. Самата връзка е напълно легитимна, но включва променлива, която задава определен идентификатор на сесията. Ако след това потребителят влезе с идентификатора на сесията и сървърът не му присвои нов идентификатор на сесия вход, нападателят може просто да зададе своя идентификатор на сесията да бъде същият и да има достъп до жертвата сметка.

Друг начин нападателят може да открие идентификатора на сесията на жертвата е, ако се появи в URL. Например, ако нападателят може да подмами жертвата да й изпрати връзка и тя включва идентификатора на сесията на жертвата, нападателят може да използва идентификатора на сесията за достъп до акаунта на жертвата. В някои случаи това може да се случи напълно случайно. Например, ако потребителят копира URL адреса с идентификатора на сесията и го постави на приятел или във форум, всеки потребител, който следва връзката, ще бъде влязъл с акаунта на потребителя.

Поправки за фиксиране на сесия

Има няколко решения на този проблем и както винаги, най-доброто решение е да приложите възможно най-много корекции като част от стратегия за защита в дълбочина. Първото решение е да промените идентификатора на сесията на потребителя, когато влезе. Това предотвратява възможността на нападателя да повлияе на идентификатора на сесията на влязъл потребител. Можете също да конфигурирате сървъра да приема само идентификатори на сесии, които е генерирал, и изрично да отхвърля всички предоставени от потребителя идентификатори на сесии.

Уебсайтът трябва да бъде конфигуриран така, че никога да не поставя никакви чувствителни потребителски данни като идентификатор на сесията в URL адреса и трябва да го постави в параметър на заявка GET или POST. Това предпазва потребителя от случайно компрометиране на собствения си идентификатор на сесия. Използвайки както идентификатор на сесията, така и отделен идентификационен токен, вие удвоявате количеството информация, която нападателят трябва да получи, и предотвратявате достъпа на нападателите до сесии с известни идентификатори на сесии.

Жизненоважно е всички валидни идентификатори на сесии за потребител да бъдат анулирани, когато се щракне върху бутона за излизане. Възможно е да се регенерира идентификаторът на сесията при всяка заявка, ако идентификаторите на предишни сесии са невалидни, това също не позволява на нападателите да използват известен идентификатор на сесия. Този подход също така значително намалява прозореца на заплахата, ако потребителят разкрие собствения си идентификатор на сесия.

Чрез разрешаване на множество от тези подходи, стратегия за защита в дълбочина може да елиминира този проблем като риск за сигурността.