Bagaimana cara memverifikasi paket besar dalam git repo aman?


9

Saya sedang melihat helm emacs khusus, yang memiliki sifat-sifat berikut:

  • memiliki ribuan komitmen
  • sebagian besar dikelola oleh satu pengguna
  • pengelola tidak memiliki profil lain (media sosial, dll.) yang dapat saya temukan pada beberapa pencarian
  • itu dipelihara secara aktif (hari ini)

Karena saya akan menginstal kode arbitrer di komputer saya untuk digunakan dalam editor teks saya, saya ingin memverifikasi apakah ini telah mengalami proses peninjauan. Saya ingin mengatakan "baik itu open source" tapi saya benar-benar jauh dari kemampuan elisp untuk mengaudit semua kode sendiri. Saya ingin berasumsi orang lain di komunitas telah memeriksanya tetapi yang mungkin salah, dan dua ada komitmen terbaru. Apakah ada strategi lain yang saya lewatkan?

Sebagai catatan, vektornya sederhana: "open source" tidak terlalu penting jika kontributor bekerja di bawah akun sekali pakai, atau jika tidak ada proses peninjauan.


6
" Verifikasi " adalah kata yang besar. Dalam arti kata yang biasa, saya pikir jawabannya adalah, "Kamu tidak (kamu tidak bisa)." Anda dapat mengikuti aktivitas pengembangan untuk perpustakaan, dan Anda dapat memeriksa tanda tangan digital dan semacamnya, tetapi tidak ada yang pasti dan pasti, saya percaya.
Drew

3
Pertanyaan bagus. FWIW, kode yang disertakan dengan Emacs ditinjau (melalui mailing-list emacs-diffs), tetapi jika beberapa kontributor menambah celah keamanan, saya yakin dia akan bisa melakukan itu tanpa diketahui. Tentu saja, saya akan terkejut jika tidak ada banyak lubang keamanan tidak disengaja di Emacs, jadi saya tidak yakin berapa banyak masalah yang mungkin terjadi. Jadi saya pikir untuk bisa mendapatkan jawaban yang lebih meyakinkan, kita perlu fokus pada ancaman sederhana yang spesifik (misalnya itu harus cukup mudah untuk memeriksa apakah kode melakukan semacam pengawasan tidak tersembunyi).
Stefan


1
@Stefan, saya hanya memikirkan pemeriksaan lokasi. Dari sudut pandang saya, mapatomsbisa dimasukkan ke dalam kelompok "berbahaya" bersama start-process, evaldan funcall. Tentu saja akan ada beberapa kesalahan positif, tetapi jika paket tidak menggunakan salah satu dari fungsi-fungsi itu, itu dapat ditandai sebagai tidak berbahaya dengan kepastian besar.
abo-abo

1
Anda harus menambahkan baru make-process, serta call-process, dbus-<foo>, make-network-stream, dan kemudian vc-do-command, vc-git-command, .... Dan jika Anda menempatkan evaldan funcalldalam kategori "berbahaya", maka sebagian besar / semua paket berbahaya.
Stefan

Jawaban:


7

Jawaban singkatnya adalah kecuali Anda membaca sendiri kode yang Anda percayai. Setelah mengatakan bahwa mempercayai proyek yang bersumber dari SCM hulu sedikit lebih aman daripada yang telah ditarik langsung dari Emacs Wiki misalnya. Namun pada dasarnya Anda mempercayai pembuat paket untuk tidak mengubah kejahatan dan menyalahgunakan kemampuan untuk menjalankan kode arbitrer di bawah sesi Emacs Anda.

Ada beberapa hal yang mungkin membuat Anda merasa lebih aman:

  • Tetap berpegang pada paket populer

Sementara paket populer tidak secara otomatis mendapatkan lebih banyak ulasan, fakta bahwa mereka memiliki lebih banyak pengguna berarti kemungkinan perilaku jahat terdeteksi sebelum itu mempengaruhi Anda meningkat.

  • Lihatlah metrik kode

Di github Anda bisa mendapatkan pandangan yang cukup bagus tentang riwayat kontribusi proyek. Bahkan jika penulis utama membuat sebagian besar komitmen memiliki banyak penulis menunjukkan ada orang lain yang memiliki minat aktif dalam stabilitas dan efektivitas kode.

  • Lebih suka GNU ELPA dan MELPA Stabil untuk repositori yang melacak HEADs (MELPA) atau mengizinkan pengiriman yang tidak diperiksa (Marmalade)

Meskipun tinggal di tepi pendarahan memiliki daya tarik tertentu bagi mereka yang menginginkan fitur mengkilap terbaru itu berarti Anda mungkin menjadi yang pertama menerima komit terbaru ke lingkungan Anda. Bahkan jika tidak berbahaya Anda mungkin mendapatkan paket dalam keadaan fluks sementara rilis "resmi" paling tidak akan memiliki semacam tinjauan sepintas. Sebagai contoh, paket-paket GNU ELPA hanya akan dikomit oleh para pengguna emacs-devel dengan hak yang dikomit.

Pada akhirnya saya yakin pada suatu saat akan ada pelanggaran keamanan melalui sistem paket bahkan jika itu hanya bukti eksperimen konsep. Itu akan menjadi titik Anda mungkin harus bergantung pada cadangan reguler Anda.


1
Marmalade adalah arsip yang buruk ketika datang itu "percaya". Ini memungkinkan siapa saja untuk mengunggah paket apa pun dengan nama apa pun, tanpa verifikasi atau ulasan. Dan itu tidak dipelihara dengan baik (lihat saja jumlah masalah terbuka).
lunaryorn

@Lunaryorn: Poin bagus, saya akan mengubah jawabannya.
stsquad

@Lunaryorn MELPA memiliki masalah yang lebih terbuka daripada repositori elmarmalade, jadi saya ragu ini adalah metrik yang dapat digunakan.
wasamasa

@stsquad Satu-satunya yang MELPA Stable berikan kepada Anda adalah tag dari rilis hal-hal yang akan berakhir di MELPA, jadi saya tidak melihat bagaimana itu lebih aman daripada menggunakan Marmalade.
wasamasa

1
@wasamasa Maaf, komentar saya diucapkan dengan buruk. Jumlah tersebut tidak memberitahu banyak, pasti, tapi masalah terbuka yang mengatakan: Ada reaksi nol pada isu-isu baru, tidak ada komentar, bahkan label atau tugas. Marmalade sudah mati.
lunaryorn
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.