세션 고정이란 무엇입니까?

click fraud protection

웹 사이트에는 다양한 유형의 보안 취약점이 있으며 그 중 흥미로운 것은 "세션 고정"입니다. 세션 고정은 공격자가 사용자의 세션 ID라고도 하는 세션 식별자에 영향을 준 다음 이를 사용하여 계정에 액세스할 수 있는 문제입니다. 이러한 유형의 취약점이 작동하는 두 가지 방법이 있습니다. 공격자가 다른 사용자의 세션 ID를 찾거나 설정할 수 있습니다.

세션 고정 공격이 수행되는 방식

사용자의 세션 ID는 종종 웹사이트 인증의 핵심 부분이며 로그인한 특정 사용자를 식별하는 유일한 데이터인 경우가 많습니다. 이것의 문제는 공격자가 다른 사용자의 세션 ID를 설정하거나 알 수 있으면 세션 토큰을 사용하여 사용자 역할을 할 수 있다는 것입니다.

일반적으로 이것은 사용자가 일종의 피싱 링크를 클릭하도록 속임으로써 수행됩니다. 링크 자체는 완전히 합법적이지만 지정된 세션 ID를 설정하는 변수를 포함합니다. 그런 다음 사용자가 세션 ID로 로그인하고 서버에서 새 세션 ID를 할당하지 않는 경우 로그인하면 공격자는 세션 ID를 동일하게 설정하고 피해자의 액세스 권한을 가질 수 있습니다. 계정.

공격자가 피해자의 세션 ID를 발견할 수 있는 또 다른 방법은 URL에 나타나는 경우입니다. 예를 들어 공격자가 피해자에게 링크를 보내도록 속일 수 있고 여기에 피해자의 세션 ID가 포함되어 있는 경우 공격자는 세션 ID를 사용하여 피해자의 계정에 액세스할 수 있습니다. 어떤 경우에는 완전히 우연히 발생할 수 있습니다. 예를 들어 사용자가 세션 ID가 있는 URL을 복사하여 친구나 포럼에 붙여넣으면 링크를 따라가는 모든 사용자는 사용자 계정으로 로그인됩니다.

세션 고정 수정

이 문제에 대한 몇 가지 솔루션이 있으며 항상 그렇듯이 최상의 솔루션은 심층 방어 전략의 일부로 가능한 한 많은 수정 사항을 구현하는 것입니다. 첫 번째 해결책은 사용자가 로그인할 때 사용자의 세션 ID를 변경하는 것입니다. 이것은 공격자가 로그인한 사용자의 세션 ID에 영향을 줄 수 있는 것을 방지합니다. 또한 서버가 생성한 세션 ID만 수락하고 사용자가 제공한 세션 ID를 명시적으로 거부하도록 서버를 구성할 수도 있습니다.

웹사이트는 세션 ID와 같은 민감한 사용자 세부 정보를 URL에 절대 배치하지 않도록 구성해야 하며 이를 GET 또는 POST 요청 매개변수에 배치해야 합니다. 이것은 사용자가 실수로 자신의 세션 ID를 손상시키는 것을 방지합니다. 세션 ID와 별도의 인증 토큰을 모두 사용하면 공격자가 획득해야 하는 정보의 양을 두 배로 늘리고 공격자가 알려진 세션 ID를 가진 세션에 액세스하는 것을 방지할 수 있습니다.

로그아웃 버튼을 클릭할 때 사용자의 모든 유효한 세션 ID가 무효화되는 것이 중요합니다. 모든 요청에서 세션 ID를 다시 생성할 수 있습니다. 이전 세션 ID가 무효화되면 공격자가 알려진 세션 ID를 사용하는 것도 방지할 수 있습니다. 이 접근 방식은 또한 사용자가 자신의 세션 ID를 공개하는 경우 위협 창을 크게 줄입니다.

이러한 접근 방식을 여러 개 사용함으로써 심층 방어 전략을 통해 이 문제를 보안 위험으로 제거할 수 있습니다.