Set-UID Programs
Privileged Programs - 높은 권한 기반 프로그램
1. Set-UID Programs
- euid를 기반으로 접근통제를 진행하도록 만든 프로그램
2. Server Programs
- 낮은 번호의 소켓을 생성
- 24x7 실행되어야 함
3. Device Drivers
- 물리적 장치에 접근하기 위한 소프트웨어
- 장치 접근을 위한 권한 필요
4. System Daemons
- 백그라운드에서 실행되면서 시스템의 운영을 지원
- 부모 프로세스가 없는 프로세스
Needs for Privileged Programs - 권한 필요 사례
Password Dilemma
사용자가 password를 변경하도록 허용하는 방법
- 높은 권한을 가져야 수정할 수 있는 파일
- 낮은 권한을 갖는 사용자가 실행하는 프로그램
Set-UID Programs
passwd program
passwd program을 Set-UID root program으로 바꾸는 방법
% sudo chown root myprog
% sudo chmod 4755 myprog
Program Memory Layout
Function Stack Layout
void f(int a, int b)
{
int x,y ;
}
void f(int a, int b)
{
int x;
}
void main()
{
f(1,2);
printf("hello world");
}
Buffer-overflow vulnerability
Vulnerable Program (stack.c)
int main(int argc, char **argv)
{
char str[517];
FILE *badfile;
// 1. Opens badfile
badfile = fopen("badfile", "r");
// 2. Reads upto 517 bytes from badfile
fread(str, sizeof(char), 517, badfile);
// 3. Call the vulnerable function
bof(str);
printf("Returned Properly\n");
return 1;
}
Buffer overflow Attack on stack.c
int bof(char *str)
{
char buffer[24];
// 4. Copy argument into buffer
// (Possible Buffer Overflow)
strcpy(buffer, str);
return 1;
}
Three Challenges
Task Breakdown - Prepare "badfile"
'Study > Software Security' 카테고리의 다른 글
[소프트웨어보안] 프로그래밍 관점에서의 소프트웨어 보안 (0) | 2022.12.06 |
---|---|
[소프트웨어보안] 스택 Overflow에 대한 대응, 안전한 프로그램 개발 (0) | 2022.11.30 |
[소프트웨어보안] Set-UID 권한 프로그램과 공격 기법 (0) | 2022.11.16 |
[소프트웨어보안] Stack buffer overflow 이론 (0) | 2022.11.06 |
[소프트웨어보안] 컴퓨터의 구조 및 소프트웨어 실행 원리, C언어와 어셈블리어의 이해 (0) | 2022.10.19 |