2017-02-17 1 views
2

파이썬, 자이 썬, CPython 사이의 차이점으로 혼란스러운 이야기. 자이 썬은 Java로 파이썬을 구현 한 것으로 알고 있으며 CPython은 C로 구현된다는 점만 제외하면 동일합니다.파이썬에서 발견 된 취약점은 자이 썬의 취약점으로 간주됩니까?

하지만 실제로 혼동스러워하는 부분은 파이썬에서 취약점을 확인하는 것입니다. 아래와 같은 두 가지가 있습니다.

예 : - CVE-2016-5636 - 자이 썬에서 취약점을 재현 할 수없는 것으로 보입니다.

https://bugzilla.redhat.com/show_bug.cgi?id=1345857

마찬가지로보고 - CVE-2016-5699 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5699

는 말한다 CPython과 (일명 파이썬)에서 urllib2가와 URLLIB에서 HTTPConnection.putheader 기능에 "CRLF 주입 취약점 전 3.4.10 이전 2.7.10 및 3.x에서는 원격 공격자가 URL의 CRLF 시퀀스를 통해 임의의 HTTP 헤더를 주입 할 수 있습니다. "

자이 썬에서 CVE-2016-5699가 취약하지 않은 것을 의미합니까?

그래서 전체적으로 궁금합니다. 파이썬의 취약점이 자이 썬에서 취약하다는 것을 의미합니까?

+0

필자는 필자의 지식으로는 충분하지 않다고 생각하지만, 이는 익스플로잇이 어떻게 작동했는지에 전적으로 의존 할 것입니다. 명령어가 java 바이트 코드로 컴파일 될 때 추가 검사가 발생할 수 있으며, 소스가 동일하지 않으면 구현 특정 버그 (읽기 : 효과적인 오타)가 인터프리터에서 계속되지 않을 가능성이 있습니다. 즉, 실수로 의미 오류를 쉽게 캐스팅 할 수 있습니다 한 언어에서 다른 언어로 번역 할 때 코드에서. – Aaron

답변

0

반드시 그렇지는 모두 생략되어 다시 구현 수정 표준 lib 디렉토리에는 JPython이 사용하는 파이썬,,,의 부품

urllib

표준 파이썬 배포본의 일부입니다 의존하고 표준 CPython과 JPython의 Lib 폴더에서 urllib.py을 찾을 수 있습니다. 슬프게도, 그들은 심지어 자신의 코드에서 상태 :

__version__ = '1.17' # XXX This version is not always updated :-(

그래서 당신은 파이썬 코드 자체가 잘못이다 (그리고 특정 버전에서 해결)하는 경우 알아 내기 위해 그에 의존 할 수 없다.

또한 실제 파이썬이 하위 수준의 바이트 코드와 궁극적으로 인터프리터를 감싸는 것과 관련하여 익스플로잇을 수행 할 필요는 없습니다. 이러한 것들은 그 중 하나 또는 둘의 조합 일 수 있습니다. 그렇기 때문에 전체 스택이 표준 lib와 함께 업데이트된다고 가정하기 때문에 특정 CPython 버전에는이 익스플로잇이 존재하지 않는다고 말합니다.

문제가 파이썬 코드 자체 (예 : urllib.py)에 있음을 명시 적으로 밝히지 않고 해당 모듈의 특정 버전에서 수정 된 경우가 아니라면 그 이유가 확실하지 않을 수 있습니다 기본 인터프리터에게, 만약 그렇다면 PVM과 JVM 모두에 적용되는지 여부를 결정합니다.

0

반드시 그렇지는 않습니다. 일반적으로

  • 파이썬 언어
  • 파이썬 가상 머신 (VM) 또는 기타 특정 구현

: 당신이 "파이썬"같은 것을 참조 할 때, 당신은 잠재적으로 다른 두 가지 언급하는 파이썬 언어는 다른 구현에서 변경되지 않습니다. 외부 시스템 기능이 호출되는 것을 포함하여 언어가 처리되는 방법이 변경되었습니다.

파이썬은 일반적으로 표준 구현 인 CPython을 다른 구별없이 참조합니다. 위에서 언급 한 다른 것들은 Jython과 IronPython입니다. 이들 각각은 다른 VM에서 실행됩니다. 자이 썬 용 JVM과 IronPython 용 dotnet. 이러한 VM은 예를 들어 메모리를 다르게 할당하므로 메모리 기반 오류가 다른 VM에서 발생하는 것을 방지 할 수 있습니다. 언급 된 CVE-2016-5636의 경우 자이 썬은 Java 버전의 zip을 호출하고 CPython은 z 버전의 C 버전을 호출 할 가능성이 높습니다.

요약하면 언어가 문제에 접근하는 방식에 결함이 발생하면 모든 구현에 영향을 미칠 수 있습니다. 그렇지 않으면 각 플랫폼의 취약점을 개별적으로 확인해야합니다.

부록 : the Red Hat tracker for CVE-2016-5699에 따르면 이는 언어 오류이므로 업데이트 될 때까지 모든 구현에서 취약 할 수 있습니다 (그러나 보장 할 수는 없습니다).

관련 문제