[시큐어코딩 가이드] 중요한 자원에 대한 잘못된 권한 설정

 

 

 

■ 보안기능

 

보안기능(인증, 접근제어, 기밀성, 암호화, 권한관리 등)을 부적절하게 구현 시 발생할 수 있는 보안약점으로 적절한 인증 없는 중요기능 허용, 부적절한 인가 등이 포함된다.

 

 

중요한 자원에 대한 잘못된 권한 설정(시큐어코딩 가이드)

 

■ 개요

 

응용프로그램이 중요한 보안관련 자원에 대하여 읽기 또는 수정하기 권한을 의도하지 않게 허가할 경우, 권한을 갖지 않은 사용자가 해당 자원을 사용하게 된다.

 

Python의 os.fchmod, os.chmod 등의 함수를 사용하여 파일 생성 및 읽기 모드에서 권한을 설정 할 수 있다.

 

 

■ 안전한 코딩 기법

 

설정파일, 실행파일, 라이브러리 등은 SW 관리자에 의해서만 읽고 쓰기가 가능하도록 설정하고 설정 파일과 같이 중요한 자원을 사용하는 경우, 허가 받지 않은 사용자가 중요한 자원에 접근 가능 한지 검사한다.

 

 

코드예제

 

다음 예제는 /root/system_config 파일에 대해서 모든 사용자가 읽기, 쓰기, 실행 권한을 가지게 된다.

 

안전하지 않은 코드의 예
def write_file():
#모든 사용자가 읽기, 쓰기, 실행 권한을 가지게 됨.
os.chmod('/root/system_config', 0o777)

with open("/root/system_config", 'w') as f:
f.write("your config is broken")

 

파일에 대해서는 최소권한을 할당해야 한다. 즉 해당 파일의 소유자에게만 읽기 권한만 부여하고 쓰기 권한이 필요한 경우에만 쓰기 권한을 부여한다.

 

안전한 코드의 예
def write_file():
#소유자 외에는 아무런 권한을 주지 않음.
os.chmod('/root/system_config', 0o700)

with open("/root/system_config", ‘'w') as f:
f.write("your config is broken")

 

 

댓글

Designed by JB FACTORY