코더는 보안을 정복 : 공유 및 학습 시리즈 - 세션 관리 약점

게시일: 2019년 1월 31일
by Jaap Karan Singh
사례 연구

코더는 보안을 정복 : 공유 및 학습 시리즈 - 세션 관리 약점

게시일: 2019년 1월 31일
by Jaap Karan Singh
리소스 보기
리소스 보기

웹 사이트로 이동하여 로그인합니다. 평소처럼, 당신은 당신이 사고 싶은 제품으로 장바구니를 채웁니다. 그런 다음, 후프 - 당신의 손은 미끄러 브라우저 탭을 닫습니다. 사소한 공황 후 사이트의 URL을 다시 브라우저로 입력하고 "Enter" 키를 누르게 됩니다. 사이트로 다시 로그인되고 모든 항목이 여전히 장바구니에 있습니다. 휴.

이 사이트는 다시 인증하지 않고 누를 수 있는 사람이 누구인지 어떻게 알 수 있었습니까? 그것은 세션을 사용 했기 때문에 당신을 식별. 세션은 웹을 사용할 때 좋은 사용자 환경의 핵심입니다. 그러나 세션을 잘못 관리하면 공격자가 악용할 수 있는 보안 허점이 발생할 수 있습니다.

이제 세션 관리가 의미하는 바, 세션 관리가 얼마나 약한지, 세션을 제대로 관리하기 위해 수행할 수 있는 작업을 살펴보겠습니다.

세션 관리 약점 이해

세션은 응용 프로그램의 단일 사용자와 관련된 서버에 저장된 값을 나타냅니다. 이것은 두 가지 이유로 필요합니다: 첫째, HTTP는 상태없는 프로토콜입니다. 각 요청은 별개이며 요청 전후에 발생한 요청에 대한 지식이 없습니다. 세션을 사용하면 요청을 보낸 서버 트랙을 추적하는 데 도움이 됩니다. 그렇지 않으면 버튼이나 링크를 클릭할 때마다 로그인해야 합니다.

세션의 두 번째 이유는 사용자의 권한 부여입니다. 세션 식별자를 사용하여 시스템 내에서 특정 권한이 있는 특정 사용자를 인식할 수 있습니다. 응용 프로그램은 사람이 누구이며 무엇을 할 수 있는지 알 수 있습니다.

세션에는 두 가지 구성 요소가 있습니다. 서버 측의 데이터 저장소는 세션 식별자를 저장하고 사용자 ID 또는 카트 정보와 같은 사용자에 대한 정보로 매핑합니다. 동일한 세션 식별자가 쿠키의 브라우저로 전송됩니다. 쿠키는 사용자 시스템의 브라우저에 저장됩니다. 클라이언트는 각 요청으로 쿠키를 전달하여 서버가 이 요청이 동일한 사용자로부터 수신되고 있음을 알 수 있습니다. 대부분의 응용 프로그램은 세션을 사용하여 사전 인증 및 사후 인증 사용자를 추적합니다.

적절한 세션 관리는 응용 프로그램의 보안에 필수적입니다. 유효한 세션 ID는 사용자 이름/암호 또는 2단계 인증 토큰과 동일한 신뢰 수준을 가지고 있습니다.

가난한 세션 관리가 위험한 이유

세션 관리가 좋지 면 계정 인계가 완료될 수 있습니다. 즉, 고객 데이터를 도난당하거나 제품을 부정하게 구입할 수 있습니다. 공격자가 유효한 세션 ID를 얻는 방법에는 여러 가지가 있습니다.

세션 고정 공격은 사용자가 시스템에 로그인하는 경우와 URL을 사용하여 세션 식별자를 설정할 수 있는 경우와 같이 주요 시간에 세션이 변경되지 않을 때 발생합니다. 이러한 방식으로 세션 식별자를 설정하면 동일한 인증 원본을 사용하는 다른 응용 프로그램에서 사용자가 로그인하도록 할 수 있습니다. 이 경우 공격자는 웹 사이트를 탐색하고 세션 ID를 얻을 수 있습니다. 그런 다음 공격자는 URL에서 세션 ID가 있는 이메일을 통해 의심하지 않는 피해자에게 URL을 보냅니다. 피해자는 이메일의 URL을 클릭하고 웹 사이트에 로그인합니다. 로그인 시 세션 ID가 회전되지 않으면 공격자에게 유효하고 인증된 세션 ID가 있습니다. 이렇게 하면 계정 을 완전히 인수할 수 있습니다.

