The Django team discovered and fixed a small security hole in the
django/bin/compile-messages.py helper script, which is the script that
compiles message files (.po files) into binary format (.mo files).

The compile-messages.py script uses the name of the .po file to build
arguments to a system command, and it didn't sufficiently validate the
filename for potentially malicious content.

Users who relied on the translation files provided with Django, or who
wrote and compiled their own translations, were never at risk. Users
who never ran the compile-messages.py script were never at risk. Only
users who compiled third-party translations without examining the
filenames first were potentially vulnerable.

No exploit based on this vulnerability, proof-of-concept or otherwise,
is known to have existed.

Due to the nature of the vulnerability, we do not feel this merits a
new release of Django. However, users who rely on third parties to
supply translation files -- such as Django's own i18n maintainers --
are encouraged either to patch their code in one of these ways:

* Upgrade to the latest Django trunk (the Django development version).

* Simply overwrite your copy of django/bin/compile-messages.py with
the new version found here:

    
http://code.djangoproject.com/svn/django/trunk/django/bin/compile-messages.py

This file has not changed in any backwards-incompatible way since
before Django version 0.90, so it's safe to copy over, regardless of
which Django version you're using.

* We've applied the patches to Subversion "bug-fix" branches for both
previous Django versions, 0.90 and 0.91. You can access those branches
here:

    svn co http://code.djangoproject.com/svn/django/branches/0.90-bugfixes
    svn co http://code.djangoproject.com/svn/django/branches/0.91-bugfixes

If none of those solutions is possible, we strongly encourage users to
examine the names of translation files carefully before compiling
them. Of course, the same standards should be applied when examining
translation files from untrusted third parties as would be applied to
any code received from an untrusted source.

(All users are advised, as always, to keep in mind the risks of using
*any* file from a third-party source, and to carefully examine any
third-party code before executing it.)

This security hole was fixed in changeset 3592. The patch is available here:

    http://code.djangoproject.com/changeset/3592

If you're interested in how we fixed the error, see the excellent
document "String replacements in command lines":
http://cyberelk.net/tim/articles/cmdline/ar01s02.html .

Thanks to Rene Dudfield for reporting this.

-The Django team

(Cross-posted to django-announce, django-i18n, django-developers and
django-users. We recently created the django-announce mailing list but
it isn't yet well-known -- hence the wide net of mailing lists.)

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django I18N" group.
To post to this group, send email to Django-I18N@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/Django-I18N
-~----------~----~----~----~------~----~------~--~---

Reply via email to