Catatan terbitan Django 1.5.3¶
September 10, 2013
Ini adalah Django 1.5.3, terbitan ketiga di rangkaian Django 1.5. Itu mengalamatkan satu masalah keamanan dan juga mengandung sebuah fitur pilihan untuk meningkatkan keamanan dari django.contrib.sessions
.
Kerentanan lintasan direktori dalam etiket cetakan ssi
¶
Dalam versi sebelumnya Django itu telah memungkinkan melewatkan pengaturan ALLOWED_INCLUDE_ROOTS
digunakan untuk keamanan dengan etiket cetakan ssi
dengan menentukan jalur relatif yang dimulai dengan satu dari akar yang diizinkan. Sebagai contoh, jika ALLOWED_INCLUDE_ROOTS = ("/var/www",)
berikutnya akan mungkin:
{% ssi "/var/www/../../etc/passwd" %}
Dalam praktiknya ini bukan sangat masalah umum, ketika itu akan membutuhkan cetakan penulis untuk menaruh berkas ssi
di variabel terkendali-pengguna, tetapi itu memungkinkan pada dasarnya.
Mengurangi kerentenan pengerjaan kode-terpencil di django.contrib.sessions
¶
django.contrib.sessions
currently uses pickle
to serialize
session data before storing it in the backend. If you're using the signed
cookie session backend and SECRET_KEY
is
known by an attacker (there isn't an inherent vulnerability in Django that
would cause it to leak), the attacker could insert a string into their session
which, when unpickled, executes arbitrary code on the server. The technique for
doing so is simple and easily available on the internet. Although the cookie
session storage signs the cookie-stored data to prevent tampering, a
SECRET_KEY
leak immediately escalates to a remote code execution
vulnerability.
Serangan ini dapat dikurangi dengan menserialisasikan sesi data menggunakan JSON daripada pickle
. Untuk memudahkan ini, Django 1.5.3 memperkenalkan pengaturan baru, SESSION_SERIALIZER
, untuk menyesuaikan bentuk serialisasi sesi. Untuk kesesuaian kebelakang, awalan pengaturan ini untuk menggunakan pickle
. Selagi serialisasi JSON tidak mendukung semua obyek Python seperti pickle
lakukan, kami sangat menganjurkan mengganti ke JSON-serialisasi nilai. Juga, seperti JSON membutuhkan kunci deretan karakter, anda akan sepertinya berjalan kedalam masalah jika anda menggunakan kuncu bukan-deretan karakter di request.session
. Lihat dokumentasi Serialisasi sesi untuk rincian lebih.