세션 관리 불량에 대한 또 다른 공격은 무차별 적인 추측 공격입니다. 개발자가 자체 세션 관리 시스템을 만들려고 할 때 추측하기 매우 간단한 세션 ID를 사용하는 경우가 많습니다. 이들은 시퀀스 (1, 2, 3) 또는 어떤 종류의 예측 가능한 패턴일 수 있습니다. 공격자는 유효한 ID가 발견될 때까지 세션 ID를 추측하기만 하면 됩니다. 이것은 또한 계정 인수로 이어집니다.

일정 시간이 경과한 후 자동으로 무효화되지 않은 세션을 악용하여 사용자를 공격할 수 있습니다. 성공적인 사이트 간 요청 위조 공격은 사용자가 사이트를 떠난 후에도 여전히 유효한 세션에 따라 달라집니다. 공격자가 사용자가 방문한 사이트에 iframe 또는 이미지를 배치한다고 가정해 보겠습니다. "src"(소스) 특성은 취약한 사이트의 URL로 설정되어 사용자를 대신하여 작업을 수행합니다. 예를 들어 사용자의 허가 없이 공격자의 계정으로 송금하기 위해 취약한 은행 응용 프로그램을 만들 수 있습니다.

세션 관리는 까다로울 수 있으며 약점은 치명적일 수 있습니다. 그러나, 그것은 잘 알려진 문제이며 해결할 수 있습니다.

안전하지 않은 세션 관리 패배

세션 관리는 모든 웹 응용 프로그램의 핵심 부분입니다. 따라서 많은 웹 개발 프레임워크에는 세션 관리 기능이 기본 제공됩니다. 이러한 시스템은 전문가를 면밀히 조사하여 문제를 발견하고 해결했습니다. 그들을 사용합니다.

좋은 세션 관리의 몇 가지 일반적인 속성은 다음과 같습니다.

     공격자가 추측할 수 없는 임의 세션 ID가 생성되었습니다.

     사용자가 로그아웃할 때 세션이 무효화됩니다.

     일정 시간이 경과한 후 세션이 자동으로 무효화됩니다.

     사용자가 로그인한 후 세션 I가 변경됩니다.

     무차별 암호 힘 공격을 방지하기 위해 최소 128비트 길이의 세션 ID

스프링, ASP.NET 코어, 레일장고와 같은 웹 프레임워크는 이러한 속성을 가지고 있으며 이 경우 더 높은 보안 표준에 사용해야 합니다.

결론: 처음부터 자체 세션 관리 시스템을 만들지 마십시오.

세션 ID가 만들어지면 보호해야 합니다. 보안 및 httpOnly 플래그를 'true'on 세션 쿠키로 설정합니다. 이렇게 하면 JavaScript로 값을 검색할 수 없으며 브라우저는 HTTPS를 통해서만 쿠키를 전송하여 공격자가 전송 중에 다른 사람의 세션을 훔치지 못하게 합니다.

세션 보안

무료 학습 리소스를 확인하여 안전한 세션 관리에 대해 자세히 알아보십시오. 세션을 보호하는 방법을 배우면 보안 위반으로 인해 사용자 계정 인수, 평판 손상 및 수익 손실을 방지하는 데 도움이 됩니다. 세션을 보호하고 사용자를 안전하게 보호합니다.

리소스 보기
리소스 보기

저자

야프 카란 싱

더 알고 싶으신가요?

블로그에서 최신 보안 코딩 인사이트에 대해 자세히 알아보세요.

Atlassian의 광범위한 리소스 라이브러리는 안전한 코딩 숙련도를 확보하기 위한 인적 접근 방식을 강화하는 것을 목표로 합니다.

블로그 보기
더 알고 싶으신가요?

개발자 중심 보안에 대한 최신 연구 보기

