IT 106

[Heap] chunk의 구조, free list, malloc(), free()

heap은 variable size memory이며,malloc()으로 allocate되고 free()로 deallocate된다. chunk의 구조header + chunk header8byte  chunk chunk는 사용되고 있을 때와 free된 때의 모습이 아래처럼 다르다.   free chunk의 double-linked list free chunk끼리는 double-linked list로 이어져 있다.(그림 상에는 single-linked처럼 그려져있지만 아무튼 실제로는 double-linked이다.)  포인터 관계를 자세히 보면 아래와 같다.  malloc()malloc(100)을 통해 chunk를 생성하면 아래와 같이 되며 108byte가 return된다. ※ 그림 상 위쪽이 lower ad..

[File System] LFS(Log-structured File Systems)

Sequential Write: 모든 update는 disk에 sequential하게 write한다.: data block을 disk에 write할 때, sequential하게 Inode와 Inode map도 disk에 write한다.  다만 Sequential write만으로는 최대로 effective하지는 않아서, write buffering 방식도 활용한다. Write buffering: one large write : disk에 write하기 이전에, LFS는 메모리의 update를 추적하고 있다가,그러한 update가 충분한 개수가 모이면 (이것이 segment이다),이들을 disk에 "한꺼번에" write함으로써, disk의 활용이 좀더 효율적이게 된다. ▶example개별 update는 두번..

[File System] Crash Consistency: FSCK and Journaling

💡write() 이후 과정과 crash workload example사용자가 write()를 호출함으로써 이미 있는 파일에다가 data block 하나를 추가하는 workload에서는Data block 추가, Inode 업데이트, Data bitmap 업데이트가 이뤄져야 한다.이들은 disk로 바로 write되지 않고, 일단 main memory의 page cache나 buffer cache에 있다가, file system이 최종적으로 disk로의 write를 결정하면 그때 disk로 write된다. crash cases그럼 crash 상황이란 즉, 위 3개 중 0개 or 1개 or 2개 성공의 상황일 것이다.이중 애매하게 1개 or 2개만 성공하는 경우 뭔일이 나는지 살펴보자. ▶1개만 성공여기에도 ..

[File System] FFS(Fast File System)

이전 방식 (VSFS)의 문제점VSFS는 disk를 random access memory로서 다뤘기에, 데이터가 여기저기에 퍼져버림. 이 때문에,한 파일의 inode와 data block이 너무 멀리 있어서,파일의 inode를 먼저 읽고 이후에 data block을 읽는 아주 일반적인 동작마저도 상당히 expensive함. 또한, 논리적으로는 연속적인 하나의 파일인데도 물리적으로는 분산돼있을 수 있어서 (아래 그림 참고),sequential read/write가 불가능하고 disk를 앞뒤로 왔다갔다해야 하니, 성능이 매우 떨어짐. 따라서,disk 내의 데이터 구조를 어떻게 organize해야 성능을 높일 수 있을지가 문제였다. FFS의 Cylinder groupFFS는 disk의 물리적 특성을 고려한다...

[Meltdown and Spectre] 엎질러진 물

💡Meltdown: 비순차실행을 이용해, user application 주제에 kernel 데이터를 읽는 공격  발생 원리✅1: user mode application이 커널 영역의 메모리 주소에 접근 시도 예시 1예시 2ptr: kernel 영역의 주소. ✅2: 비순차실행1.에 의해 아래 과정이 일어나야 한다.i) 가상 주소의 Address translation: 가상 주소인 (kernel)을 물리 주소로 변환ii) PTE 로드: 주소 변환을 위한 Page Table 참조iii) permission check: 해당 물리 주소에 접근 권한이 있는지를 PTE의 권한 정보를 바탕으로 체크    -> 권한이 없네! -> page fault exception 그런데 이것은 시간이 한참 걸리므로,비순차실행에 ..

[Malware: Malicious Software] Type, History, Detection, Trend

Malware types Virus: OS 등 host에서 target file (일반적으로 실행파일)을 찾아 자기 자신의 복사본을 삽입하여 전파하는 코드 조각 * virus의 주요 위치: - Boot sector -> 다른 어떤것보다도 먼저 control 능력을 가짐  - Memory resident - Applications, macros, data, etc. - Library routines - Compilers, debuggers, virus checker, etc. * 독립적으로 실행될 순 없고, host 프로그램이 이것을 실행하게 해야 실행됨* target file이 실행되면 virus도 실행되기 시작 * 오염된 file이 machine에서 machine으로 이동할 때에만 퍼짐 Worm: 어떤..

IT/시스템 보안 2024.06.11

[SQL Injection & Blind SQL Injection]

SQL InjectionDBMS의 SQL 쿼리에 임의의 입력값을 넣어 쿼리를 조작하여, 인증을 우회하거나 데이터베이스 정보를 유출하는 공격- SQL을 이해하고 있다면, 모든 RDBMS에 대해 SQL Injection 가능SQLDBMS에 데이터를 질의하는 언어Injection이용자의 악의적인 입력값이 애플리케이션의 처리 과정에서 구조나 문법적인 데이터로 해석되어 발생하는 취약점 예시 상황웹 서비스 내에,로그인을 위해 아이디와 비밀번호를 입력받고, 이를 DBMS에 조회하기 위한 쿼리에 포함하여 쿼리를 실행하는 페이지가 있다 하자.  이때 user_table은 아래와 같다. 정상적인 쿼리아이디와 비밀번호 칸에 정상적으로 각각 dreamhack, password를 입력하면 쿼리는 아래와 같이 생성된다. 쿼리 설..

IT/웹 보안 2024.06.08