문제

하버드식 건물의 컴퓨터에 별도의 코드와 데이터의 추억.이것이 그들의 면역 코드에 삽입 공격(으로 데이터를 실행할 수 없습으로 코드)?

도움이 되었습니까?

해결책

그들은 Von Neumann Architecture보다 다소 면역력이 있지만 완전히는 아닙니다. 모든 아키텍처에는 변환 지점이 있으며, 여기서 데이터는 코드로 취급되기 시작합니다. Von Neumann에서는 CPU 바로 내부에서 발생하는 반면 하버드에서는 메모리가 모듈에 대해 예약되어 선언되기 전에 발생합니다 (또는 때로는 파일이 빌드 시스템에 의해 파일을 준비 할 때). 이는 하버드 아키텍처에서 성공적인 코드 주입 공격이 좀 더 복잡하고 광범위하지만 반드시 불가능한 것은 아닙니다.

기계의 스토리지 (예 : 파일 시스템)에 악성 코드가 포함 된 파일을 배치 할 수 있고,이 악성 파일을 코드로로드하는 기존 (유효하지 않은) 코드로 리디렉션되는 버퍼 오버런을 원인으로하는 경우. 이 아키텍처는이 파일이 실행을 시작할 수있게 해주 며 (예 : 자기 시작 루틴을 통해) 성공적인 코드 주입의 예입니다.

다른 팁

그것은 부분적으로 무엇에 따라 달라집으로 계산"코드를 삽입 공격".

을 SQL injection,공격에 대한 예입니다.SQL 쿼리할 것 자체가 필요하지 않에 있는 실행 파일 메모리의 일부이기 때문에,그것은 기본으로 변환 코드(또는 해석되거나 어떤 용어를 사용하려)의 데이터베이스 엔진입니다.그러나,SQL 수 있는 대로"코드"를 참조하십시오.

는 경우에 당신은 단지 포함하는 공격자를 삽입하는 기본 코드를 직접 실행하는 프로세서(예:를 통해 버퍼런)과하는 경우 프로세스에서 막는 데이터 복사로는"코드는 영역이"그것은 보호 기능을 제공하의 이런 종류의 공격,그렇습니다.(나는 꺼려하는 주장을 100%보호는 경우에도 생각할 수 없이 어떤 공격;그 절대 안전한지만,보안을 간략한 사업이다.)

분명히 거기에 있습니다 일부 연구원 성취 할 수 있었던 사람 영구 코드 주입 공격 하버드 건축물에서. 사람들이 생각한 것만 큼 안전하지 않을 수도 있습니다.

대부분 하버드식 건물의 컴퓨터는 여전히 사용하는 일반적인 공유 메모리 공간 모두에 대한 지침은 데이터와 외부의 핵심입니다.그래서,그것은 여전히 가능한 코드를 삽입하고 그것을 얻을 실행하는 명령으로.사실,대부분의 프로세서 오늘은 내부적으로 하버드 아키텍처는 경우에도,그들은 보 Von Neumann 외부.

X86 은이 작업을 수행하는 세분화 아키텍처를 가지고 있으며 일부 프로젝트에서 데이터가 코드로 실행되는 것을 막기 위해 사용되었습니다 (현재 NX 비트가 주로 낭비되는 노력). 새로운 익스플로잇의. 야생에서 여전히 악용 할 수있는 원격 파일 포함의 놀라운 수를 고려하십시오.

우리 대학은 최근 에이 문제를 논의하는 MS 방어력을 가지고있었습니다. 불행히도, 나는 참석할 수 없었습니다. Watts 씨에게 연락하면 기꺼이 논의 할 것입니다.

http://www.cs.uidaho.edu/defenses/kriswatts.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top