이 영역을 누르면 첫 페이지로 이동
천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

페이지 맨 위로 올라가기

천천히 꾸준히 조용히

천천히 꾸준히 조용히.. i3months 블로그

Computer Science/Computer Security

  • 천천히 꾸준히 조용히
[SSS] CPU vulnerabilities and SideChannel Attack

[SSS] CPU vulnerabilities and SideChannel Attack

2025.12.04
BOF 같은 버그는 모두 프로그래머가 코드를 잘못 작성해서 발생하는 취약점이다.근데 당연히 취약점 중에는 이런 소프트웨어 버그 말고도 CPU 아키텍처 자체의 구조적 허점을 찌르는 공격 방식도 많음.Meltdown과 Spectre가 그 예시. 설계나 명세의 오류가 아니고, CPU의 성능을 위해 필수적인 기능이기에.. 보안을 위해 기능을 끌 수도 없음. Meltdown 공격자가 데이터를 가져가려면 데이터가 어떻게 저장되고 보호되는지 알아야 한다.운영체제에서 다 다룬 내용이긴 함.. A 프로세스의 주소 공간은 B 프로세스와 완전히 격리되어 있다.그런데 커널 코드와 데이터는 모든 프로세스의 가상 주소 공간에 매핑됨. 커널 데이터가 내 주소 공간에 있다고 읽을 수 있는건 아니긴 함..유저 모드 코드가 커널 메..
[SSS] Hardware-based Security Techniques

[SSS] Hardware-based Security Techniques

2025.11.27
포인터 개념을 사용하는 언어에서, 포인터가 NULL(0)을 가리킬 때 해당 주소의 함수를 호출하거나 데이터를 쓰려고 하면 NULL Pointer DeReference가 발생한다. (0x00000000 에 있는 명령어를 실행하려 함) 공격자가 User Space에 있는 0x0 주소 근처에 ShellCode를 심어두면, 커널이 NULL 포인터 버그로 0x0 주소로 점프하면 커널 권한을 가진 상태로 공격자가 심어둔 사용자 영역의 코드가 실행된다. 이 공격을 Return-to-User 공격이라고 부른다. Supervisor Mode Execution Prevention (SMEP) 와 Supervisor Mode Access Prevention (SMAP) 은 CPU 하드웨어 차원에서 커널의 User 메모리 ..
[SSS] Trusted Execution Environment 2

[SSS] Trusted Execution Environment 2

2025.11.24
DRM (Digital Right Management) 도 Trust Zone의 활용 예시. Normal World에서 암호화된 영화 파일을 다운로드하지만, 복호화 키가 없어서 내용을 볼 수 없다.Secure World는 숨겨진 복호화 키를 가지고 있다. 안전하게 영상을 복호화하고, Secure World 에서 영화를 보여준다.복호화된 영상을 Normal World에 넘겨주면 커널이 해킹당할 때 원본 영상을 불법 복제 할 수 있다. CPU 내부에는 Secure Configuration Register가 있고, 이 레지스터에서 저장하는 Non-Secure Bit로 현재 상태를 결정한다.값이 1이면 Normal World / 값이 0이면 Secure World 이다. Secure World는 모든 영..
[SSS] OPTEE - Open Portable Trusted Execution Environment

[SSS] OPTEE - Open Portable Trusted Execution Environment

2025.11.20
OP-TEE는 ARM 기반의 비영리단체 Linaro에서 배포하는 TrustZone 기술이 적용된 TEE를 구현한 오픈소스를 의미한다.TEE 개념처럼 Normal World / Secure World 두 개의 독립된 환경을 제공하고, ARM 아키텍처를 기반으로 둔다. 인텔 기반 X 각 World간 전환은 ARM 아키텍처에서 애플리케이션 계층 및 OS 계층보다 높은 권한 계층인 EL3에 구현되어 있는 Secure Monitor를 통해서 이루어진다. OP-TEE 빌드하고 탭을 두개 띄우자. 하나는 Normal World 다른 하나는 Secure World Normal World 탭에서 optee_example_hello_world 명령어가 잘 실행됨을 확인할 수 있음.이제 이 예제를 복..
[SSS] Trusted Execution Environment

[SSS] Trusted Execution Environment

