A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/django/django/commit/52479acce792ad80bb0f915f20b835f919993c72 below:

[1.11.x] Fixed CVE-2019-14233 -- Prevented excessive HTMLParser recur… · django/django@52479ac · GitHub

File tree Expand file treeCollapse file tree 3 files changed

+21

-2

lines changed

Filter options

Expand file treeCollapse file tree 3 files changed

+21

-2

lines changed Original file line number Diff line number Diff line change

@@ -169,8 +169,8 @@ def strip_tags(value):

169 169

value = force_text(value)

170 170

while '<' in value and '>' in value:

171 171

new_value = _strip_once(value)

172 -

if len(new_value) >= len(value):

173 -

# _strip_once was not able to detect more tags or length increased

172 +

if len(new_value) >= len(value) or value.count('<') == new_value.count('<'):

173 +

# _strip_once wasn't able to detect more tags, or line length increased.

174 174

# due to http://bugs.python.org/issue20288

175 175

# (affects Python 2 < 2.7.7 and Python 3 < 3.3.5)

176 176

break

Original file line number Diff line number Diff line change

@@ -19,3 +19,20 @@ filters, which were thus vulnerable.

19 19

The regular expressions used by ``Truncator`` have been simplified in order to

20 20

avoid potential backtracking issues. As a consequence, trailing punctuation may

21 21

now at times be included in the truncated output.

22 + 23 +

CVE-2019-14233: Denial-of-service possibility in ``strip_tags()``

24 +

=================================================================

25 + 26 +

Due to the behavior of the underlying ``HTMLParser``,

27 +

:func:`django.utils.html.strip_tags` would be extremely slow to evaluate

28 +

certain inputs containing large sequences of nested incomplete HTML entities.

29 +

The ``strip_tags()`` method is used to implement the corresponding

30 +

:tfilter:`striptags` template filter, which was thus also vulnerable.

31 + 32 +

``strip_tags()`` now avoids recursive calls to ``HTMLParser`` when progress

33 +

removing tags, but necessarily incomplete HTML entities, stops being made.

34 + 35 +

Remember that absolutely NO guarantee is provided about the results of

36 +

``strip_tags()`` being HTML safe. So NEVER mark safe the result of a

37 +

``strip_tags()`` call without escaping it first, for example with

38 +

:func:`django.utils.html.escape`.

Original file line number Diff line number Diff line change

@@ -86,6 +86,8 @@ def test_strip_tags(self):

86 86

# caused infinite loop on Pythons not patched with

87 87

# http://bugs.python.org/issue20288

88 88

('&gotcha&#;<>', '&gotcha&#;<>'),

89 +

('><!' + ('&' * 16000) + 'D', '><!' + ('&' * 16000) + 'D'),

90 +

('X<<<<br>br>br>br>X', 'XX'),

89 91

)

90 92

for value, output in items:

91 93

self.check_output(f, value, output)

You can’t perform that action at this time.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4