불충분한 인증/인가 취약점
최근에 주통기반 취약점을 공부해야 할 필요성을 깨달았다.....
이 포스팅을 누군가는 본다면 자기가 아무리 알고 있더라도 말로 내뱉어보는 연습을 하셨으면 좋겠다!!라는 말을 남기고 싶습니다.. 화이팅!
불충분한 인증(IA) / 항목 중요도 : 상
주요정보통신기반시설 취약점 분석 평가 방법 가이드의 웹 13번째 항목에 나와있는 불충분한 인증 취약점이다.
내용을 보면 인증 절차가 불충분하다 라고 나와있는데 이해하기 쉽게 생각하면 그냥 인증이 잘못 혹은 강하지 않게 구현되었다 라고 생각하면 된다. 잘못된 인증 구현 방법 때문에 생기는 시나리오도 굉장히 많고 치명적인지라 신경써야 할 부분이 많다.
어찌보면 굉장히 기본적인거 아닌가?? 싶은 부분이 있을테지만 당연히 기본적인 보안을 지키지 않았을 때 피해가 훨씬 막대하다.
예시를 몇 가지 들어보자면..
- 인증 횟수 제한 없음
패스워드 같은 인증의 횟수에 제한을 두지 않으면 Brute force 공격에 매우 취약해진다. 적절한 횟수 제한을 걸어두어 막대한 시도를 통한 공격을 방어할 수 있다.
- 약한 패스워드 정책
패스워드 최소 길이, 영대소문자 사용, 특수문자 사용, 반복되는 문자 제한 등의 정책을 적절히 활용하지 않았다면 qwerty 등의 굉장히 취약한 비밀번호를 설정할 수 있게 되고 guessing 공격이나 brute force 공격 등으로 손쉽게 비밀번호 탈취가 가능해진다.
- 단일 인증
중요한 페이지에 패스워드만을 요구하는 경우 패스워드가 도난당한다면 공격자의 추가적인 공격으로 이어질 수 있다. 만약 멀티 팩터 인증으로 2개 이상의 인증을 요구한다면(Sth you have/Sth you are/Sth you know 중 2개 이상. 한 요소로 2개 이상의 인증을 적용한다해도 그것은 MFA가 아님) 패스워드가 탈취당하더라도 접근이 불가능하다.
불충분한 인가(IN) / 항목 중요도 : 상
주요정보통신기반시설 취약점 분석 평가 방법 가이드의 웹 17번째 항목에 나와있는 불충분한 인가 취약점이다.
사용자에게 부여된 권한을 제대로 검증하지 않아서 권한 없는 요소에 접근할 수 있는 취약점이다.
- 파라미터 변조
인증이 잘못 구현되었을 경우 파라미터 변조를 통해 다른 사용자의 계정에 접근하거나 다른 사람의 게시물 접근, 수정, 삭제 등이 가능하다.
위와 같은 사용자 정보수정 페이지가 있다고 가정하자. 위의 페이지는 id 파라미터를 사용하여 사용자를 지정하고 있다. 이를 이용하여 관리자 계정의 정보수정 페이지로 이동할 수 있다.
만약 비밀번호 변경 기능이 추가적인 인증을 요구하고 있지 않는다면 관리자 계정을 공격자 마음대로 변경한 후 접속할 수 있을 것이다.
위와 같은 GET 방식의 요청 파라미터를 변조하는것 외에도 POST 방식의 요청 파라미터를 변조할 수 있다.
POST 방식의 요청이기 때문에 URL 파라미터를 변조하는 방법으로는 관리자 계정 수정 페이지로 이동할 수 없다.
위와 같이 웹 프록시 툴을 이용하여 id 파라미터를 변조하여 관리자 계정의 수정 페이지로 이동할 수 있다.
또는 보호받는 게시글을 인가받지 않은 사용자가 접근하여 수정하거나 삭제할 수도 있다.
관리자가 게시한 TOP SECRET(?) 글은 잠겨서 일반 사용자가 접근할 수 없다.
공격자가 일반 게시글을 확인해봤을때 idx 파라미터로 게시글이 관리되고 있었다면 이를 이용해 관리자 게시글에 접근해볼 수도 있다.