본문 바로가기

보안/시큐어코딩

[시큐어코딩-16] 보안기능(2) 부적절한 인가

 

발생원인


프로그램이 모든 가능한 실행경로에 대해서 접근제어를 검사하지 않거나 불완전하게 검사하는 경우에 발생한다.

 

영향


권한 없는 접근, 정보 유출

 

코드예



 안전하기 않은 코드의 예 - JAVA

 

public void f(String sSingleId, int iFlag, String sServiceProvider, String sUid, String sPwd) {

  env.put(Context.INITIAL_CONTEXT_FACTORY, CommonMySingleConst.INITCTX);

  env.put(Context.PROVIDER_URL, sServiceProvider);

  env.put(Context.SECURITY_AUTHENTICATION,"none");

  env.put(Context.SECURITY_PRINCIPAL, sUid);

  env.put(Context.SECURITY_CREDENTIALS, sPwd);

  ...

}

 

 

(env.put(Context.SECURITY_AUTHENTICATION, "none");). 이는 anonymous binding을 허용하는 것으로 볼 수 있다. 따라서 임의 사용자의 정보를 외부에서 접근할 수 있게 된다.



 안전한 코드의 예 - JAVA

 

public void f(String sSingleId, int iFlag, String sServiceProvider, String sUid, String sPwd) {

  env.put(Context.PROVIDER_URL, sServiceProvider);

  env.put(Context.SECURITY_AUTHENTICATION, "simple");

  env.put(Context.SECURITY_PRINCIPAL, sUid);

  env.put(Context.SECURITY_CREDENTIALS, sPwd);

   ...

}

 

 

사용자 ID와 password를 컨텍스트에 설정한 후 접근하도록 접근제어를 사용하는 것이 안전하다.

 

 


ACL이란?

개개의 사용자들이 디렉토리나 파일과 같은 특정 시스템 개체에 접근할 수 있는 권한을 정의 하고 있는 리스트이다.

각 개체는 접근제어 목록을 식별할 수 있는 보안 속성을 가지며, 그 목록은 접근권한을 가진 각 시스템 사용자들을 위한 엔트리를 가진다.

ACL을 사용하는 대표적인 운영체제로는 윈도우NT, 노벨 Netware, 디지털의 OpenVMS, 유닉스 기반 시스템들이다.

 

ACL은 다음3가지로 구성된다.

1. Target: 권한을 관리할 object, object attribute or group of objects and attribute

2. Permission: allow 또는 deny에 대한 권한 명시

                     read, write, add, delete, search, compare, selfwrite, proxy, all

3. Bind Rules: 디렉토리를 사용할 수 있는 사용자에 대해 조건과 함께 명시한다.

                     ex) userA는 특정 그룹에 포함되어야 하며, 특정 IP Address를 갖는 PC에서 login해야 한다.

 

<Target>(<permission><bind rule>)(<permission><bind rule>) . . .

 

 

LDAP이란?

Lightweight Directory Access Protocol 의 약어이다.

디렉토리란 특별한 형태의 데이터베이스라고 할 수 있다. 쓰기보다는 읽기 작업이 더 많을 뿐 아니라 어떤 것을 찾는 작업이 많은 곳에 더 적합한 서비스라고 할 수 있다.

CCITT(International Telegraph and Telephone Consultative Commitee, 현재의 ITU이다)에 의해 X.500 표준 발표.

X.500은 최초의 일반적인 목적의 디렉토리 시스템이었고, 다양한 쿼리를 사용하는 강력한 검색기능을 제공할 뿐 아니라 서버와 데이터의 분산이 용이하고, 특정 운영체제나 특정네트워크, 특정 응용 프로그램에 구애 받지 않고 사용될 수 있는 표준이다.

 

ldap.pdf