이상한 기계

Weird machine

컴퓨터 보안에서 이상한 기계는 프로그램의 [1]원래 사양을 벗어나는 추가 코드 실행이 발생할 수 있는 계산 아티팩트입니다.이는 조작된 입력 [2]데이터에 기반한 공격의 구성 요소인 이상한 명령의 개념과 밀접하게 관련되어 있습니다.

이상한 기계의 개념은 보안 취약성에 대한 악용의 존재를 이해하기 위한 이론적 프레임워크입니다.이용은 경험적으로 존재하지만, 이상한 기계의 프레임워크가 등장하기 전에는 이론적인 관점에서 연구되지 않았다.

이론.

이론적인 관점에서 보면, 컴퓨터의 도달 가능한 상태의 수와 상태 천이를 제한하는 방법으로 소프트웨어를 고려할 때 이상한 머신의 출현은 명확해집니다.범용 CPU는 소프트웨어를 통해 유한 상태 머신을 시뮬레이트하도록 특수화되어 있습니다(매우 큰 상태 공간을 가질 가능성이 있음).CPU가 존재할 가능성이 있는 많은 상태는 제외되며 특정 상태 천이는 제외됩니다(소프트웨어의 보안 요건을 위반하는 상태 등).메모리 파손, 하드웨어 장애 또는 기타 프로그래밍 오류를 통해 의도된 유한 상태 머신의 관점에서 시스템이 "의미하지 않은" 상태로 이행되면 소프트웨어는 사용자의 추가 입력에 의해 트리거된 고장 상태를 새로운 고장 상태로 계속 변환합니다.새로운 계산 디바이스가 생성됩니다.프로그래머가 예상한 것과 다른 CPU 상태에 도달할 수 있는 이상한 기계, 입력에 반응하여 CPU 상태를 확인할 수 있습니다.

적용들

이상한 기계의 기능은 예기치 않은 입력을 통해 호출됩니다.

예상대로 유효한 입력이 컴퓨터 프로그램의 정상적인 의도된 기능을 활성화하고 프로그램 개발자에 의해 예기치 않은 입력이 의도하지 않은 기능을 활성화할 수 있습니다.이상한 기계는 악용 시 선택된 입력으로 프로그래밍될 수 있는 이 의도하지 않은 기능으로 구성됩니다.

스택 버퍼 오버플로를 이용하는 고전적인 공격에서는 취약한 프로그램에 주어진 입력이 프로그램 코드로 실행되도록 교묘하게 조작되어 전달됩니다.그러나 프로그램 메모리의 데이터 영역이 와 같이 직접 실행될 수 없도록 보호되어 있는 경우, 입력은 포인터의 형태를 기존 프로그램 코드의 일부에 가져다가 예기치 않은 순서로 실행되어 이용의 기능을 발생시킬 수 있다.악용에 의해 사용되는 이러한 코드 조각은 반환 지향 프로그래밍의 맥락에서 가젯이라고 불립니다.

데이터를 코드로 해석하는 것으로, 원래의 프로그램 사양 이외의 기묘한 기계 기능에 대해서, PCC(Proof-Carrying Code)에 의해서도 도달할 수 있습니다.PCC는, 특정의 방법으로 [3]기능하는 것이 정식으로 증명되고 있습니다.이러한 차이는 본질적으로 컴퓨터 프로그램의 형식 추상 모델링과 실제 인스턴스 간의 단절에 기인하며, 메모리 오류나 정전 등 원래 추상화에서 포착되지 않은 이벤트에 의해 영향을 받을 수 있습니다.

하드웨어에서도 이상한 기계 동작이 관찰됩니다.예를 들어 [4]x86에서는 MOV 명령만으로 계산을 할 수 있는 것으로 나타났습니다.

경감

이상한 기계 기능으로 인해 발생하는 문제를 완화하기 위한 두 가지 주요 카테고리에는 소프트웨어 내 입력 검증과 메모리 오류와 같은 프로그램이 실행되는 플랫폼에서 발생하는 문제로부터 보호하는 것이 있습니다.입력 검증은 예를 들어 허용된 입력의 화이트리스트를 통해 예기치 않은 입력의 범위와 형식을 제한하여 소프트웨어 프로그램 자체가 데이터를 내부적으로 해석함으로써 예기치 않은 상태가 되지 않도록 하는 것을 목적으로 합니다.마찬가지로 중요한 것은 버퍼 오버플로우로부터 보호하는 것과 같은 안전한 프로그래밍 방법은 입력 데이터가 프로그램이 실행되는 하드웨어와 같은 하위 계층에 의해 의도하지 않은 방식으로 해석될 가능성을 낮춥니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Bratus, Sergey; Locasto, Michael E.; Patterson, Meredith L.; Sassaman, Len; Shubina, Anna (December 2011). "Exploit Programming - From Buffer Overflows to "Weird Machines" and Theory of Computation" (PDF). ;login:. 36 (6): 13–21.
  2. ^ Bratus, Sergey; Darley, Trey; Locasto, Michael E.; Patterson, Meredith L.; Shabiro, Rebecca; Shubina, Anna (January 2014). "Beyond Planted Bugs in "Trusting Trust": The Input-Processing Frontier". IEEE Security & Privacy. 12: 83–87. doi:10.1109/MSP.2014.1. S2CID 8355623.
  3. ^ Vanegue, Julien (2014). "The Weird Machines in Proof-Carrying Code" (PDF). 2014 IEEE Security and Privacy Workshops. IEEE. pp. 209–213. doi:10.1109/SPW.2014.37. ISBN 978-1-4799-5103-1. S2CID 9913043.
  4. ^ Stephen, Dolan. "mov is Turing-complete" (PDF).{{cite web}}: CS1 maint :url-status (링크)