S/Key和OPIE数据库漏洞

- AV AC AU C I A
发布: 2025-04-13
修订: 2025-04-13

在使用S/Key或OPIE认证的服务器上存在一个安全漏洞。这个漏洞允许本地用户获得对S/Key或OPIE数据库的访问权。 S/Key是使用一次性口令技术的认证机制。系统管理员可以进行配置,使用户能够通过S/Key认证访问使用login(8)的任何服务,如Telnet和FTP。制定认证类型的配置文件是/etc/login.conf。 为了配置一个用户能够使用S/Key,管理员或该用户(如果程序是suid root)首先必须使用skeyinit(或keyinit)程序。这个程序初始化S/Key数据库(/etc/skeykeys)中的用户入口项。这个数据库文件包含输入S/Key口令时需要比较的信息。 OPIE (One-time Passwords In Everything)是基于S/Key的一次性口令方案。它实现了许多增强功能,但在管理方面仍然非常相似。不同之处是它使用opiepasswd程序和/etc/opiekeys数据库文件。 S/Key: 如果使用skeyinit程序,将调用libskey库的skeylookup函数。如果/etc/skeykeys数据库不存在,它将创建访问权限为644的文件。 有问题的代码如下: (from skey-2.2) /* See if the _PATH_SKEYFILE exists, and create it if not */ if(stat(_PATH_SKEYFILE,&statbuf) == -1 && errno == ENOENT){ mp->keyfile = fopen(_PATH_SKEYFILE,"w+"); (void) chmod(_PATH_SKEYFILE, 0644); OPIE: 如果使用opiepasswd程序,将调用libopie库的opieopen()函数。有两个函数opiereadrec()和opiewriterec()调用opieopen()函数时指定访问权限为644。如果/etc/opiekeys数据库不存在,则将创建权限为644的文件。 有问题的代码如下: The problem code is shown below. opiereadrec: if (!(f = __opieopen(KEY_FILE, 0,...

0%
暂无可用Exp或PoC
当前有0条受影响产品信息