`curl | dd`로 OS를 설치한다고? 리눅스 시스템 해킹?

by DD
2개월 전
조회수 6

`curl | dd` 명령어를 사용하여 디스크 이미지(Disk Image)를 직접 `/dev/sdX`에 쓰는 방법을 소개함

VM 환경(VM Environment)에서 OS 이미지를 생성하고, 이를 활용하여 시스템을 재구축하는 과정을 설명함

커뮤니티에서는 시스템 재구축, 부팅 과정, 그리고 `curl | sh`와 유사한 위험성에 대한 논의가 진행됨

`curl | dd` 방식의 OS 설치가 EFI 부팅(EFI Booting) 환경에서도 작동한다는 점을 언급함

`curl | dd`를 이용한 OS 설치의 원리

저자는 `curl | dd` 명령어를 통해 네트워크에서 직접 디스크에 데이터를 쓰는 방식을 설명한다. 기술적으로 보면, `curl`은 원격 서버에서 데이터를 다운로드하고, `dd`는 디스크에 데이터를 블록 단위로 기록한다. 특히, `/dev/sdX`와 같은 디스크 장치 파일에 직접 접근하여 데이터를 쓰는 것은 유닉스 철학인 '모든 것이 파일' 개념을 따른다. 이러한 방식은 별도의 데이터 격리 아키텍처(Data Isolation Architecture) 없이도 OS 설치를 가능하게 한다.

VM 환경에서의 OS 이미지 생성 및 활용

저자는 QEMU를 사용하여 OS 이미지를 생성하는 방법을 제시한다. 구체적으로, `truncate` 명령어로 디스크 이미지를 생성하고, QEMU를 통해 OS를 설치한 후, raw disk image를 얻는 과정을 설명한다. 이 raw image는 웹 서버에 업로드되어 `curl | dd` 명령어를 통해 다른 시스템에 배포될 수 있다. 이러한 방식은 멀티모달 분석(Multimodal Analysis)을 통해 다양한 OS 환경에서 시스템을 구축하는 데 활용될 수 있다.

커뮤니티의 시스템 재구축 및 부팅 관련 논의

커뮤니티에서는 `curl | dd` 방식의 OS 설치가 시스템 재구축에 유용하다는 점에 공감하며, 특히 EFI 부팅(EFI Booting) 환경에서도 별도의 설정 없이 작동한다는 점에 주목한다. 댓글에서는 시스템을 재부팅하지 않고 디스크를 덮어쓰는 시도가 실패한 사례를 공유하며, OS가 실행 중인 상태에서 디스크를 덮어쓰는 것은 위험하다는 점을 강조한다. 또한, `curl | sh`와 유사한 보안 위험성에 대한 경고도 제기된다.

`curl | dd` 방식의 장단점 및 대안

저자는 `curl | dd` 방식의 장점으로 object storage 비용 절감을 언급하며, 다양한 파일 전송 프로토콜을 활용한 대안을 제시한다. 실제 사례로는 `wget`, `gunzip`, `ssh` 등을 활용한 방법이 소개된다. 하지만 이 방식은 디스크에 직접 접근하기 때문에, 오류 발생 시 시스템 손상 위험이 높다는 단점이 있다. 따라서 안전한 OS 설치를 위해서는 데이터 미저장 정책(Zero-Retention Policy)을 준수하고, 신뢰할 수 있는 출처의 이미지를 사용하는 것이 중요하다.

curl > dev/sda