2017-02-17 6 views
2

Python、Jython、およびCPythonの間の差分として混乱します。 私はJythonがJavaでPythonを実装していることを理解しています.CPythonはC言語で実装されている点を除いて同じです。Pythonで特定された脆弱性はJythonの脆弱性と考えられますか?

しかし、本当に混乱しているのはPythonの脆弱性です。 以下の2つのように。

たとえば、 - CVE-2016-5636 - ここでは、この脆弱性がJythonで再現できないようです。

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ヘッダーを注入することができます。

これは、CYB-2016-5699がJythonで脆弱ではないことを意味しますか?

全体的に - 私が疑問に思うのは、Pythonの脆弱性がJythonで脆弱であるということですか?

+0

私は自分の知識が十分ではないと思っていますが、これはエクスプロイトがどのように機能するかに完全に依存している可能性があります。命令がJavaバイトコードにコンパイルされ、実装固有のバグ(有効なタイプミスを読んでいる)が、ソースが同じでない限り、インタプリタ間で継続されない可能性があります。つまり、誤ってセマンティックエラーを引き継ぐのは簡単でしょうある言語から別の言語に翻訳するときに – Aaron

答えて

0

必ずしも、それはすべての

urllibは、標準のPythonディストリビューションの一部である...、修正され、使用して再実装され、省略されているPythonの標準のlib JPythonのの部分依存しており、あなたはありません標準CPythonとJPythonの両方のLibフォルダにurllib.pyというフォルダがあります。悲しいことに、彼らも自分のコードでそれを述べる:

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

だから、Pythonのコード自体が故障している(そして、それは特定のバージョンに固定されている)かどうかを把握することに頼ることはできません。

また、実際のP​​ythonが下位レベルのバイトコード、最終的にはインタプリタをラップするのに関連して、エクスプロイトは必要ではありません。そのため、スタック全体が標準のlibと一緒に更新されると仮定されているため、特定のCPythonバージョンでは悪用されていないと言われています。

問題がPythonコード自体にあると具体的に述べていない限り(例えば、あなたの例ではurllib.py)、それが上記モジュールの特定のバージョンで修正されていれば、それが期日ではないことを確信することはできませんPVMとJVMの両方に同じことが適用されるかどうかを判断します。

0

必ずしもそうではありません。通常

  • ザ・パイソン言語
  • ザ・パイソンの仮想マシン(VM)または他の特定の実装

:あなたは「パイソン」のようなものを参照するときは、潜在的に二つの異なるものを参照していますPython言語は、さまざまな実装間で(あまり)変更されません。どのような変更が、どの外部システム関数が呼び出されるかを含む言語の処理方法です。

他の区別のないPythonは通常、標準実装であるCPythonを指します。上記のように、JythonとIronPythonがあります。これらはそれぞれ異なるVMで動作します:JythonのJVMとIronPythonのdotnetこれらのVMは、たとえば、メモリを異なる方法で割り当てて、メモリベースのエラーが別のVMで発生しないようにすることができます。 CVE-2016-5636の場合、JythonはJavaバージョンのzipを呼び出し、CPythonはおそらくCバージョンのzipを呼び出します。

簡潔に言えば、言語が問題に近づく方法に欠陥が生じた場合、すべての実装に影響する可能性があります。それ以外の場合は、各プラットフォームの脆弱性を個別にチェックする必要があります。

補足:the Red Hat tracker for CVE-2016-5699によると、これは言語エラーであるため、更新するまですべての実装で脆弱である可能性がありますが、保証はされていません。

関連する問題