광범위한 리소스 라이브러리에는 개발자 중심의 보안 코딩을 시작하는 데 도움이 되는 백서부터 웨비나까지 유용한 리소스가 가득합니다. 지금 살펴보세요.

리소스 허브

코더는 보안을 정복 : 공유 및 학습 시리즈 - 세션 관리 약점

게시일: 2019년 1월 31일
Jaap Karan Singh

웹 사이트로 이동하여 로그인합니다. 평소처럼, 당신은 당신이 사고 싶은 제품으로 장바구니를 채웁니다. 그런 다음, 후프 - 당신의 손은 미끄러 브라우저 탭을 닫습니다. 사소한 공황 후 사이트의 URL을 다시 브라우저로 입력하고 "Enter" 키를 누르게 됩니다. 사이트로 다시 로그인되고 모든 항목이 여전히 장바구니에 있습니다. 휴.

이 사이트는 다시 인증하지 않고 누를 수 있는 사람이 누구인지 어떻게 알 수 있었습니까? 그것은 세션을 사용 했기 때문에 당신을 식별. 세션은 웹을 사용할 때 좋은 사용자 환경의 핵심입니다. 그러나 세션을 잘못 관리하면 공격자가 악용할 수 있는 보안 허점이 발생할 수 있습니다.

이제 세션 관리가 의미하는 바, 세션 관리가 얼마나 약한지, 세션을 제대로 관리하기 위해 수행할 수 있는 작업을 살펴보겠습니다.

세션 관리 약점 이해

세션은 응용 프로그램의 단일 사용자와 관련된 서버에 저장된 값을 나타냅니다. 이것은 두 가지 이유로 필요합니다: 첫째, HTTP는 상태없는 프로토콜입니다. 각 요청은 별개이며 요청 전후에 발생한 요청에 대한 지식이 없습니다. 세션을 사용하면 요청을 보낸 서버 트랙을 추적하는 데 도움이 됩니다. 그렇지 않으면 버튼이나 링크를 클릭할 때마다 로그인해야 합니다.

세션의 두 번째 이유는 사용자의 권한 부여입니다. 세션 식별자를 사용하여 시스템 내에서 특정 권한이 있는 특정 사용자를 인식할 수 있습니다. 응용 프로그램은 사람이 누구이며 무엇을 할 수 있는지 알 수 있습니다.

세션에는 두 가지 구성 요소가 있습니다. 서버 측의 데이터 저장소는 세션 식별자를 저장하고 사용자 ID 또는 카트 정보와 같은 사용자에 대한 정보로 매핑합니다. 동일한 세션 식별자가 쿠키의 브라우저로 전송됩니다. 쿠키는 사용자 시스템의 브라우저에 저장됩니다. 클라이언트는 각 요청으로 쿠키를 전달하여 서버가 이 요청이 동일한 사용자로부터 수신되고 있음을 알 수 있습니다. 대부분의 응용 프로그램은 세션을 사용하여 사전 인증 및 사후 인증 사용자를 추적합니다.

적절한 세션 관리는 응용 프로그램의 보안에 필수적입니다. 유효한 세션 ID는 사용자 이름/암호 또는 2단계 인증 토큰과 동일한 신뢰 수준을 가지고 있습니다.

가난한 세션 관리가 위험한 이유

세션 관리가 좋지 면 계정 인계가 완료될 수 있습니다. 즉, 고객 데이터를 도난당하거나 제품을 부정하게 구입할 수 있습니다. 공격자가 유효한 세션 ID를 얻는 방법에는 여러 가지가 있습니다.

세션 고정 공격은 사용자가 시스템에 로그인하는 경우와 URL을 사용하여 세션 식별자를 설정할 수 있는 경우와 같이 주요 시간에 세션이 변경되지 않을 때 발생합니다. 이러한 방식으로 세션 식별자를 설정하면 동일한 인증 원본을 사용하는 다른 응용 프로그램에서 사용자가 로그인하도록 할 수 있습니다. 이 경우 공격자는 웹 사이트를 탐색하고 세션 ID를 얻을 수 있습니다. 그런 다음 공격자는 URL에서 세션 ID가 있는 이메일을 통해 의심하지 않는 피해자에게 URL을 보냅니다. 피해자는 이메일의 URL을 클릭하고 웹 사이트에 로그인합니다. 로그인 시 세션 ID가 회전되지 않으면 공격자에게 유효하고 인증된 세션 ID가 있습니다. 이렇게 하면 계정 을 완전히 인수할 수 있습니다.

