Computer Science/Software Enginnering & Security 23

[소프트웨어 보안] 퀴즈: Dirty COW 경쟁 조건 공격

1. Dirty COW(Copy-On-Write) 취약점에 대한 설명으로 옳은 것은?(1) 쓰기 작업이 발생하면 즉시 메모리 복사본이 생성되며 보호된다.(2) MAP_SHARED로 메모리 매핑 시 개인 복사본이 생성되어야 한다.(3) COW는 A, B, C 단계가 atomic하게 수행되므로 race condition이 없다.(4) madvise() 호출로 페이지 테이블이 원래 매핑된 메모리를 다시 가리킬 수 있다. 더보기정답: (4) madvise() 호출로 페이지 테이블이 원래 매핑된 메모리를 다시 가리킬 수 있다.해설:(1) X 쓰기 작업 시 즉시 복사본이 생성되지 않음. 쓰기 요청이 있을 때만 복사본을 만들며, 이때 race condition이 발생할 수 있음.(2) X MAP_SHARED는 메모리..

[소프트웨어 보안] 9주차: 퀴즈zz

Q1. 다음 중 TOCTTOU(Time-Of-Check To Time-Of-Use) 공격을 성공시키기 위한 공격자의 전략으로 옳은 것은?1. 파일을 열기 전에 파일의 inode 번호를 변경한다.2. 취약한 프로그램이 파일을 열기 전에 심볼릭 링크를 빠르게 바꾼다.3. 파일에 대한 읽기 권한을 root에서 일반 사용자로 바꾼다.4. setuid() 시스템 호출을 사용하여 파일을 복호화한다. 더보기정답: 2→ TOCTTOU 공격은 check()와 use() 사이에 링크 등을 바꾸는 타이밍 공격임. Q2. O/X 퀴즈 (1) Set-UID 프로그램에서 access()와 open() 사이에 심볼릭 링크가 변경되더라도, open()은 항상 안전하게 보호된 파일만 연다.(2) 경쟁 조건(Race Condition)..

[소프트웨어 보안] 8주차: 버퍼 오버플로우 퀴즈

1. 다음 중 StackGuard에 대한 설명으로 옳은 것은?(1) Stack 영역을 실행 불가능하게 만드는 하드웨어 기능이다.(2) 스택에 삽입된 canary 값을 함수 종료 시 검사하여 스택 변조 여부를 판단한다.(3) getuid()를 0으로 설정하여 setuid 우회를 수행하는 기법이다.(4) 셸코드 내에서 /bin/sh 경로를 문자열로 제공하지 않아도 된다. 더보기정답: (2) 스택에 삽입된 canary 값을 함수 종료 시 검사하여 스택 변조 여부를 판단한다. 관련 내용:StackGuard는 스택 기반 버퍼 오버플로우를 방지하기 위한 컴파일러 기반 보안 기법이다.함수 시작 시, 리턴 주소와 버퍼 사이에 canary(카나리)라 불리는 임의의 값을 삽입한다.함수 종료 시, 이 값이 변경되었는지를 검..

[소프트웨어 보안] 7주차 퀴즈

Q1.LD_PRELOAD 환경 변수와 관련하여 옳지 않은 설명은?1) 실행 시 우선적으로 지정된 공유 라이브러리를 로드하도록 링커에 지시한다.2) Set-UID 프로그램의 경우 LD_PRELOAD는 항상 적용된다.3) 공격자가 만든 가짜 라이브러리를 로드시킬 수 있다.4) libc의 기본 함수(sleep 등)를 우회하거나 대체할 수 있다. 더보기정답: (2)해설:(1) 맞는 설명. LD_PRELOAD는 링커가 가장 먼저 로드할 공유 라이브러리를 지정하는 데 사용됨.(2) B: 틀림. Set-UID 프로그램에서는 RUID와 EUID가 다르면 LD_PRELOAD는 보안상 무시됨. 이는 환경 변수 기반 공격을 방지하기 위한 리눅스의 보안 정책임.(3) C: 맞음. 공격자가 만든 라이브러리를 LD_PRELOAD..

[소프트웨어 보안] 6주차 퀴즈

Q1. 다음 그림은 umask 값을 적용해 최종 파일 권한을 결정하는 과정을 보여준다.1, 2, 3에 들어갈 알맞은 값을 각각 8진수/2진수/2진수 형식으로 쓰시오. 더보기항목 내용① 0022 (umask 값 8진수)② 000 010 010 (umask의 이진수 표현)③ 110 100 100 (최종 권한의 이진수)→ 이진수 110 100 100은 8진수로 0644, 즉 rw- r-- r--임. Q2. 일반 사용자가 Set-UID로 설정된 루트 소유 프로그램을 실행했을 때, 아래 중 올바르게 설명된 것은 무엇인가? (1) RUID는 root가 되고 EUID는 사용자의 ID가 된다.(2) RUID와 EUID 모두 사용자의 ID로 유지된다.(3) RUID는 사용자의 ID, EUID는 프로그램 소유자의 ..