코더는 보안을 정복 : 공유 및 학습 시리즈 - 깨진 액세스 제어

게시일: 2019년 5월 9일
by Jaap Karan Singh
사례 연구

코더는 보안을 정복 : 공유 및 학습 시리즈 - 깨진 액세스 제어

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

비즈니스 응용 프로그램을 빌드할 때 고객의 내부 사용이든 외부사용이든 모든 사용자가 모든 단일 기능을 수행하지 못하게 할 수 있습니다. 이렇게 하면 액세스 제어가 끊어질 수 있습니다.

액세스 제어가 깨진 것, 왜 그렇게 위험한지, 그리고 이를 해결하는 방법을 살펴보겠습니다.

깨진 액세스 제어 이해

응용 프로그램 코드에 적절한 보안 또는 액세스 검사가 없는 경우 액세스 제어가 끊어지면 발생합니다. 또한 응용 프로그램이 어떤 식으로든 잘못 구성되어 사용자가 액세스하지 않아야 하는 함수 또는 페이지에 액세스할 수 있는 경우에도 발생할 수 있습니다.

회사의 재정을 처리하는 경우 특정 계좌에 돈을 입금하거나 회사의 계좌 간에 송금할 수 있습니다. 그러나 해당 계정에서 현금을 인출하거나 다른 계좌로 송금할 수 없습니다. 적절한 액세스 검사가 없는 경우 직원이 필요 이상으로 더 많은 기능을 수행할 수 있습니다.

이러한 검사는 코드 내에서 또는 구성 파일에서 수행할 수 있습니다. 예를 들어 웹 응용 프로그램 프레임워크에 사용자가 어떤 페이지에 액세스할 수 있는지 알려주는 XML 구성 파일이 있을 수 있습니다. 이렇게 하면 사용자가 사용할 권한이 있는 함수에만 액세스할 수 있습니다.

깨진 액세스 제어가 위험한 이유

이 예제를 고려: 공격자가 사용자 계정 생성 코드를 조작할 수 있다는 것을 깨달았기 때문에 공격자가 간단한 게시물 요청으로 관리자 사용자를 만들 수 있습니다. 사용자 이름과 암호로 요청을 보낸 다음 URL에 관리자 역할을 매개 변수로 또는 요청 본문에 포함하도록 요청을 변경할 수 있습니다. 공격자는 응용 프로그램에 로그인하고 즉시 관리자 권한이 부여됩니다.

항상 시스템을 관통하는 악의적인 공격자가 될 필요는 없습니다. 적절한 액세스 제어가 없으면 부서 간에 공유해서는 안 되는 중요한 정보가 유출될 수 있습니다. 회사의 직원이 HR 급여 데이터 또는 재무 데이터를 볼 수 있다고 가정해 보십시오. 회사의 열악한 재정 상황으로 인해 해고가 오는 것을 볼 수 있다면 어떻게 될까요? 이것은 당신의 사기와 회사의 명성에 손상을 줄 수 있습니다.

고객의 민감한 정보도 손실될 수 있습니다. 회사는 종종 서비스를 사용하는 고객의 개인 정보를 저장합니다. 액세스 제어가 부족하여 실수로 노출하지 않도록 주의하십시오. 예를 들어, 시스템이 사용자에게 자신의 상태 기록을 요청할 수 있는 기능을 제공하는 경우 다른 사람의 건강 정보를 요청하고 볼 수 있습니까? URL에 고객 ID 번호가 포함된 경우 공격자는 다른 고객과 일치하는 ID를 찾을 때까지 고객 ID 번호를 반복해서 증분하여 개인 데이터를 공개할 수 있습니다.

깨진 액세스 제어 패배

역할 기반 액세스 제어(RBAC)는 사운드 액세스 제어를 구현하는 데 매우 효과적인 도구입니다. Active Directory를 사용하는 사람들은 그룹을 만들고 개인대신 그룹 전체의 특정 항목에 대한 액세스 권한을 부여하는 아이디어에 익숙할 수 있습니다. 응용 프로그램은 역할을 사용하여 누가 무엇을 볼 수 있는지 정의하는 것과 동일한 방식으로 작동합니다.

이것은 두 가지 장점이 있습니다. 첫째, 누군가가 관리자 역할을 떠날 때 함수를 변경할 필요가 없습니다. 이전에 관리자였던 사람이더 이상 없어야 하는 경우 새 사람을 관리자 역할에 배치하고 이전 사람을 역할에서 제거하기만 하면 됩니다. 코드는 각 개별 사용자가 특정 페이지 또는 기능에 액세스할 수 있는지 확인하는 대신 사용자가 관리자 역할이 있는지 확인합니다.