2025.11.14
기존 시스템에서는 OS Kernel을 Root of Trust로 간주하고 User Program은 메모리 할당 및 하드웨어 제어 작업을 수행할 때 커널을 무조건적으로 신뢰한다.그런데.. 커널 자체에 취약점이 있거나 커널 수준에서 동작하는 루트킷 등 악성코드는 이런 신뢰 모델을 위협함. Trusted Execution Environment (TEE) 는 커널로부터 격리된 안전한 실행 환경을 구축할 때 사용한다.커널이 해킹당하더라도 보안에 민감한 애플리케이션을 보호하고 보안 모니터 역할을 수행한다. 루트킷이 Kernel Space에 설치되고 Security Module을 공격해 보안 조치를 우회한다.하드웨어와의 상호작용에 직접 개입해서 키보드 입력을 가로챌 수도 있고.. System Monitor를..
[SSS] Software Defense

[SSS] Software Defense

2025.11.10
Buffer Overflow, Format String Attack 등 Control Flow Hijack을 수행하는 방법을 공부했으니.. 이제 그 공격을 방어하는 방법을 살펴보자. 프로그램 분석, 퍼징 등을 사용해 프로그램에 심어져 있는 잠재적인 버그를 찾는게 가장 좋지만.. 이게 힘들다.버그가 있더라도 공격이 어렵게 만드는 차선택을 선택하자. Stack Canary / Data Execution Prevention / Address Space Layout Randomiztion 등 여러 기법을 사용한다. Data Execution Prevention코드 주입 공격을 방어한다.메모리 영역의 권한을 엄격하게 분리해서, Writable한 공간은 Non-Executable하게 만든다. 프로그램 스택은 W..
[SSS] OS kernel and Rootkit

[SSS] OS kernel and Rootkit

2025.11.01
루트킷의 핵심 원리는 Control Flow Hijacking. 정상적인 흐름을 가로채서 악성 코드를 먼저 실행시키는 방식이다. Call write를 호출하면 커널은 sys_write 함수를 찾아 0xca00000으로 이동한다.그런데 루트킷이 먼저 커널에 침투해서 func sys_rootkit() 함수를 0xcafecafe 주소에 올려버린다면? 추가로, 시스템 콜 테이블의 sys_write 항목이 가리키는 주소를 oxcafecafe로 바꿔버리면? 정상적인 sys_write() 함수 대신 sys_rootkit() 함수를 실행하게 된다. 루트킷이 커널에 침투하려면 애초에 User Level 프로그램에서 취약점을 통해 권한을 획득해야 한다.그러니 지금까지 배운 취약점을 사용해 권한을 얻은 후에 루..
[SSS] Race Condition

[SSS] Race Condition

2025.10.20
공유 자원의 접근 순서를 적당히 조절하지 않으면 의도하지 않은 결과가 발생할 수 있다.높은 권한을 가진 프로그램이 Race Condition을 가지고 있다면... function withdraw($amount){ $balance = getBalance(); if ($amount 쓰레드1이 $balance를 업데이트 하는 부분까지 실행되고 쓰레드2가 같은 함수를 실행한다.쓰레드2는 쓰레드1이 가져간 잔액과 동일한 양 만큼을 다루기에.. DB를 잘못 업데이트 할 수 있다. 관련 공격으로 TOCTTOU - Time Of Check To Time Of Use 이 있다.간단하게 말하면 파일 사용 전 검증을 수행하고, 검증 후 그 파일을 바꿔버리는 방식이다. Symbolic Link를 사용하자.공..
  • 최신
    • 1
  • 다음

정보

천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

  • 천천히 꾸준히 조용히의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (655)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • C (25)
      • C++ (12)
      • Java (19)
      • JavaScript (15)
      • Python (1)
      • PHP (2)
    • Computer Science (133)
      • Machine Learning (37)
      • Operating System (18)
      • Computer Network (28)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
      • Compiler Design (8)
      • Computer Security (8)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Amazon Web Service (8)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • 💡 솔루션 (16)
    • 💬 기록 (10)
    • 📝 낙서장 (25)

최근 글

나의 외부 링크

메뉴

  • 홈
반응형

정보

i3months의 천천히 꾸준히 조용히

천천히 꾸준히 조용히

i3months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © i3months.

티스토리툴바