Authentication
Authentication vulnerabilities
적어도 개념적인 측면에서 인증 취약점은 가장 이해하기 쉬운 이슈 중에 하나이지만, 동시에 보안과 인증의 명확한 관계성을 봤을 때, 가장 중요한 이슈에 속한다.
잠재적으로 공격자가 중요한 데이터 및 기능에 직접 접근하는 것을 허락할 뿐만 아니라
공격할만한 추가적인 측면을 노출시키게 된다.
이러한 이유로 일반적인 보호조치를 우회하는 걸 포함하는 인증 취약점을 이용하고
확인하는 방법을 배우는 것은 필수적인 기술이라 할 수 있다!!
what is authentication?
Authentication이란
user or client의 신원을 입증하는 과정으로, 그들이 주장하는 사람이 실제로 그들이라 보장할 수 있게 하는 것을 포함한다.
website는 설계상 인터넷으로 연결하고자 하는 누군가에게 노출되고,
견고한 인증 메커니즘은 효과적인 web 보안의 무한한 측면과 직결된다.
▶ 크게 3개의 타입으로 구분되는 factors
- Something you KNOW, "knowledge factor" = passwd or answer to a security question.
- Something you HAVE, "possession factors" = mobile phone or security token
- Something you BE, "inherence factors" = biometrics or patterns of behavior
인증 메커니즘은 이러한 factor를 한 개 또는 그 이상으로 확인(입증)하는 기술력에 의존하게 된다.
what is the difference between authentication and authorization??
Authentication은 user가 자신이라 주장하는 사람이 맞는지 확인하는 과정이고,
Authorization은 무언가를 할 수 있게 허락된 user인지 아닌지를 확인하는 것을 포함한다.
다시 말해,
그가 자신이라 주장하는 신원이 맞는지를 확인하는 것이 Authentication
그가 무엇을 할 수 있는지, 어느 수준까지 접근권한을 가지는지를 확인하는 것이 Authorization
▶ website or web application에서, 인증은 그 계정을 만든 사람과 username Carlos123으로 그 사이트에 접근하려고
시도한 사람이 같은 인물인지 아닌 지를 확인한다.
한 번 Carlos123이 인증을 받으면, 다른 user의 개인정보에 접근한다거나, 다른 user의 계정을 삭제하는 행위를 수행하는 등의 권한을 받았는지 아닌지를 확인한다. 이 과정을 Authorization이라고 하는 것!
따라서, Authorization은 Authentication + 어떠한 행위에 대한 권한 수준을 확인하는 것이다!
▶ 일반 사용자와 관리자를 두고 봤을 때,
이 둘은 같은 application을 사용하더라도 일반 사용자에게 다른 계정에 대한 통제권이나 관리할 수 있는 권한을 주지는
않는 것처럼 역할이 다르기 때문에 주어지는 접근권한 수준이 다르다. 그렇기에 각 사용자에 대한 권한 수준을 확인하는 것
how do authentication vulnerabilities arise??
대략적으로 말하자면, 인증 메커니즘에서 대부분의 취약점은 다음의 둘 중 하나에 의해 발생한다.
brute-force 공격에 대해 적절히 보호하는 것에 실패하기 때문에 인증 메커니즘이 약해진다.
실행에 있어 논리적 결함 및 잘못된 코드는 인증 메커니즘이 우회될 수 있도록 허락한다.
이 때문에 때떄로 "broken authentication"이라 불리기도 한다.
web 개발의 많은 측면에서, 논리 결함은 단순히 web site가 예기치 못하게 행동하도록 만들며 이는 보안 문제가 될 수도 있고,
아닐 수도 있다. 하지만, 인증은 보안에 굉장히 중요한 요소로서 결함이 있는 인증 논리가 그 web site의 보안 이슈를 노출시킬
가능성은 분명히 높아지게 될 것!
what is the impact of vulnerable authentication??
인증 취약점의 영향은 꽤나 심각할 수 있다. 공격자가 인증을 우회하거나 brute-forced 방식으로 다른 계정에 침입하면,
공격자들은 취득한 계정이 가지는 모든 데이터와 기능에 접근할 수 있게 된다.
▶ 시스템 관리자 같은 높은 권한의 계정을 취득할 수 있다면,
그들은 application의 완전한 제어권을 가져올 수 있고 잠재적으로 내부 인프라에 접근할 수 있는 권한을 얻게 된다.
▶ 권한이 낮은 계정을 손상시키더라고 공격자는 가져서는 안 되는 데이터에 대한 접근 권한을 부여할 수 있고,
상업적으로 민감한 사업 정보와 같이 손상된 계정이 가지고 있는 모든 데이터와 기능에 접근할 수도 있다.
▶ 만약 계정이 어떤 민감한 정보에 직접적으로 접근할 수 없더라도,
공격할만한 측면을 제공하는 추가적인 페이지에 대한 접근을 가능하게 할지도 모르는 일이다.
▶ 공개적으로 접근할 수 있는 페이지에서 certain high-severity attacks은 불가능하지만,
내부 페이지에서는 가능할 수도 있다!!