当入侵者在系统取得一定权限后,他们通常会在系统中植入恶意代码,并利用这些代码为日后的入侵提供方便。增加或修改 ELF 文件正是入侵者植入恶意代码的常用途径。本文将描述一种 Linux 下 ELF 文件的代码签名及验证机制的设计与实现,这种机制能有效防止基于 ELF 文件的恶意代码的入侵,并同时提供了灵活的分级验证机制,使系统在安全性与效率方面取得最佳平衡。
1 引言
随着 Linux 的不断发展,已有越来越多的人开始推广和使用 Linux,其安全性也受到越来越多的挑战。ELF(Executable and Linkable Format)[1] 作为 Linux 下最主要的可执行二进制文件格式,自然成了病毒及各种恶意代码的攻击目标。事实证明,有不少 Linux 下的病毒程序就是通过直接修改 ELF 文件的方法来实现入侵的 [10]。传统的 Unix 系统(包括 Linux)并不会对执行的代码进行完整性和合法性检测,因而让很多病毒程序以及木马程序有机可乘。
目前,也有很多系统采用安装时验证代码签名的机制,如微软的 windows 系列操作系统。但是,仅仅在安装时验证代码签名存在很大的局限性,它无法检测程序安装后对代码的任何修改。因此,采用执行时验证代码签名的机制将大大提高系统的安全性。但安全性增强的同时却导致了系统效率的降低。为了取得安全性与效率的平衡,本文提出了分级验证的机制。对安全要求高的系统,则牺牲一定的效率来提高系统安全性;对安全性要求较低的系统,则牺牲一定的安全性来提高系统效率。
参考资料
- Tool Interface Standard (TIS) Portable Formats Specification Version 1.1:TIS Committee,October 1993
- Juha-Petri K?rn? and Mika Leppinen:Signing executables in Linux. April 7th,1998
- W.A. Arbaugh,G.Ballintijn,L.van Doorn:Signed Executables for Linux. Tech. Report CS-TR-4259. University of Maryland,June 4,2001
- Luigi Catuogno and Ivan Visconti:A Format-Independent Architecture for Run-Time Integrity Checking of Executable Code. Dipartimento di Informatica ed Applicazioni Università di Salerno Via S. Allende,84081 Baronissi (SA),Italy
- OpenSSL cryptographic library man page,http://www.openssl.org/docs/crypto/crypto.html
- OpenSSL SSL/TLS library man page,http://www.openssl.org/docs/ssl/ssl.html