от Valeri Dachew(12-06-2000)

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. */



<< Излезе версия 1.2.0 на XMMS | Българското Линукс Общество в Европа >>