일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 게임개발
- Unreal Engine
- 유스케이스
- linear difference equation
- frequency-domain spectrum analysis
- 운영체제
- reverse gravity
- dirty cow
- 유니티
- ret2libc
- 게임 개발
- gameplay effect
- pdlc
- 언리얼 엔진
- Security
- sampling theory
- 언리얼엔진
- DSP
- dtft
- CTF
- Race condition
- DP
- MLFQ
- 메카님
- gameplay ability
- MAC
- stride
- Rr
- ability task
- gas
- Today
- Total
목록운영체제보안 (32)
다양한 기록
Linux, GOT overwriteELF파일의 다이나믹 링킹과 관련이 있는 내용이다. ELF는 리눅스에서 사용되는 파일 포맷이다. 이 ELF 파일에 .dynamic 섹션이 존재하는데, 여기서 다이나믹 링킹 관련 정보를 관리한다. 다이나믹 링킹 관점에서 보면, 보통 컴퓨터 과학에서 다이나믹(동적)이라는 단어가 나오면, 스태틱(정적)이라는 단어도 같이 나온다. 그리고 스태틱은 런타임 이전에 발생하는 일들에 대해 이야기할 때 쓰고, 다이나믹은 런타임에 발생하는 일들에 대하여 사용한다. 그리고 링킹의 경우는 여러 파일에 나눠진 코드를 하나의 실행 가능한 오브젝트 파일로 합치는 과정을 의미한다. 스태틱 링킹의 경우 실행 가능한 오브젝트 파일을 만드는 경우에, 사용하게 되는 라이브러리 함수들을 그냥 복사해서 가지..
Access Control어떤 주체가 특정한 Access Operation으로 어떤 객체에 접근할 수 있는지를 제어하는 것=> 자원의 무단 사용을 방지 RFC 2828의 컴퓨터 시큐리티 정의컴퓨터 시스템에서 보안 서비스를 구현하고 보장하는 조치,특히 접근 제어 서비스를 보장하는 조치 Authentication vs. Authorization인증: 진짜 그 개체가 맞는가?인가: 접근할 자격이 있는가? Identification & Authorization- Identification: username, uid, gid- Authentication: password, fingerprint, iris, face, voice, gesture Access Control: 장소 또는 기타 자원에 대한 선택적 접근 ..
1. SELinux나 AppArmor 정책 강제- 우분투에서 미는 건 앱아머, 레드햇 계열에서 미는 건 SE리눅스 2. sysctl 로 튜닝해서 커널 구성 강화sudo sysctl -w kernel.randomize_va_space=2sudo sysctl -w fs.protected_symlinks=1sudo sysctl -w kernel.unprivileged_userns_clone=0- 위 명령어처럼 커널 구성 강화 가능 3. Live Patching 구현- 재부팅 안하고 패치 가능하도록 4. 커널 네임 스페이스 활용- 프로세스 각자에 독립적인 자원 뷰를 제공하여 격리- pid, net, mnt 같은 네임 스페이스가 예시 5. eBPF를 사용한 커널 행위 실시간 모니터링- eBPF (Extended ..
Copy on Write 3 Step(A) 매핑된 메모리의 카피를 만들기(B) 페이지 테이블 업데이트 (-> 버추얼 메모리가 피지컬 메모리의 새로운 장소를 가리킴)(C) 메모리에 쓰기 이 위의 세 스텝은 원자적이지 않음-> 다른 스레드들이 레이스 컨디션을 일으킬 수 있음madvise()가 (B)와 (C) 사이에 실행..=> 카피를 만들어뒀더니 쓰기 직전에 원본으로 바꿔치기됨 Attack#include #include #include #include #include #include #include void *map;void writeThread(void *arg){ char *content = "username:x:0000"; off_t offset = (off_t)arg; int f = ..
Kernel Local Privilege Escalation "Dirty COW", CVE-2016-5195레이스 컨디션의 한 케이스 int main(){ struct stat st; char content[20]; char *new_content = "New Content"; void *map; int f = open("./zzz", O_RDWR) fstat(f, &st); map = mmap(NULL, st.size, PROT_READ | PROT_WRITE, MAP_SHARED, f, 0); // read 10 bytes memcpy( (void*)content, map, 10 ); printf("read: %s\n", co..
Copy-on-Write부모와 자식 프로세스가 초기엔 메모리의 같은 페이지 프레임을 공유할 수 있게 함 (* 페이지 테이블 관련 내용은 운영체제 카테고리 참조) 이유:보통 프로세스들은 fork 이후 exec해서 다른 프로그램이 됨=> 굳이 쓰지도 않을 메모리를 복제하면 낭비니까 일단 부모 자식 간 프레임 공유를 시킴 처음엔 공유 시키고, Write 시 복제를 함 (copy on write) 물론 각각 PCB 따로 가지니까 페이지 테이블은 각각 가지지만,페이지 테이블 엔트리가 가리키는 페이지 프레임이 공유됨 1. 부모 프로세스와 자식 프로세스는 둘 다 일단 read-only로 마크됨- read시에는 아무 상관 없음2. 자식 프로세스가 write 요청- Protection fault 발생 -> 커널이 페이지..
ToCTToU (Time of Check-to-Time of Use) Vulnerability- 액세스 체크와 오픈 사이에 바꿔치기를 함 루트 소유 setuid 프로그램* 이거 아니면 애초에 /etc/passwd 못열음if( !access("/tmp/X", W_OK) ){ f = open("/tmp/X", O_WRITE); write_to_file(f);}access는 특이한 시스템 콜.. ruid 기반으로 권한 체크함open은 euid 기반으로 체크함열고 싶은 파일은 /etc/passwd .. 열어서 루트 계정을 추가하고자 함 (uid, 즉 세번째 필드가 0) 목표: /etc/passwd같이 보호되는 파일에 쓰기- 심볼릭 링크가 도움이 됨 Sticky Directory- 누구나 파일을 만들 ..
여러 스레드, 프로세스가 공유자원을 업데이트할 때 문제가 발생 (읽기만 하면 그럴 일 없음)프로세스나 스레드의 실행 순서에 의존적인 결과ex. 데이터베이스해결하기 위해 mutex 락, 언락이런 부분이 어떻게 공격으로 연결되는가 .. #include #include void main(void){ int pid; printf("PID = %d, in BEGIN printf\n", getpid()); pid = fork(); if( pid == 0 ) { for( int k = 0; k 0 ) { for( int n = 0; n 예시 코드슬립 시 자동 문맥 교환 (usleep이니 마이크로 단위)아무튼 출력 결과가 다르게 나옴(순서)여기서 공유 ..