от Valeri Dachew на 12-06-2000@6:50 GMT(+2)
Date: Fri, 9 Jun 2000 17:06:30 +0200
From: Markus Friedl markus.friedl@INFORMATIK.UNI-ERLANGEN.DE
Subject: OpenSSH's UseLogin option allows remote access with root privilege.
Опцията на OpenSSH UseLogin позволява на отдалечен потребител достъп с
root-ски привилегии.
1. Засегнати системи:
Инсталацията по подразбиране на OpenSSH не е засегната, доколкото
UseLogin по подразбиране е 'no'. Обаче, ако UseLogin е включена,
всички версии на OpenSSH преди 2.1.1 са засегнати.
2. Описание:
Ако опцията UseLogin е включена, OpenSSH сървърът (sshd) не
превключва на UID-а на влизащия потребител. Вместо това, sshd
разчита на login(1) да свърши работата. Обаче, ако потребителят
зададе команда за отдалечено изпълнение, login(1) не може да бъде
използван и sshd се проваля в слагането на верен UID. Командата се
стартира със същите привилегии като sshd (обикновено root-ски
привилегии).
3. Опасност:
Ако администратора включи UseLogin, някой потребител може да вземе
привилегирован достъп до сървъра, на който е пуснат sshd.
4. Кратковременно решение:
Не включвайте UseLogin на машината си или изключете UseLogin
отново в:
UseLogin no
5. Решение:
Обновете до OpenSSH-2.1.1 или приложете прикрепения patch.
OpenSSH-2.1.1 можете да намерите от www.openssh.com.
Приложение:
1. OpenSSH-1.2.2
--- sshd.c.orig Thu Jan 20 18:58:39 2000
+++ sshd.c Tue Jun 6 10:12:00 2000
@@ -2231,6 +2231,10 @@
struct stat st;
char *argv[10];
+ /* login(1) is only called if we execute the login shell */
+ if (options.use_login && command != NULL)
+ options.use_login = 0;
+
f = fopen("/etc/nologin", "r");
if (f) {
/* /etc/nologin exists. Print its contents and exit. */
2. OpenSSH-1.2.3
--- sshd.c.orig Mon Mar 6 22:11:17 2000
+++ sshd.c Tue Jun 6 10:14:07 2000
@@ -2250,6 +2250,10 @@
struct stat st;
char *argv[10];
+ /* login(1) is only called if we execute the login shell */
+ if (options.use_login && command != NULL)
+ options.use_login = 0;
+
f = fopen("/etc/nologin", "r");
if (f) {
/* /etc/nologin exists. Print its contents and exit. */
3. OpenSSH-2.1.0
--- session.c.orig Wed May 3 20:03:07 2000
+++ session.c Tue Jun 6 10:10:50 2000
@@ -744,6 +744,10 @@
struct stat st;
char *argv[10];
+ /* login(1) is only called if we execute the login shell */
+ if (options.use_login && command != NULL)
+ options.use_login = 0;
+
f = fopen("/etc/nologin", "r");
if (f) {
/* /etc/nologin exists. Print its contents and exit. */
[Коментари: 0] |