두 번째 이점은 유지 보수 악몽을 피하는 것입니다. 모든 사람이 가능한 모든 함수 또는 페이지와 연관이 있을 정도로 세분화된 액세스 제어는 시간이 지남에 따라 관리할 수 없습니다. 역할은 여러 사람을 역할에 추가할 수 있기 때문에 훨씬 쉽게 만듭니다. 한 가지 역할은 회사 전체를 포함할 수 있으며 다른 역할은 5명만 있을 수 있습니다. 이렇게 하면 관리할 역할이 줄어들기 때문에 역할 관리가 더욱 효율적입니다. 10,000명의 기업이 응용 프로그램의 함수 수의 10,000배 대신 100개의 역할만 가질 수 있습니다. 선택한 응용 프로그램 프레임워크를 조사하여 강력한 액세스 제어를 위해 어떤 옵션이 있는지 확인합니다.

기능 수준 액세스 제어를 사용하는 것도 중요합니다. 사용자가 특정 액세스 제어 검사를 통과하도록 요구하여 모든 기능에 대한 액세스를 보호합니다. 최소한 권한 원칙을 사용하여 기본적으로 액세스를 거부하고 필요에 따라 액세스를 열수 있습니다. 각 함수에 대한 액세스 제어를 구현하는 것을 기억하기 어려울 수 있습니다. 중앙 구성 요소를 사용하여 액세스 제어를 관리하고 적용합니다.

민감한 기능 보호

액세스 제어가 끊어지고 공격 및 악용을 위해 데이터와 응용 프로그램을 활짝 열어 둘 수 있습니다. 제대로 보호되지 않는 고객 데이터는 대규모 데이터 유출로 이어질 수 있으며 평판과 수익을 저하시킬 수 있습니다.

액세스 권한이 손상되면 공격자가 액세스하지 않아야 하는 기능에 액세스할 수 있는 경우에도 계정 인계가 발생할 수 있습니다. 적절한 기능 수준 액세스 제어를 사용하면 악의적인 공격자, 심지어 우발적인 내부자로부터 응용 프로그램을 안전하게 보호합니다.

기능 수준 액세스가 모두 끝났다고 생각하십니까? 지금 깨진 액세스 제어를 복구하도록 자신에게 도전할 수 있습니다: [여기에서 시작]

리소스 보기
리소스 보기

저자

야프 카란 싱

더 알고 싶으신가요?

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

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

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

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

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

리소스 허브

코더는 보안을 정복 : 공유 및 학습 시리즈 - 깨진 액세스 제어

게시일: 2019년 5월 9일
Jaap Karan Singh

비즈니스 응용 프로그램을 빌드할 때 고객의 내부 사용이든 외부사용이든 모든 사용자가 모든 단일 기능을 수행하지 못하게 할 수 있습니다. 이렇게 하면 액세스 제어가 끊어질 수 있습니다.

액세스 제어가 깨진 것, 왜 그렇게 위험한지, 그리고 이를 해결하는 방법을 살펴보겠습니다.

깨진 액세스 제어 이해

응용 프로그램 코드에 적절한 보안 또는 액세스 검사가 없는 경우 액세스 제어가 끊어지면 발생합니다. 또한 응용 프로그램이 어떤 식으로든 잘못 구성되어 사용자가 액세스하지 않아야 하는 함수 또는 페이지에 액세스할 수 있는 경우에도 발생할 수 있습니다.

회사의 재정을 처리하는 경우 특정 계좌에 돈을 입금하거나 회사의 계좌 간에 송금할 수 있습니다. 그러나 해당 계정에서 현금을 인출하거나 다른 계좌로 송금할 수 없습니다. 적절한 액세스 검사가 없는 경우 직원이 필요 이상으로 더 많은 기능을 수행할 수 있습니다.

이러한 검사는 코드 내에서 또는 구성 파일에서 수행할 수 있습니다. 예를 들어 웹 응용 프로그램 프레임워크에 사용자가 어떤 페이지에 액세스할 수 있는지 알려주는 XML 구성 파일이 있을 수 있습니다. 이렇게 하면 사용자가 사용할 권한이 있는 함수에만 액세스할 수 있습니다.

깨진 액세스 제어가 위험한 이유

이 예제를 고려: 공격자가 사용자 계정 생성 코드를 조작할 수 있다는 것을 깨달았기 때문에 공격자가 간단한 게시물 요청으로 관리자 사용자를 만들 수 있습니다. 사용자 이름과 암호로 요청을 보낸 다음 URL에 관리자 역할을 매개 변수로 또는 요청 본문에 포함하도록 요청을 변경할 수 있습니다. 공격자는 응용 프로그램에 로그인하고 즉시 관리자 권한이 부여됩니다.

