Post

[Pintos] project3 - Copy on Write

Copy on Write & Dirty Cow

Copy on Write (cow)

Copy-on-Write은 메모리 관리 기술 중 하나로, 데이터를 공유 하면서 수정이 발생하면 복사본을 생성해 데이터의 일관성을 유지하면서 리소스를 절약하는 기법

Cow 진행 과정

  1. 부모 프로세스 메모리 매핑:
    • 부모 프로세스가 메모리 페이지를 할당하고 초기화합니다. 이 페이지는 원본 페이지입니다.
  2. 자식 프로세스 메모리 매핑:
    • 자식 프로세스는 부모 프로세스와 동일한 페이지를 공유합니다. 이 페이지는 읽기 전용으로 설정됩니다.
  3. 자식 프로세스 수정 시도:
    • 자식 프로세스가 페이지를 수정하려고 할 때, 수정 작업은 다음과 같이 진행됩니다:
      • 페이지 수정을 시도하면 시스템은 이를 감지하고, 해당 페이지를 쓰기 가능한 페이지로 복사합니다. 이것은 COW 작업입니다.
      • 이 복사본은 자식 프로세스만이 접근할 수 있는 페이지로 설정됩니다.
  4. 자원 변화:
    • COW를 사용하면, 메모리 페이지의 물리적 자원을 효율적으로 관리할 수 있습니다. 부모와 자식 프로세스가 공유 페이지를 수정하면 쓰기 가능한 페이지로만 복사되며, 물리 메모리 자원을 효과적으로 공유 및 관리합니다.
  5. 매핑 해제:
    • 페이지 매핑 해제는 부모 또는 자식 프로세스 중 하나가 해당 페이지를 더 이상 필요로 하지 않을 때 발생합니다. 이 페이지는 물리 메모리에서의 자원 할당이 해제됩니다.

Alt text

Alt text

Cow 장점

  1. 메모리 효율적 관리
    • COW를 사용하면 부모와 자식 프로세스는 처음에는 동일한 물리 메모리 페이지를 공유합니다. 이로써 물리 메모리의 효율적인 활용이 가능하며 메모리 절약을 도모합니다.
  2. 성능 향상
    • COW는 데이터 복사 작업을 최소화하므로 자식 프로세스가 데이터를 수정하지 않는 한, 복사에 대한 비용이 들지 않습니다. 쓰기 작업이 발생하면 복사 작업이 이루어지므로 성능 저하를 최소화할 수 있습니다.
  3. 빠른 프로세스 생성
    • COW를 사용하면 자식 프로세스를 생성하는 데 필요한 시간과 메모리 사용량이 줄어듭니다. 이로써 새로운 프로세스를 빠르게 생성할 수 있으며, 시스템의 응답성을 향상시킵니다.
  4. 자원 공유
    • 부모와 자식 프로세스 간에 데이터 및 리소스를 효과적으로 공유할 수 있습니다.
  5. 시스템 안정성
    • COW는 메모리 관리를 효율적으로 수행하므로 시스템 안정성을 향상시킵니다. 물리 메모리 할당 및 해제를 최적화하므로 메모리 누수나 다른 메모리 관련 문제를 방지합니다.

Cow 취약점

Dirty Cow

Dirty COW는 컴퓨터 보안과 리눅스 커널에 관한 취약점으로, 2007년 - 2016까지 크리티컬 하지만 굉장히 오랜 시간 패치되지 않았습니다.

Dirty COW 동작 원리:

  1. 공격자는 커널 메모리에 대한 Race Condition을 악용합니다.
  2. 페이지 수정 및 메모리 매핑 변경을 조작하여 권한 상승을 시도합니다.
  3. 이로써 공격자는 고정된 파일을 쓰기 가능한 페이지로 만들고, 권한 상승을 통해 시스템을 제어할 수 있습니다.

Alt text Alt text

Dirty COW의 영향:

  • 공격자는 권한 상승 및 데이터 누출을 시도할 수 있습니다.
  • 이 취약점은 심각한 보안 문제를 초래할 수 있으며, 리눅스 커널 개발자는 패치를 개발하여 이를 해결하였습니다.

Dirty COW 취약점은 리눅스 커널에서 발견된 중요한 보안 문제 중 하나이며, 시스템 관리자와 사용자는 적절한 대응과 패치를 통해 시스템을 보호해야 합니다.

Reference
https://blog.naver.com/skinfosec2000/

This post is licensed under CC BY 4.0 by the author.