반응형
https://www.kisa.or.kr/public/laws/laws3.jsp
기술안내서 가이드 < 관련법령·기술안내서 < 자료실 : 한국인터넷진흥원
기술안내서 가이드 한국인터넷진흥원 기술안내서 가이드 입니다. 게시판 목록 보기 기술안내서 가이드 표 대분류 소분류 기술안내서 가이드 대상 수준 인터넷 진흥 및 이용 활성화 인터넷 진흥
www.kisa.or.kr
구현 단계 시큐어코딩 가이드 - 보안 기능 - 중요한 자원에 대한 잘못된 권한 설정
가. 개요
- SW가 중요한 보안 관련 자원에 대하여 읽기 또는 수정하기 권한을 의도하지 않게 허가할 경우, 권한을 갖지 않은 사용자가 해당 자원을 사용하게 된다.
나. 보안대책
- 설정파일, 실행파일, 라이브러리 등은 SW 관리자에 의해서만 읽고 쓰기가 가능하도록 설정하고 설정 파일과 같이 중요한 자원을 사용하는 경우, 허가받지 않은 사용자가 중요한 자원에 접근 가능 한지 검사한다.
다. 코드예제
JAVA
더보기
![](https://blog.kakaocdn.net/dn/bybPJf/btqFPrqTuUs/BMgsG5RoWKcxjhvRgYnD30/img.png)
![](https://blog.kakaocdn.net/dn/cOmoSB/btqFP9ws7mM/rqfxUvQAs6cIhNATfaWyt0/img.png)
![](https://blog.kakaocdn.net/dn/dMvekf/btqFQxcQE8E/qDuoOsrkoy5NL0ALGvKHzK/img.png)
"/home/setup/system.ini" 파일에 대해 모든 사용자가 읽고, 쓰고, 실행할 수 있도록 권한을 부여하고 있다.
- setExecutable(p1, p2) : 첫 번째 파라미터의 true/false 값에 따라 실행가능 여부를 결정한다. 두 번째 파라미터가 true 일 경우 소유자만 실행 권한을 가지며, false 일 경우 모든 사용자가 실행 권한을 가진다.
- setReadable(p1, p2) : 첫 번째 파라미터의 true/false 값에 따라 읽기가능 여부를 결정한다. 두 번째 파라미터가 true 일 경우 소유자만 읽기권한을 가지며, false 일 경우 모든 사용자가 읽기 권한을 가진다.
- setWritable(p1, p2) : 첫 번째 파라미터의 true/false 값에 따라 쓰기가능 여부를 결정한다. 두 번째 파라미터가 true 일 경우 소유자만 쓰기권한을 가지며, false 일 경우 모든 사용자가 쓰기 권한을 가진다.
![](https://blog.kakaocdn.net/dn/bybPJf/btqFPrqTuUs/BMgsG5RoWKcxjhvRgYnD30/img.png)
![](https://blog.kakaocdn.net/dn/cOmoSB/btqFP9ws7mM/rqfxUvQAs6cIhNATfaWyt0/img.png)
파일에 대해서는 최소 권한을 할당해야 한다. 즉 해당 파일의 소유자에게만 읽기 권한을 부여한다.
- setExecutable(p1) : 파라미터의 true/false 값에 따라 소유자의 실행권한 여부를 결정한다.
- setReadable(p1) : 파라미터의 true/false 값에 따라 소유자의 읽기권한 여부를 결정한다.
- setWritable(p1) : 파라미터의 true/false 값에 따라 소유자의 쓰기권한 여부를 결정한다
![](https://blog.kakaocdn.net/dn/dMvekf/btqFQxcQE8E/qDuoOsrkoy5NL0ALGvKHzK/img.png)
C#
더보기
![](https://blog.kakaocdn.net/dn/bOySSQ/btqFRAUhpfo/5ukZx9ZSw3hCqmnibrGA40/img.png)
![](https://blog.kakaocdn.net/dn/cujyCb/btqFQxDUW5f/IikjtyycOTHzM0G82Ey9xk/img.png)
![](https://blog.kakaocdn.net/dn/b65dgG/btqFQ8wVQLO/vomdkO4C0Bf10vG9SThzmK/img.png)
아래의 C# 코드는 모든 사용자에게 파일의 권한을 부여하고 있다.
![](https://blog.kakaocdn.net/dn/bOySSQ/btqFRAUhpfo/5ukZx9ZSw3hCqmnibrGA40/img.png)
![](https://blog.kakaocdn.net/dn/cujyCb/btqFQxDUW5f/IikjtyycOTHzM0G82Ey9xk/img.png)
적절한 권한을 파일에 설정해야 한다.
![](https://blog.kakaocdn.net/dn/b65dgG/btqFQ8wVQLO/vomdkO4C0Bf10vG9SThzmK/img.png)
C
더보기
![](https://blog.kakaocdn.net/dn/bAYgwQ/btqFQwSyHzY/wnqbLFpSTe7GK0dx3euPeK/img.png)
![](https://blog.kakaocdn.net/dn/lCYI0/btqFPthVA52/FxY2jYXYYOnJHJKrcfkwm0/img.png)
모든 사용자에게 권한을 부여하는 C 코드의 예제이다.
![](https://blog.kakaocdn.net/dn/bAYgwQ/btqFQwSyHzY/wnqbLFpSTe7GK0dx3euPeK/img.png)
umask()를 사용하여 권한 설정을 할 때, 올바른 권한을 설정해야 합니다.
![](https://blog.kakaocdn.net/dn/lCYI0/btqFPthVA52/FxY2jYXYYOnJHJKrcfkwm0/img.png)
참고자료
- CWE-732 Incorrect Permission Assignment for Critical Resource, MITRE,
http://cwe.mitre.org/data/definitions/732.html - Create files with appropriate access permissions, CERT,
http://www.securecoding.cert.org/confluence/display/c/FIO06-C.+Create+files+with+appropriate+access+permissions
반응형
'공부 > KISA' 카테고리의 다른 글
중요정보 평문저장 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.21 |
---|---|
취약한 암호화 알고리즘 사용 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
부적절한 인가 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
적절한 인증 없는 중요기능 허용 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
포맷 스트링 삽입 - KISA 소프트웨어 개발 보안 가이드 (0) | 2020.07.20 |
댓글