항상 시스템을 관통하는 악의적인 공격자가 될 필요는 없습니다. 적절한 액세스 제어가 없으면 부서 간에 공유해서는 안 되는 중요한 정보가 유출될 수 있습니다. 회사의 직원이 HR 급여 데이터 또는 재무 데이터를 볼 수 있다고 가정해 보십시오. 회사의 열악한 재정 상황으로 인해 해고가 오는 것을 볼 수 있다면 어떻게 될까요? 이것은 당신의 사기와 회사의 명성에 손상을 줄 수 있습니다.

고객의 민감한 정보도 손실될 수 있습니다. 회사는 종종 서비스를 사용하는 고객의 개인 정보를 저장합니다. 액세스 제어가 부족하여 실수로 노출하지 않도록 주의하십시오. 예를 들어, 시스템이 사용자에게 자신의 상태 기록을 요청할 수 있는 기능을 제공하는 경우 다른 사람의 건강 정보를 요청하고 볼 수 있습니까? URL에 고객 ID 번호가 포함된 경우 공격자는 다른 고객과 일치하는 ID를 찾을 때까지 고객 ID 번호를 반복해서 증분하여 개인 데이터를 공개할 수 있습니다.

깨진 액세스 제어 패배

역할 기반 액세스 제어(RBAC)는 사운드 액세스 제어를 구현하는 데 매우 효과적인 도구입니다. Active Directory를 사용하는 사람들은 그룹을 만들고 개인대신 그룹 전체의 특정 항목에 대한 액세스 권한을 부여하는 아이디어에 익숙할 수 있습니다. 응용 프로그램은 역할을 사용하여 누가 무엇을 볼 수 있는지 정의하는 것과 동일한 방식으로 작동합니다.

이것은 두 가지 장점이 있습니다. 첫째, 누군가가 관리자 역할을 떠날 때 함수를 변경할 필요가 없습니다. 이전에 관리자였던 사람이더 이상 없어야 하는 경우 새 사람을 관리자 역할에 배치하고 이전 사람을 역할에서 제거하기만 하면 됩니다. 코드는 각 개별 사용자가 특정 페이지 또는 기능에 액세스할 수 있는지 확인하는 대신 사용자가 관리자 역할이 있는지 확인합니다.

두 번째 이점은 유지 보수 악몽을 피하는 것입니다. 모든 사람이 가능한 모든 함수 또는 페이지와 연관이 있을 정도로 세분화된 액세스 제어는 시간이 지남에 따라 관리할 수 없습니다. 역할은 여러 사람을 역할에 추가할 수 있기 때문에 훨씬 쉽게 만듭니다. 한 가지 역할은 회사 전체를 포함할 수 있으며 다른 역할은 5명만 있을 수 있습니다. 이렇게 하면 관리할 역할이 줄어들기 때문에 역할 관리가 더욱 효율적입니다. 10,000명의 기업이 응용 프로그램의 함수 수의 10,000배 대신 100개의 역할만 가질 수 있습니다. 선택한 응용 프로그램 프레임워크를 조사하여 강력한 액세스 제어를 위해 어떤 옵션이 있는지 확인합니다.

기능 수준 액세스 제어를 사용하는 것도 중요합니다. 사용자가 특정 액세스 제어 검사를 통과하도록 요구하여 모든 기능에 대한 액세스를 보호합니다. 최소한 권한 원칙을 사용하여 기본적으로 액세스를 거부하고 필요에 따라 액세스를 열수 있습니다. 각 함수에 대한 액세스 제어를 구현하는 것을 기억하기 어려울 수 있습니다. 중앙 구성 요소를 사용하여 액세스 제어를 관리하고 적용합니다.

민감한 기능 보호

액세스 제어가 끊어지고 공격 및 악용을 위해 데이터와 응용 프로그램을 활짝 열어 둘 수 있습니다. 제대로 보호되지 않는 고객 데이터는 대규모 데이터 유출로 이어질 수 있으며 평판과 수익을 저하시킬 수 있습니다.

액세스 권한이 손상되면 공격자가 액세스하지 않아야 하는 기능에 액세스할 수 있는 경우에도 계정 인계가 발생할 수 있습니다. 적절한 기능 수준 액세스 제어를 사용하면 악의적인 공격자, 심지어 우발적인 내부자로부터 응용 프로그램을 안전하게 보호합니다.

기능 수준 액세스가 모두 끝났다고 생각하십니까? 지금 깨진 액세스 제어를 복구하도록 자신에게 도전할 수 있습니다: [여기에서 시작]

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

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