발생원인
프로그램이 모든 가능한 실행경로에 대해서 접근제어를 검사하지 않거나 불완전하게 검사하는 경우에 발생한다.
영향
권한 없는 접근, 정보 유출
코드예
안전하기 않은 코드의 예 - 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은 최초의 일반적인 목적의 디렉토리 시스템이었고, 다양한 쿼리를 사용하는 강력한 검색기능을 제공할 뿐 아니라 서버와 데이터의 분산이 용이하고, 특정 운영체제나 특정네트워크, 특정 응용 프로그램에 구애 받지 않고 사용될 수 있는 표준이다.
'보안 > 시큐어코딩' 카테고리의 다른 글
[시큐어코딩-18] 보안기능(4) 취약한 암호화 알고리즘 사용 (0) | 2012.10.28 |
---|---|
[시큐어코딩-17] 보안기능(3) 중요한 자원에 대한 잘못된 권한 설정 (0) | 2012.10.28 |
[시큐어코딩-15] 보안기능(1) 적절한 인증없는 중요기능 허용 (0) | 2012.10.28 |
[시큐어코딩-14] 입력데이터 검증및 표현(14) 보호매커니즘을 우회할 수 있는 입력값변조 (0) | 2012.10.28 |
[시큐어코딩-13] 입력데이터 검증및 표현(13) 정수오버플로우 (0) | 2012.10.28 |