세션 관리 불량에 대한 또 다른 공격은 무차별 적인 추측 공격입니다. 개발자가 자체 세션 관리 시스템을 만들려고 할 때 추측하기 매우 간단한 세션 ID를 사용하는 경우가 많습니다. 이들은 시퀀스 (1, 2, 3) 또는 어떤 종류의 예측 가능한 패턴일 수 있습니다. 공격자는 유효한 ID가 발견될 때까지 세션 ID를 추측하기만 하면 됩니다. 이것은 또한 계정 인수로 이어집니다.

일정 시간이 경과한 후 자동으로 무효화되지 않은 세션을 악용하여 사용자를 공격할 수 있습니다. 성공적인 사이트 간 요청 위조 공격은 사용자가 사이트를 떠난 후에도 여전히 유효한 세션에 따라 달라집니다. 공격자가 사용자가 방문한 사이트에 iframe 또는 이미지를 배치한다고 가정해 보겠습니다. "src"(소스) 특성은 취약한 사이트의 URL로 설정되어 사용자를 대신하여 작업을 수행합니다. 예를 들어 사용자의 허가 없이 공격자의 계정으로 송금하기 위해 취약한 은행 응용 프로그램을 만들 수 있습니다.

세션 관리는 까다로울 수 있으며 약점은 치명적일 수 있습니다. 그러나, 그것은 잘 알려진 문제이며 해결할 수 있습니다.

안전하지 않은 세션 관리 패배

세션 관리는 모든 웹 응용 프로그램의 핵심 부분입니다. 따라서 많은 웹 개발 프레임워크에는 세션 관리 기능이 기본 제공됩니다. 이러한 시스템은 전문가를 면밀히 조사하여 문제를 발견하고 해결했습니다. 그들을 사용합니다.

좋은 세션 관리의 몇 가지 일반적인 속성은 다음과 같습니다.

     공격자가 추측할 수 없는 임의 세션 ID가 생성되었습니다.

     사용자가 로그아웃할 때 세션이 무효화됩니다.

     일정 시간이 경과한 후 세션이 자동으로 무효화됩니다.

     사용자가 로그인한 후 세션 I가 변경됩니다.

     무차별 암호 힘 공격을 방지하기 위해 최소 128비트 길이의 세션 ID

스프링, ASP.NET 코어, 레일장고와 같은 웹 프레임워크는 이러한 속성을 가지고 있으며 이 경우 더 높은 보안 표준에 사용해야 합니다.

결론: 처음부터 자체 세션 관리 시스템을 만들지 마십시오.

세션 ID가 만들어지면 보호해야 합니다. 보안 및 httpOnly 플래그를 'true'on 세션 쿠키로 설정합니다. 이렇게 하면 JavaScript로 값을 검색할 수 없으며 브라우저는 HTTPS를 통해서만 쿠키를 전송하여 공격자가 전송 중에 다른 사람의 세션을 훔치지 못하게 합니다.

세션 보안

무료 학습 리소스를 확인하여 안전한 세션 관리에 대해 자세히 알아보십시오. 세션을 보호하는 방법을 배우면 보안 위반으로 인해 사용자 계정 인수, 평판 손상 및 수익 손실을 방지하는 데 도움이 됩니다. 세션을 보호하고 사용자를 안전하게 보호합니다.

우리는 당신에게 우리의 제품 및 / 또는 관련 보안 코딩 주제에 대한 정보를 보낼 수있는 귀하의 허가를 바랍니다. 우리는 항상 최대한의주의를 기울여 귀하의 개인 정보를 취급 할 것이며 마케팅 목적으로 다른 회사에 판매하지 않을 것입니다.

전송
양식을 제출하려면 '분석' 쿠키를 활성화하세요. 완료되면 언제든지 다시 비활성화할 수 있습니다.