문맥 (context)
일반적으로, 본 발명은 컴퓨터 및 컴퓨터 데이터에 관한 것이며, 특히, 블럭 메타데이터를 인코딩하기 위한 시스템 및 방법에 관한 것이다.
현재, 컴퓨터의 메모리는 본원에서 일반적으로 "메모리 관리자"라 불리는 컴퓨터의 운영 시스템의 일부에 의해 관리된다. 컴퓨터 프로그램 또는 기타 컴퓨팅 어플리케이션(본원에서는 총괄적으로 "어플리케이션"이라 칭함)이 동작을 수행하고, 데이터를 저장하거나, 기타 기능을 수행하기 위해 메모리를 필요로 하는 경우, 메모리 관리자에게 필요한 메모리의 양에 대한 식별을 제공함으로써 메모리 관리자로부터 필요한 메모리를 요청한다. 응답으로, 메모리 관리자가 요청된 양의 메모리(본원에서 "블럭"이라 칭함)를 할당하고, 블럭을 식별 및 기술하는 블럭 헤더를 생성하며, 요청 어플리케이션에게 할당된 메모리에의 액세스를 허용한다. 블럭 헤더는 일반적으로 메모리를 관리하기 위하여 메모리 관리자에 의해 생성되고 메모리 관리자에 의해 사용되는 여러 필드를 포함한다. 예를 들어, 블럭 헤더의 필드들은 블럭 크기에 대한 표현, 이전 블럭에의 링크에 대한 표현, 블럭 플래그, 미사용 바이트, 및 기타 내부 블럭 상태를 포함할 수 있다.
블럭 크기는 메모리 요청에 응답하여 할당되는 블럭의 크기에 대한 식별을 포함할 수 있다. 플래그 필드는 블럭이 비지(busy)인지, 프리(free)인지, 내부적으로 할당되었는지 등을 식별하기 위해 메모리 관리자에 의해 사용될 수 있다. 미사용 바이트들은 할당된 블럭 중 요청 어플리케이션에 의해 사용되지 않는 바이트들을 메모리 관리자에게 식별해줄 수 있다. 일반적으로, 블럭 헤더의 필드들은 메모리 관리자에 의해 사용되고, 사적이고 메모리 관리자에 의해서만 수정되는 것으로 의도된다. 부가적으로, 블럭 헤더의 필드들은 내용, 수, 및 크기에 있어서 변할 수 있다.
도 1은 두 개의 할당된 블럭(101 및 102)을 포함하는 메모리 영역의 일부에 대한 블럭도이다. 각 블럭(101, 102)은, 블럭을 식별하는 메타데이터를 포함하는 블럭 헤더를 포함하며, 블럭 헤더는 필드들로 분리된다. 예를 들어, 블럭(102)은 블럭 헤더(103)를 포함한다. 블럭 헤더(103)는 6개의 필드(105, 107, 109, 111, 113, 115)로 분리되는 블럭(102)에 대한 메타데이터를 포함한다. 필드들(105, 107, 109, 111, 113, 115) 각각은 블럭(102)을 관리하기 위해 메모리 관리자에 의해 사용되는 정보를 포함한다.
블럭 헤더의 사용이 데이터를 더욱 효율적으로 관리할 수 있게 하지만, 잠재적으로 컴퓨팅 시스템을 공격 및 의도되지 않은 에러에 노출시킨다. 예를 들어, 어플리케이션은 특정 양의 메모리를 요청할 수 있고, 그만큼의 메모리를 할당받을 수 있지만, 할당된 메모리가 수용할 수 있는 것보다 많은 양의 데이터를 기입할 수 있다. 따라서, 메모리 영역에서 다음 블럭 헤더 및 잠재적으로 다음 블럭의 이어지는 데이터의 일부가 덮어쓰여질 수 있고, 이에 의해 예측할 수 없는 결과를 야기할 수 있는 불일치를 생성할 수 있다. 할당된 메모리보다 많은 데이터를 기입하는 것은 일반적으로 "버퍼 오버런(buffer overrun)"이라 불린다. 버퍼 오버런은 어플리케이션의 의도하지 않은 부적절한 코딩으로부터 야기될 수 있다. 그러나, 버퍼 오버런은 메모리의 일부를 제어하여 악성 코드를 실행하려는 노력으로 고의적으로 프로그래밍될 수 있다.
도 2는 악성 코드가 기입되어 버퍼 오버런을 야기하는 두 개의 데이터 블럭을 포함하는 메모리 영역에 대한 블럭도이다. 도 1에 관하여 논의된 메모리 영역에 대해 계속하면, 어플리케이션은 데이터를 기입하기 위해 필요한 특정 양의 메모리를 요청할 수 있다. 응답으로, 메모리 관리자는 데이터 영역(200)으로부터 데이터의 블럭(201)을 할당하고, 그 데이터 블럭(201)에 대한 블럭 헤더(216)를 생성하며, 요청 어플리케이션이 그 블럭에 기입하도록 할 수 있다. 도 1 및 도 2에서 알 수 있는 바와 같이, 할당된 데이터 블럭(201)이 메모리 영역(200)에서 데이터의 또다른 할당된 블럭(202)에 인접할 수 있고, 그것 또한 블럭 헤더(203) 및 데이터 블럭(217)을 포함한다.
블럭(201)에의 액세스가 허가되면, 어플리케이션은 의도하지 않게 할당된 메모리보다 더 많은 데이터를 기입할 수 있고, 그것은 블럭 헤더(203)를 넘어서까지 그리고 어쩌면 인접한 메모리 블럭(202)의 데이터 블럭(217)의 일부를 넘어서까지 데이터를 기입하는 버퍼 오버런을 야기한다. 덮어쓰여진 블럭 헤더 필드(205, 207, 209, 211, 213, 215) 중 몇몇이 메모리 관리자에 의해 사용되기 때문에, 불일치를 인지하여 예외 발생, 어플리케이션 종료, 에러 기록 등과 같은 동작들을 수행함으로써 예측할 수 없는 결과를 방지할 수 있다.
지시문 (instruction)
주어진 원문을 읽고 필요한 정보를 파악하여, 원문에 근거해 질문에 답하라.
질문 (question)
어플리케이션이 할당된 메모리보다 더 많은 데이터를 기입하여 발생하는 버퍼 오버런(buffer overrun) 현상이 컴퓨팅 시스템에 미칠 수 있는 잠재적인 위험은 무엇인가?
추론 과정 (compact_reasoning)
-
1과제 해석
task_interpretation버퍼 오버런이 발생했을 때 시스템에 미치는 부정적인 영향과 목적(위험 요소)을 파악해야 한다.
-
2정보 추출
information_extraction버퍼 오버런의 정의와 그로 인해 발생하는 물리적 현상을 추출한다.
- 할당된 메모리가 수용할 수 있는 것보다 많은 양의 데이터를 기입할 수 있다.
- 메모리 영역에서 다음 블럭 헤더 및 잠재적으로 다음 블럭의 이어지는 데이터의 일부가 덮어쓰여질 수 있고
-
3근거 선택
evidence_selection버퍼 오버런이 시스템에 미치는 구체적인 결과(위험)를 명시한 구절을 선택한다.
- 예측할 수 없는 결과를 야기할 수 있는 불일치를 생성할 수 있다.
- 버퍼 오버런은 메모리의 일부를 제어하여 악성 코드를 실행하려는 노력으로 고의적으로 프로그래밍될 수 있다.
-
4논리 통합
logical_integration데이터 덮어쓰기가 불일치를 만들고, 이것이 악성 코드 실행으로 이어질 수 있다는 인과관계를 연결한다.
- 다음 블럭 헤더 및 잠재적으로 다음 블럭의 이어지는 데이터의 일부가 덮어쓰여질 수 있고, 이에 의해 예측할 수 없는 결과를 야기할 수 있는 불일치를 생성할 수 있다.
-
5결론 도출
conclusion_formulation버퍼 오버런은 블럭 헤더나 인접 블럭 데이터를 덮어써서 불일치를 만들거나, 악성 코드를 실행하는 데 이용될 수 있음을 정리한다.
- 예측할 수 없는 결과를 야기할 수 있는 불일치를 생성할 수 있다.
- 악성 코드를 실행하려는 노력으로 고의적으로 프로그래밍될 수 있다.
-
6답변 생성
answer_generation질문에 대해 문맥에 근거하여 위험성을 기술한다.
- 예측할 수 없는 결과를 야기할 수 있는 불일치를 생성할 수 있다.
- 악성 코드를 실행하려는 노력으로 고의적으로 프로그래밍될 수 있다.
최종 답변 (final_answer)
버퍼 오버런은 다음 블럭 헤더 및 인접한 메모리 블럭의 데이터 일부를 덮어쓰게 하여 예측할 수 없는 결과를 야기하는 불일치를 생성할 수 있으며, 메모리의 일부를 제어하여 악성 코드를 실행하려는 목적으로 고의적으로 프로그래밍될 수 있는 위험이 있다.
핵심 해석 (core_interpretation)
버퍼 오버런은 다음 블럭 헤더와 인접 메모리 블럭의 데이터를 덮어써서 불일치와 예측할 수 없는 결과를 야기하며, 악성 코드를 실행하는 보안 위협을 초래할 수 있다.