rosieblue
article thumbnail
[OS] 프로세스 Process (2) - 프로세스 간 자원 공유 (IPC)
🖥️ Computer Science/OS 2023. 7. 10. 12:51

IPC (Inter-Process Communication) 이전 포스트에서 프로세스들은 서로 다른 메모리 공간을 차지한다고 했다. 이에 비교해서 스레드는 한 프로세스 내에서 스택 외 다른 데이터들은 공유한다고 했다. 그렇기에 자원공유가 쉽다. 하지만 프로세스들은 별도의 주소 공간에서 실행되기 때문에 서로의 자원(변수, 자료구조 등)에 직접적으로 접근할 수가 없다. 그렇다면 프로세스들은 서로 영원히 자원을 공유할 수 없는 것일까? 분명 아닐 것이다. 오늘은 프로세스 간 자원 공유가 어떻게 일어나는지 알아보도록 하겠다. 프로세스를 자원 공유 측면에서 구분하면 다음과 같이 두가지로 나눌 수 있다. Independant : 다른 프로세스와 메모리 공유를 아예 하지 않는 프로세스 Cooperating : 다른 ..

article thumbnail
[Pwnable] SECCOMP

들어가며 원격 코드 실행(Remote Code Execution)과 같은 취약점은 사전 예방 방법이 없음. 따라서 제한된 환경에서만 코드를 실행할 수 있게 하는 샌드박스 기법이 도입됨. 샌드박스에 대해서는 아래 포스트를 참고하자. [Security] 샌드박스(Sandbox)와 샌드박스의 취약점 시스템콜(syscall), 셸, 커널모드 vs 유저모드 실제 코드에서 seccomp을 설정하려면 prctl 함수에 PR_SET_SECCOMP를 첫번째 인자로 전달하면 된다. 구성 struct seccomp { int mode; struct seccomp_filter *filter; }; /* struct seccomp - the state of a seccomp'ed process * * @mode: indicat..

article thumbnail
[Pwnable] .init_array, .fini_array, _rtld_global

.init_array & .fini_array .init_array와 .fini_array는 바이너리가 실행되고 종료될 때 초기화를 위해 참조하는 함수 포인터들이 저장되어 있는 섹션 이 배열들은 데이터 섹션에 존재하고 RELRO가 적용되면 overwrite 불가. $ objdump -h ./array array: file format elf64-x86-64 18 .init_array 00000008 00000000006008c0 00000000006008c0 000008c0 2**3 CONTENTS, ALLOC, LOAD, DATA 19 .fini_array 00000008 00000000006008c8 00000000006008c8 000008c8 2**3 위처럼 objdump로 .init_arrary..

보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력해주세요.
보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력해주세요.
article thumbnail
[Heap] Background : Tcache
Linux Exploitation/Heap 2023. 6. 30. 09:58

tcache를 알기 전에 왜 tcache가 도입되었는지 배경을 살펴보자. 이전에 우리는 'Arena'라는 개념을 알아야 한다. 이에 대해 포스트를 작성할 예정이지만 여기서는 간단히만 arena가 무엇인지 살펴보고 tcache로 넘어가자. Arena란? '멀티스레드' 환경을 지원하기 위해 도입된 것으로, arena는 각 스레드의 freelist와 chunk들을 관리하는 malloc_state 구조체이다. 기존 dlmalloc은 멀티스레드 환경을 지원하지 않았기에 동시에 두 스레드가 malloc을 호출할 경우, 한 스레드는 다른 스레드의 malloc이 끝날 때까지 그저 기다려야만 했다. 하지만 ptmalloc에서는 각각의 스레드가 분배된 힙 영역을 사용하고 freelist 또한 분배되어 사용할 수 있게 하여..