Apakah variabel lingkungan dapat dilihat oleh pengguna yang tidak berhak di Linux?


12

Saya mencoba menentukan apakah, di Linux, variabel lingkungan untuk suatu proses dapat diamati oleh pengguna (non-root) lainnya.

Kasus penggunaan langsung adalah memasukkan rahasia ke dalam variabel lingkungan. Ini dibahas di banyak tempat di seluruh web sebagai tidak aman, tapi saya belum bisa membidik titik eksposur yang tepat di Linux.

Perhatikan bahwa saya tidak berbicara tentang memasukkan rahasia cleartext ke dalam file. Perhatikan juga bahwa saya tidak berbicara tentang pemaparan ke akun root (saya melihat upaya untuk menyembunyikan rahasia dari musuh dengan root sebagai nonstarter).

Pertanyaan ini muncul untuk menjawab pertanyaan saya, dengan komentar yang mengklasifikasikan variabel lingkungan sebagai benar-benar tanpa keamanan, atau hanya dikaburkan, tetapi bagaimana seseorang mengaksesnya?

Dalam pengujian saya, satu pengguna yang tidak memiliki hak tidak dapat mengamati variabel lingkungan untuk pengguna lain melalui tabel proses ('ps auxwwe'). Perintah yang mengatur variabel lingkungan (mis. Ekspor) adalah shell bawaan yang tidak membuatnya ke tabel proses dan dengan ekstensi tidak di / proc / $ pid / cmdline. / proc / $ pid /viron hanya dapat dibaca oleh UID dari pemilik proses.

Mungkin kebingungannya adalah antara sistem operasi atau versi yang berbeda. Berbagai sumber (baru-baru ini) di web mengutuk ketidakamanan variabel lingkungan, tetapi pengecekan langsung saya terhadap berbagai versi linux tampaknya mengindikasikan bahwa ini tidak mungkin dilakukan paling tidak pada 2007 (mungkin lebih jauh tetapi saya tidak memiliki kotak pada tangan untuk menguji).

Di Linux, bagaimana pengguna yang tidak memiliki hak istimewa dapat mengamati variabel lingkungan untuk proses orang lain?

Jawaban:


7

Seperti yang dijelaskan Gilles dalam jawaban yang sangat komprehensif untuk pertanyaan serupa pada security.stackexchange.com, lingkungan proses hanya dapat diakses oleh pengguna yang memiliki proses (dan root tentu saja).


Adakah tautan ke pos yang Anda maksud?
cyc115

@ cyc115 klik pada kata "answer" :)
guntbert

6

Variabel lingkungan banyak yang aman. Pertanyaan yang Anda tautkan adalah bahwa jika sistem dikompromikan, satu-satunya manfaat keamanan menggunakan variabel lingkungan di atas file konfigurasi adalah ketidakjelasan. Artinya, jika seseorang telah mendapatkan akses root, mereka bisa mendapatkan keduanya.
Apakah menggunakan variabel lingkungan untuk data rahasia dianggap 'tidak jelas' juga dapat diperdebatkan. Ini adalah praktik yang sangat umum, dan karena itu saya tidak akan menganggapnya demikian.

Anda hanya dapat mengakses data yang disimpan dalam variabel lingkungan di 2 tempat:

1. Lingkungan proses yang berjalan

Ketika proses sedang berjalan, variabel lingkungan dari proses itu dapat diakses melalui /proc/$PID/environ. Namun, hanya pengguna yang memiliki proses, atau root, yang dapat mengakses file itu.

2. Sumber variabel lingkungan

Jika Anda menggunakan skrip init, dan variabel disimpan dalam skrip init itu, variabel tentu saja dapat diperoleh dengan membaca skrip itu.

Atau jika variabel lingkungan berasal dari tempat lain, maka di mana pun itu.

3. keluaran 'ps'

Ya, saya tahu saya mengatakan 2, dan dalam sistem yang layak, itu akan menjadi 2. Namun jika admin tidak tahu apa yang dia lakukan, mungkin untuk membuka jalan ke-3.

Jika proses diluncurkan melalui sesuatu seperti sh -c 'cd /foo/bar; POP=tart /my/executable', maka shproses itu akan terlihat di ps:

$ sh -c 'cd /; POP=tart sleep 10' &
[1] 3085

$ ps ax | grep POP
phemmer   3085  14   5  0.0  0.0 SN         00:00 sh -c cd /; POP=tart sleep 10

1
Anda juga harus menyebutkan epengubah ke ps. Ini juga hanya memungkinkan melihat lingkungan proses yang dimiliki pengguna.
Barmar

1
Satu lagi lokasi yang mungkin: jika variabel lingkungan disetel melalui shell (mis. export FOO=bar) Maka itu juga dapat muncul dalam file histori (mis. ~/.bash_history) Jika pengguna tidak mengambil tindakan pencegahan untuk mencegahnya menyimpan, atau menghapusnya.
tavnab
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.