Pysa, penganalisis statik untuk Python yang ditawarkan oleh Facebook

Facebook telah memperkenalkan penganalisis statik sumber terbuka yang disebut "Pysa»(Python Static Analyzer) yang direka untuk mengenal pasti potensi kelemahan dalam kod Python.

pysa menyediakan analisis aliran data sebagai hasil pelaksanaan kod, yang membolehkan anda mengenal pasti banyak kelemahan dan masalah yang berpotensi privasi yang berkaitan dengan penggunaan data di tempat yang seharusnya tidak muncul.

Contohnya, Pysa dapat mengesan penggunaan data luaran mentah dalam panggilan yang melaksanakan program luaran, dalam operasi fail dan dalam konstruksi SQL.

Hari ini, kami berkongsi perincian mengenai Pysa, alat analisis statik sumber terbuka yang kami bina untuk mengesan dan mencegah masalah keselamatan dan privasi dalam kod Python. Tahun lalu, kami berkongsi bagaimana kami membuat Zoncolan, alat analisis statik yang membantu kami menganalisis lebih dari 100 juta baris kod hack dan telah membantu jurutera mencegah beribu-ribu masalah keselamatan yang berpotensi. Kejayaan itu memberi inspirasi kepada kami untuk mengembangkan Pysa, yang merupakan singkatan Python Static Analyzer.

Pysa menggunakan algoritma yang sama untuk melakukan analisis statik dan juga berkongsi kod dengan Zoncolan. Seperti Zoncolan, Pysa mengesan aliran data melalui program.

Pengguna mentakrifkan sumber (tempat di mana data penting berasal) dan juga tenggelam (tempat di mana data sumber tidak boleh berakhir).

Untuk aplikasi keselamatan, jenis sumber yang paling biasa adalah tempat di mana data yang dikendalikan oleh pengguna memasuki aplikasi, seperti kamus Django.

Penerima cenderung jauh lebih bervariasi, tetapi boleh merangkumi API yang menjalankan kod, seperti eval, atau API yang mengakses sistem fail, sepertios.open

Pysa melakukan pusingan analisis berulang untuk membina abstrak untuk menentukan fungsi mana yang mengembalikan data dari sumber dan fungsi mana yang mempunyai parameter yang akhirnya melanda sink. Sekiranya Pysa mendapati bahawa sumber akhirnya menghubungkan ke sink, ia akan melaporkan masalah. 

Kerja penganalisis ia bermula untuk mengenal pasti sumber data yang masuk dan panggilan berbahaya, di mana data asal tidak boleh digunakan.

Pysa memantau perjalanan data melalui rantai panggilan fungsi dan mengaitkan data asal dengan tempat yang berpotensi berbahaya dalam kod.

Kerana kami menggunakan kerangka pelayan Python sumber terbuka seperti Django dan Tornado untuk produk kami sendiri, Pysa mungkin mula menghadapi masalah keselamatan dalam projek yang menggunakan kerangka ini sejak pertama kali dijalankan. Menggunakan Pysa untuk kerangka kerja kita belum memiliki liputan umumnya semudah menambahkan beberapa baris konfigurasi untuk memberitahu Pysa di mana data masuk ke pelayan.

Kerentanan umum yang dikenalpasti oleh Pysa adalah masalah pengalihan terbuka (CVE-2019-19775) di platform pesanan Zulip, yang disebabkan oleh melewati parameter luaran yang tidak bersih ketika memaparkan gambar kecil.

Keupayaan penjejakan aliran data Pysa dapat digunakan untuk mengesahkan penggunaan bingkai tambahan dan untuk menentukan kepatuhan terhadap kebijakan penggunaan data pengguna.

Contohnya Pysa tanpa konfigurasi tambahan boleh digunakan untuk mengesahkan projek menggunakan kerangka kerja Django dan Tornado. Pysa juga dapat mengenal pasti kelemahan umum dalam aplikasi web, seperti penggantian SQL dan skrip lintas-laman web (XSS).

Di Facebook, penganalisis digunakan untuk mengesahkan kod perkhidmatan Instagram. Pada suku pertama 2020, Pysa membantu mengenal pasti 44% semua masalah yang ditemui oleh jurutera Facebook di pangkalan kod sisi pelayan Instagram.

Sebanyak 330 masalah dikenal pasti dalam proses tersebut pengesahan perubahan automatik menggunakan Pysa, 49 (15%) di antaranya dinilai signifikan dan 131 (40%) tidak berbahaya. Dalam 150 kes (45%) masalah disebabkan oleh positif palsu.

Penghurai yang baru dirancang sebagai tambahan pada alat pengesahan jenis Pyre dan diletakkan di repositori anda. Kod dikeluarkan di bawah lesen MIT.

Akhirnya jika anda ingin mengetahui lebih lanjut mengenainya, anda boleh menyemak butirannya dalam catatan asal. Pautan ini.


Kandungan artikel mematuhi prinsip kami etika editorial. Untuk melaporkan ralat, klik di sini.

Menjadi yang pertama untuk komen

Tinggalkan komen anda

Alamat email anda tidak akan disiarkan.

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

bool(benar)