2009-03-30 2 views
4

CLR이 버퍼 오버플로 공격을 방지하기 때문에 .Net 플랫폼이 더 안전하다고 말할 수 있습니까?C#/Net 웹 브라우저가 악용 될 위험이 있습니까?

관리 OS에서 실행되는 웹 브라우저가 있었다 가정 (Cosmos, SharpOS 또는 Singularity 등)는 응용 프로그램에 IL 코드를 주입 ​​할 수있는 공격자 기술적으로 가능한 것입니까?

관리되지 않는 앱에서는 불가능한 공격에 대해 걱정해야합니까?

답변

7

대부분의 경우 정확합니다. 안전 형식 시스템 (.NET 또는 Java뿐 아니라)을 사용하는 응용 프로그램은 응용 프로그램이 이러한 제약 조건을 위반하는 것을 허용하지 않습니다.

버퍼 오버플로 및 기타 많은 원격 코드 악용이 발생합니다. 이러한 언어 및 런타임의 제약 조건은 검사를 제공하지 않으며 프로그램이 메모리에서 임의 코드를 실행하는 것과 같은 기능을 수행하지 않을 수 없기 때문입니다. 안전 시스템은 코드가 이러한 영향을받지 않는지 확인합니다.

(보조 노트로, C#을 여전히 안전하지 않은 작업을 수행하고 임의의 코드를 실행하기 위해 자체를 설정할 수 있습니다. 그것은 실제 응용 프로그램에서 사용할 수 그냥 오히려 번거롭고 확률이 낮다.)

보안 구멍을 볼 것이다 CLR을 안전한 환경으로 사용하여 관리되는 브라우저에서 임의의 코드가로드 될 수 있습니다. CLR에 의해 생성 된 코드 (즉, 애플리케이션의 JIT 된 코드)는 안전하지만 로더와 확인 프로그램 자체는 보통 더 낮은 언어로 작성됩니다. 악의적으로 형성된 어셈블리가 실제 CLR로 하여금 임의의 코드를 실행하도록 할 수있는 보안 허점이 몇 가지 있습니다. 그러나 이들은 상대적으로 희귀 한 이슈이며 표면적은 그렇지 않은 것보다 훨씬 적습니다.

그래, 완전히 안전하고 관리되는 브라우저 자체가 특정 악용에 빠지지 않을 것입니다. 그러나 이는 또한 플러그인을 작성하고 비슷한 방식으로 실행해야한다는 것을 의미합니다 (Flash?). 마지막으로 대상을 지정할 수있는 다른 보안 구멍이 있지만 대개 관리되지 않는 응용 프로그램과 비교할 때 덜 심각합니다. 예를 들어 사이트 간 스크립팅은 여전히 ​​문제가됩니다. 그러나 최소한 "문서가 임의 코드를 실행할 수 있는지 보지"않을 것입니다.

2

CLR (및 JVM)은 많은 일반적인 공격으로부터 보호하지만 모든 위협을 제거하지는 않습니다. CLR 또는 모든 라이브러리에는 악용 할 수있는 버그가있을 수 있습니다. 응용 프로그램 오류로 인해 악용 될 수도 있습니다. SQL 삽입은 응용 프로그램에서 입력 유효성 검사가 이루어지지 않아 가능한 공격의 예입니다.

관련 문제