首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中标识的漏洞是否被认为是Jython中的一个漏洞?

Python中标识的漏洞是否被认为是Jython中的一个漏洞?
EN

Stack Overflow用户
提问于 2017-02-17 16:45:43
回答 2查看 415关注 0票数 2

lil混淆了Python、Jython和CPython之间的区别。我知道Jython是Python中的一个实现,CPython是相同的,只不过它是用C实现的。

但我真正困惑的是如何识别Python中的漏洞。比如下面的两个。

例如- CVE-2016-5636 -在这里,这个漏洞似乎不能在Jython中重现。

bug.cgi?id=1345857

同样地,看- CVE-2016-5699 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5699

它说:“HTTPConnection.putheader函数中的urllib2和CPython (又名Python)中的urllib在2.7.10和3.4.4之前的urllib漏洞允许远程攻击者通过URL中的CRLF序列注入任意headers。”

这是否意味着CVE-2016-5699在Jython中不会受到攻击?

所以总的来说-我想知道的是Python中的漏洞是否意味着它在Jython中是脆弱的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-17 17:08:36

不一定。当您引用诸如"Python“这样的东西时,您可能指的是两种不同的东西:

  • Python语言
  • Python虚拟机(VM)或其他特定实现

通常,Python语言在不同的实现中变化不大(很大)。改变的是语言的处理方式,包括调用什么外部系统功能。

Python没有任何其他区别,通常指的是标准实现CPython。正如您上面提到的,其他的是Jython和IronPython。每个虚拟机都在不同的VM中运行: Jython的JVM和IronPython的dotnet。例如,这些VM可能以不同的方式分配内存,从而防止在不同的VM中发生基于内存的错误。在提到的CVE-2016-5636中,注意到Jython调用Java版本的zip,而CPython可能调用C版本的zip。

简而言之--如果在语言处理问题的方式上出现了缺陷,那么它很可能会影响所有的实现。否则,您将需要逐个检查每个平台的漏洞。

增编:根据CVE的红帽追踪器-2016-5699,这是语言错误,因此在更新之前,所有实现都有可能(但不是保证)易受攻击。

票数 1
EN

Stack Overflow用户

发布于 2017-02-17 17:06:06

不一定,这完全取决于Python lib JPython使用哪些部分被修改,哪些部分被重新实现,哪些部分被省略.

urllib是标准Python发行版的一部分,您可以在标准CPython和JPython的Lib文件夹中找到urllib.py。可悲的是,他们甚至在他们的代码中声明了这一点:

代码语言:javascript
复制
__version__ = '1.17'    # XXX This version is not always updated :-(

因此,您不能依靠它来判断Python代码本身是否有错误(并且它是否在特定版本中得到了修复)。

此外,该漏洞不必与实际的Python包装在较低级别的字节码之间,最终与解释器有关--它可以存在于任何这些东西中,也可以是它们的组合。这就是为什么他们说这个漏洞并不存在于特定的CPython版本中,因为它假定整个堆栈以及标准库都会被更新。

因此,除非该漏洞具体说明问题发生在Python代码本身(例如,在示例中的urllib.py中),而且该问题在上述模块的特定版本中得到了修复,否则您无法确定问题不是由底层解释器造成的,如果是的话-- PVM和JVM是否都是如此。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42303200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档