권한 있는 프로그램의 필요성
Linux 환경
- /etc/shadow에 password를 저장
- 사용자가 자신의 비밀번호를 수정하고자 할 때 해당 파일 사용
- Only Writable to the owner, Owner만 사용 가능!
- 파일의 정보를 보려면 root로 접근하거나 sudo를 사용
일반 사용자가 패스워드 파일을 볼 수 있게 하는 방법
- 패스워드의 변경을 위해서 shadow 파일에 대한 변경 필요
- 일반 사용자는 shadow 파일을 변경하지 못한다. (root만 변경 가능)
- 운영체제가 세밀한 접근통제를 수행하도록 하는 방법
1) 현재는 파일 단위로 접근 통제를 수행
2) 파일 내의 특정 영역까지 접근 통제 규칙을 적용 (현재 불가능)
Set-UID 메커니즘
shadow 파일의 구성
username : password : last password change : minimum : maximum : warn : inactive : expire
Daemon을 통한 통제

- Daemon은 프로그램 백그라운드에서 항상 실행, 통상적을 시스템이 구동되면서 실행된다.
- Daemon이 root 권한을 갖는 소프트웨어에 일을 요청하고, 프로그램을 특정한 데몬 프로그램에 맡겨서 권한을 통제할 수 있게 한다.
Set-UID 프로그램을 통한 통제

- Daemon을 통한 통제보다 좀 더 정교
- 프로그램에 실질적인 ID(effective uid)를 지정하여 //chown root
- 이를 통해 실행 시 권한을 부여 //chmod 4775
- Specially marked Unix program이 파일을 업데이트 할 수 있게 한다.
(* Specially marked: 소유주를 root로 하고 권한을 4775로 해 주는 행위)
UNIX 파일의 User ID
- Real user ID: 프로세스의 실 소유주를 명시, 프로세스를 실행하는 사용자 / 프로그램을 실행한 사용자
- Effective user ID: 접근 통제를 위해 사용하는 ID로서 프로세스가 가지고 있는 권한(privilege)을 명시해 준다. / 프로그램의 소유주 (owner)
- Saved user ID: 권한의 부여 및 제거를 돕기 위해 활용
Set-UID 프로그램의 공격 표면(Attack Surfaces)
Set-UID 프로그램의 공격의 지점

1) User input, 즉 사용자 입력이자 외부 입력
2) 사용자가 제어 가능한 System input -> 파일 형태로 존재
3) 환경 변수
4) 사용자에 의해 제어 가능한 일반 사용자 프로그램(프로세스) -> Capability leaking
capability leaking
목적: Set-UID 프로그램이 권한을 이용하여 얻은 자원이 유출될 때 어떤 문제점을 가질수 있는 지 확인하기 위함
system vs execve
- system 함수는 shell 프로그램에게 명령어의 실행을 요청
1) system("명령어"); -> /bin/sh - 명령어 -> 명령어를 실행
2) system("명령어1; 명령어2")' -> /bin/sh -c 명령어1; 명령어2 -> 명령어 1 실행 후, 명령어 2 실행
3) system("cat aa;/bin/sh"); -> /bin/sh -c cat aa;/bin/sh -> cat aa 실행 후 /bin/sh 실행
- execve 함수는 운영체제에게 직접 명령어의 실행을 요청
1) execve("명령어1", "입력파라미터", "환경변수"); -> execve("/etc/cat"aa;/bin/sh", 0};
/etc/cat aa;/bin/sh -> 해당 파일을 찾을 수 없게 한다.
'Study > Software Security' 카테고리의 다른 글
[소프트웨어보안] 스택 Overflow에 대한 대응, 안전한 프로그램 개발 (0) | 2022.11.30 |
---|---|
[소프트웨어보안] Buffer Overflow Attack (0) | 2022.11.23 |
[소프트웨어보안] Stack buffer overflow 이론 (0) | 2022.11.06 |
[소프트웨어보안] 컴퓨터의 구조 및 소프트웨어 실행 원리, C언어와 어셈블리어의 이해 (0) | 2022.10.19 |
[소프트웨어보안] 소프트웨어의 정적 분석 방법 (0) | 2022.10.12 |