Ortam değişkenleri Linux'ta yetkisi olmayan kullanıcılar tarafından görülebilir mi?


12

Linux'ta bir işlem için ortam değişkenlerinin diğer (root olmayan) kullanıcılar tarafından gözlemlenip gözlemlenmediğini belirlemeye çalışıyorum.

Acil kullanım durumu, ortam değişkenlerine sır koymaktır. Bu, web'in birçok yerinde güvensiz olarak tartışılıyor, ancak Linux'taki kesin pozlama noktasını sıfırlayamadım.

Ben am unutmayın değil dosyalarına cleartext sırlarını koyarak bahsediyor. Ayrıca ben am not değil kök hesabı (Ben nonstarter olarak kökü ile bir düşman gelen gizlemek sırları denemeden görünümüne) maruz kalma söz ediyor.

Bu soru benimkime, çevre değişkenlerini tamamen güvenliksiz olarak ya da sadece gizlenmiş olarak sınıflandıran yorumlarla ele alıyor gibi görünüyor, ancak bunlara nasıl erişiliyor?

Testlerimde, ayrıcalıksız bir kullanıcı işlem tablosundan ('ps auxwwe') başka bir kullanıcı için ortam değişkenlerini gözlemleyemez. Ortam değişkenlerini ayarlayan komutlar (örneğin dışa aktarma), onu işlem tablosuna yapmayan ve uzantı tarafından / proc / $ pid / cmdline içinde olmayan kabuk yapılarıdır. / proc / $ pid / environ yalnızca işlem sahibinin UID'si tarafından okunabilir.

Belki de karışıklık farklı işletim sistemleri veya sürümleri arasındadır. Web üzerindeki çeşitli (yakın zamanda) kaynaklar, ortam değişkenlerinin güvensizliğini azaltmaktadır, ancak farklı linux sürümlerinin yerinde kontrol edilmesi, bunun en azından 2007'ye geri dönmenin mümkün olmadığını gösteriyor (muhtemelen daha fazla ama kutularım yok test etmek için el).

Linux'ta, ayrıcalıklı olmayan bir kullanıcı başkalarının işlemleri için ortam değişkenlerini nasıl gözlemleyebilir?

Yanıtlar:


7

Gilles'in security.stackexchange.com ile ilgili benzer bir soruya çok kapsamlı bir cevapta açıkladığı gibi , süreç ortamlarına yalnızca sürecin sahibi olan (ve elbette kökü) kullanıcı tarafından erişilebilir.


Demek istediğin gönderinin bağlantısı var mı?
cyc115

@ cyc115 "cevap" kelimesine tıklayın :)
guntbert

6

Ortam değişkenleri oldukça güvenlidir. Bağlantı kurduğunuz soru, sistemin güvenliği ihlal edilirse, bir yapılandırma dosyası üzerinde ortam değişkenlerini kullanmanın tek güvenlik avantajının belirsiz olmasıdır. Yani birisi root erişimi kazanırsa ikisine de ulaşabilir.
Gizli veriler için ortam değişkenlerinin kullanılmasının 'belirsiz' kabul edilip edilmeyeceği de tartışmalıdır. Bu çok yaygın bir uygulamadır ve bu yüzden böyle düşünmem.

Bir ortam değişkeninde depolanan verilere yalnızca 2 yerde erişebilirsiniz:

1. Sürecin çalışma ortamı

İşlem çalışırken, söz konusu işlemin ortam değişkenlerine erişilebilir /proc/$PID/environ. Ancak, yalnızca işlemin veya kökün sahibi olan kullanıcı bu dosyaya erişebilir.

2. Ortam değişkenlerinin kaynağı

Bir init betiği kullanıyorsanız ve değişkenler bu init betiğinde depolanıyorsa, değişkenler elbette bu betiği okuyarak elde edilebilir.

Veya ortam değişkenleri başka bir yerden geliyorsa, nerede olursa olsun.

3. 'ps' çıkışı

Evet, 2 dediğimi biliyorum ve iyi bir sistemde 2 olacak. Ancak yönetici ne yaptığını bilmiyorsa 3. bir cadde açmak mümkündür.

Süreç aşağıdaki gibi bir şeyle başlatılırsa sh -c 'cd /foo/bar; POP=tart /my/executable', o shsüreç şu şekilde görünür olacaktır 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
eDeğiştiriciden de bahsetmelisiniz ps. Ayrıca yalnızca kullanıcının sahip olduğu işlemlerin ortamını görüntülemeye izin verir.
Barmar

1
Bir olası konum daha: ortam değişkeni kabuk (ör. export FOO=bar) Aracılığıyla ayarlanmışsa ~/.bash_history, kullanıcı kaydetmemesi veya kaldırması için önlem almadıysa geçmiş dosyasında da (ör. ) Görünebilir.
tavnab
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.