Java 소프트웨어 플랫폼의 보안
Security of the Java software platform이 기사는 대부분 또는 전체적으로 단일 출처에 의존하고 있습니다. : 플랫폼의 · · · · JSTOR (2014년 1월) |
Java 플랫폼은 Java 애플리케이션의 보안을 개선하기 위해 설계된 많은 기능을 제공합니다.여기에는 Java Virtual Machine(JVM; Java 가상 머신), 나머지 운영체제에서 신뢰할 수 없는 코드를 샌드박스하는 보안 매니저 및 Java 개발자가 사용할 수 있는 보안 API 스위트를 사용하여 런타임 제약을 적용하는 것이 포함됩니다.그럼에도 불구하고 JVM의 보안 취약성을 드러낸 악성 프로그램이 증가하여 Oracle이 적시에 적절하게 대처하지 못했기 때문에 프로그래밍 언어 및 Oracle에 대한 비판이 제기되었습니다.
보안 기능
JVM
Java 플랫폼에서 실행되는 프로그램의 바이너리 형식은 네이티브 머신 코드가 아니라 중간 바이트 코드입니다.JVM은 이 바이트 코드를 실행하기 전에 이 바이트 코드를 검증하여 프로그램이 잘못된 위치로 분기하는 등의 안전하지 않은 작업을 수행하지 않도록 합니다.이 작업에는 명령 대신 데이터가 포함될 수 있습니다.또한 JVM은 어레이 경계 검사와 같은 런타임 제약 조건을 적용할 수 있습니다.이는 Java 프로그램이 버퍼 오버플로와 같은 메모리 안전상의 결함으로 인해 그러한 메모리 안전 보장을 제공하지 않는 C 등의 언어로 작성된 프로그램보다 훨씬 덜 고통받을 수 있음을 의미합니다.
이 플랫폼에서는 프로그램에서 포인터 산술이나 선택되지 않은 유형 캐스트와 같은 안전하지 않을 수 있는 특정 작업을 수행할 수 없습니다.메모리 할당 및 초기화를 관리하고 자동 가비지 수집 기능을 제공하며, 대부분의 경우(전부는 아니지만) 개발자가 수동 메모리 관리를 하지 않아도 됩니다.이것은 타입의 안전과 메모리 안전에 공헌합니다.
보안 매니저
이 플랫폼은 사용자가 신뢰할 수 없는 바이트 코드를 "샌드박스" 환경에서 실행할 수 있는 보안 매니저를 제공합니다.이 환경에서는 신뢰할 수 없는 코드가 특정 플랫폼 기능 및 API에 액세스하는 것을 방지함으로써 악성 소프트웨어나 잘못 작성된 소프트웨어로부터 보호할 수 있습니다.예를 들어 신뢰할 수 없는 코드는 로컬 파일 시스템에서 파일을 읽거나 쓰거나, 현재 사용자의 권한으로 임의 명령을 실행하거나, 통신 네트워크에 액세스하거나, 반사를 사용하여 개체의 내부 개인 상태에 액세스하거나, JVM을 종료하는 것을 방지할 수 있습니다.
Security Manager는 Java 프로그램에 암호 서명도 허용합니다.유저는 신뢰할 수 있는 엔티티로부터의 유효한 디지털 서명을 가진 코드가 신뢰할 수 없는 상황에서 완전한 특권으로 실행되도록 허용할 수도 있습니다.
또한 사용자는 다양한 소스의 프로그램에 대해 세분화된 액세스 제어 정책을 설정할 수도 있습니다.예를 들어, 사용자는 시스템 클래스만 완전히 신뢰해야 하며, 특정 신뢰할 수 있는 엔티티의 코드가 특정 파일을 읽을 수 있도록 허용해야 하며, 다른 모든 코드가 완전히 샌드박스화되어야 한다고 결정할 수 있습니다.
보안 API
Java Class Library는 표준 암호화 알고리즘, 인증 및 보안 통신 프로토콜과 같은 보안과 관련된 많은 API를 제공합니다.
Java 응용 프로그램의 보안 취약성의 잠재적 원인
Java 어플리케이션에는 보안 취약성의 원인이 여러 가지가 있습니다.이러한 원인은 Java 이외의 어플리케이션에서 공통적으로 발생하는 것도 있고 Java 플랫폼에서만 발생하는 것도 있습니다.(이러한 것은 보안을 중시하는 프로그래머가 염두에 둘 필요가 있는 취약성의 잠재적인 원인을 가리킵니다.이러한 취약성의 원인은 목록으로 의도되어 있지 않습니다.실제 취약성의 경우)
Java 및 비 Java 응용 프로그램에 공통적으로 발생할 수 있는 취약성의 잠재적 원인은 다음과 같습니다.
- 응용 프로그램이 보안에 의존하는 하드웨어 또는 운영 체제에서 제공하는 보호 메커니즘의 취약성
- 응용 프로그램 및/또는 런타임 구현에 사용할 수 있는 C 표준 라이브러리 등의 네이티브 라이브러리의 취약성
- 순전히 사용자 프로그램의 오류로 인해 발생하는 취약성(예를 들어 SQL 쿼리의 잘못된 구성 때문에 SQL 주입 취약성이 발생함)
그러나 Java 보안에 대한 많은 논의는 Java 플랫폼에 고유한 취약성의 잠재적 원인을 중점적으로 다루고 있습니다.여기에는 다음이 포함됩니다.
- Sandboxing 메커니즘의 취약성으로 인해 신뢰할 수 없는 바이트 코드가 보안 관리자에 의해 부과되는 제한을 회피할 수 있습니다.
- 응용 프로그램이 보안에 의존하는 Java 클래스 라이브러리의 취약성
Java 플랫폼의 취약성이 있다고 해서 모든 Java 응용 프로그램이 취약해지는 것은 아닙니다.예를 들어 Oracle에 의해 취약성과 패치가 발표되면 일반적으로 영향을 받는 애플리케이션 유형에 대한 세부 정보가 발표됩니다(예).
예를 들어 특정 JVM 구현의 보안 매니저 샌드박스 메커니즘에만 영향을 미치는 가상의 보안 결함은 임의의 신뢰할 수 없는 바이트 코드를 실행하는 Java 응용 프로그램만 손상됨을 의미합니다. 즉, 사용자가 실행 중인 모든 바이트 코드를 완전히 신뢰하고 제어하는 응용 프로그램은 손상되지 않습니다.즉, 예를 들어 JVM을 기반으로 하는 웹 브라우저 플러그인은 공개 웹사이트에서 다운로드되는 악의적인 애플릿에 취약하지만 관리자가 클래스 경로를 완전히 제어할 수 있는 동일한 버전의 JVM에서 실행되는 서버 측 [1]웹 애플리케이션은 영향을 받지 않습니다.Java 이외의 애플리케이션과 마찬가지로 보안 취약성은 처음에는 보안과 관련이 없는 것처럼 보일 수 있는 플랫폼의 일부에서 발생할 수 있습니다.예를 들어, 2011년에 Oracle은 버그에 대한 보안 수정을 발행했습니다.Double.parseDouble
메서드를 사용합니다.[2]이 메서드는 "12.34"와 같은 문자열을 동등한 배정도 부동 소수점 숫자로 변환합니다.이 버그로 인해 이 메서드는 특정 입력으로 호출되었을 때 무한 루프 상태가 되었습니다.이 버그는 보안에 영향을 미칩니다.예를 들어 웹 서버가 이 방법을 사용하여 사용자가 입력한 문자열을 폼으로 변환하는 경우 악의적인 사용자가 버그를 트리거하는 문자열을 입력할 수 있기 때문입니다.이로 인해 악의적인 요청을 처리하는 웹 서버 스레드가 무한 루프에 들어가 다른 사용자의 요청을 처리할 수 없게 됩니다.취약한 웹 서버에 대해 반복적으로 이 작업을 수행하면 서비스 거부 공격이 쉽게 발생합니다. 사용자 요청에 응답하는 모든 웹 서버의 스레드가 곧 무한 루프에 갇히고 웹 서버는 합법적인 사용자에게 전혀 서비스를 제공할 수 없게 됩니다.
보안 관리자에 대한 비판
Java 플랫폼의 보안 매니저(위에서 설명한 바와 같이 사용자가 신뢰할 수 없는 바이트 코드를 안전하게 실행할 수 있도록 설계됨)는 최근 몇 년 동안 악성코드에 취약하다는 비판을 받아 왔습니다.특히 자바 애플릿을 공공 웹사이트에서 다운로드하는 웹 브라우저 플러그인에서는 "Java in the browser"로 더 잘 알려져 있습니다..
이러한 취약성을 해결하기 위한 Oracle의 노력은 Java [3]8의 릴리스를 지연시키는 결과를 초래했습니다.
2012
Flashback이라고 불리는 OS X 트로이 목마는 Oracle이 [4]패치를 이미 릴리스했지만 Apple이 패치를 적용하지 않은 Java의 취약성을 이용했습니다.지난 4월 애플은 이후 [5]자바가 없는 Lion 사용자를 위한 제거 도구를 출시했다.Java 7 Update 4에서 Oracle은 Lion [6]이후 Java를 직접 출시하기 시작했습니다.
10월에 애플은 모든 [7]브라우저에서 자바 플러그인을 제거한 업데이트를 발표했다.이는 애플이 OS X를 [8]자바에서 멀어지게 하기 위한 움직임으로 여겨졌다.
2013
1월에는 이미 [9]야생에서 악용된 최신 버전 Java 7 Update 10을 포함한 모든 버전의 Java 7에서 제로 데이 취약성이 발견되었습니다.이 취약성은 이전 [10]취약성을 수정하기 위한 패치로 인해 발생했습니다.이에 대해 애플은 최신 버전의 자바 [11]플러그인을 블랙리스트에 올렸다.Oracle은 3일 이내에 패치(업데이트 11)[12]를 릴리스했습니다.Microsoft 는 Internet Explorer 버전 6, 7, 8 [13]용 패치도 릴리스 했습니다.
Cybeaspy 맬웨어 Red October는 2011년 [14]10월에 패치된 Java의 취약성을 악용하여 발견되었습니다.국경 없는 리포터 웹사이트도 업데이트 11 이전 [15]버전에서는 Java 취약성으로 인해 손상되었습니다.
업데이트 11이 출시된 후 [16]온라인에서 다른 취약성이 유포되기 시작했고 나중에 [17]확인되었습니다.또 자바 보안모드 자체가 [18]버그로 인해 취약하다는 사실도 드러났다.이에 대해 [19]Mozilla는 기본적으로 Firefox에서 Java(Adobe Reader 및 Microsoft Silverlight)를 비활성화했으며 Apple은 최신 Java 플러그인을 [20]다시 블랙리스트에 올렸습니다.
지난 2월, 트위터는 공격을 중단했다고 보도했다.트위터는 사용자들에게 자바를 비활성화할 것을 권고했지만, 그 [21]이유는 설명하지 않았다.이달 말 페이스북은 제로 데이 자바 [22]공격에 의해 해킹당했다고 보도했다.애플은 또한 공격을 [23]보고하였다.아이폰 개발자 포럼의 [24]침해가 트위터, 페이스북, 애플을 공격하는 데 이용된 것으로 드러났다.포럼 자체는 [25]위반 사실을 알지 못했다.트위터, 페이스북, 그리고 애플에 이어 마이크로소프트도 비슷한 피해를 [26]입었다고 보고했다.
Java 7의 원래 릴리스 및 업데이트 11 및 [27]15에서는 Java 보안 샌드박스를 완전히 바이패스할 수 있는 또 다른 취약성이 발견되었습니다.3월에는 제로 데이 Java의 [28]취약성을 부정 이용하는 McRat이라는 트로이 목마가 발견되었습니다.그런 다음 Oracle은 [29]이 취약성을 해결하기 위해 다른 패치를 릴리스했습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ CVE-2013-0422 보안경보 릴리즈되었습니다.오라클 코퍼레이션2013-04-24를 취득했습니다.
- ^ Oracle은 기록 시간에 Double.parseDouble 버그용 핫픽스를 출시합니다.정보Q. 2013-04-24가 검색되었습니다.
- ^ 열차를 보호하라.Oracle Java Platform Group의 수석 설계자인 Mark Reinhold의 블로그. 2013-04-18
- ^ Goodin, Dan (April 2, 2012). "Mac Flashback trojan exploits unpatched Java vulnerability, no password needed". Ars Technica. Retrieved February 18, 2014.
- ^ Geuss, Megan (April 14, 2012). "Flashback malware removal tool arrives for Java-less Mac users". Ars Technica. Retrieved February 18, 2014.
- ^ Foresman, Chris (April 27, 2012). "Forget Apple: Oracle to bring Java security fixes directly to Mac users". Ars Technica. Retrieved February 18, 2014.
- ^ Goodin, Dan (October 18, 2012). "Apple removes Java from all OS X Web browsers". Ars Technica. Retrieved February 18, 2014.
- ^ Cheng, Jacqui (December 23, 2012). "Where OS X security stands after a volatile 2012". Ars Technica. Retrieved February 18, 2014.
- ^ Goodin, Dan (January 10, 2013). "Critical Java zero-day bug is being "massively exploited in the wild" (Updated)". Ars Technica. Retrieved February 18, 2014.
- ^ Goodin, Dan (January 11, 2013). "Critical Java vulnerability made possible by earlier incomplete patch (Updated)". Ars Technica. Retrieved February 18, 2014.
- ^ Foresman, Chris (January 11, 2013). "Apple blacklists Java on OS X to prevent latest "critical" exploits". Ars Technica. Retrieved February 18, 2014.
- ^ Mattise, Nathan (January 14, 2013). "Oracle patches widespread Java zero-day bug in three days (Updated)". Ars Technica. Retrieved February 18, 2014.
- ^ Goodin, Dan (January 14, 2013). "Microsoft releases emergency update to patch Internet Explorer bug". Ars Technica. Retrieved February 18, 2014.
- ^ Goodin, Dan (January 15, 2013). "Red October relied on Java exploit to infect PCs". Ars Technica. Retrieved February 18, 2014.
- ^ Goodin, Dan (January 22, 2013). "Just-patched Java, IE bugs used to snare human rights sites". Ars Technica. Retrieved February 18, 2014.
- ^ Goodin, Dan (January 16, 2013). "$5,000 will buy you access to another, new critical Java vulnerability (Updated)". Ars Technica. Retrieved February 18, 2014.
- ^ Goodin, Dan (January 18, 2013). "Critical Java vulnerabilities confirmed in latest version". Ars Technica. Retrieved February 18, 2014.
- ^ Goodin, Dan (January 28, 2013). "Java's new "very high" security mode can't protect you from malware". Ars Technica. Retrieved February 18, 2014.
- ^ Goodin, Dan (January 31, 2013). "Firefox to block content based on Java, Reader, and Silverlight". Ars Technica. Retrieved February 18, 2014.
- ^ Foresman, Chris (January 31, 2013). "For second time in a month, Apple blacklists Java Web plugin". Ars Technica. Retrieved February 18, 2014.
- ^ Goodin, Dan (February 2, 2013). "Twitter detects and shuts down password data hack in progress". Ars Technica. Retrieved February 18, 2014.
- ^ Gallagher, Sean (February 15, 2013). "Facebook computers compromised by zero-day Java exploit". Ars Technica. Retrieved February 18, 2014.
- ^ Cheng, Jacqui (February 19, 2013). "Apple HQ also targeted by hackers, will release tool to protect customers". Ars Technica. Retrieved February 18, 2014.
- ^ Gallagher, Sean (February 19, 2013). "Facebook, Twitter, Apple hack sprung from iPhone developer forum". Ars Technica. Retrieved February 18, 2014.
- ^ Cheng, Jacqui (February 20, 2013). "Dev site behind Apple, Facebook hacks didn't know it was booby-trapped". Ars Technica. Retrieved February 18, 2014.
- ^ Bright, Peter (February 22, 2013). "Microsoft joins Apple, Facebook, and Twitter; comes out as hack victim". Ars Technica. Retrieved February 18, 2014.
- ^ Brodkin, Jon (February 25, 2013). "Java's latest security problems: New flaw identified, old one attacked". Ars Technica. Retrieved February 18, 2014.
- ^ Goodin, Dan (March 1, 2013). "Another Java zero-day exploit in the wild actively attacking targets". Ars Technica. Retrieved February 18, 2014.
- ^ Mattise, Nathan (March 5, 2013). "Oracle releases new Java patch to address this week's McRat problem". Ars Technica. Retrieved February 18, 2014.
외부 링크
- Java SE 보안오라클 코퍼레이션2013-04-24 다운로드.
- Java 프로그래밍 언어에 대한 안전한 코딩 가이드라인오라클 코퍼레이션2013-04-24 다운로드.
- Security Manager가 [최소 권한으로 실행(Run with last privilege)]원칙에 도움이 되는 방법