OpenSSL 1.0.2a Insecure Functions

2015.04.04
Credit: NicholasL
Risk: Low
Local: Yes
Remote: No
CVE: N/A
CWE: N/A

-=[Advanced Information Security Corp]=- Author: Nicholas Lemonias Report Date: 2/4/2015 Email: lem.nikolas@gmail.com Introduction ========== During a source-code audit of the OpenSSL v1.0.2a (Latest) implementation for linux; conducted internally by the Advanced Information Security Group, instances of insecure function use were observed, which could lead to a number of attacks. Software Overview =============== OpenSSL is an open-source implementation of the SSL and TLS protocol. The core library is written in the C Language, and implements basic cryptographic functions, and also provides various utility functions. Implementation versions are available for most UNIX-like operating systems (including Solaris,Linux, Mac OS X and the various open-source BSD operating systems), OpenVMS and Microsoft Windows. IBM provides a port for the System i (OS/400). OpenSSL is based on SSLeay by Eric Andrew Young and Tim Hudson, development of which unofficially ended on December 17, 1998, when Young and Hudson both started to work for RSA Security. PoC 1 - Code Snippet [CWE 362] ======================== (.../openssl-1.0.2a/crypto/rand/randfile.c:264) out = vms_fopen(file, "rb+", VMS_OPEN_ATTRS); if (out == NULL) out = vms_fopen(file, "wb", VMS_OPEN_ATTRS); #else if (out == NULL) out = fopen(file, "wb"); #endif if (out == NULL) goto err; #ifndef NO_CHMOD chmod(file, 0600); Description: The calling function does not provide any security validation controls, which would effectively prevent a race condition. The use of open() with the right attributes was agreed. PoC 2 - Code Snippet [CWE 690] ======================== (.../openssl-1.0.2a/crypto/mem.c:386) char *CRYPTO_strdup(const char *str, const char *file, int line) { char *ret = CRYPTO_malloc(strlen(str) + 1, file, line); strcpy(ret, str); return ret; } Description: The function call does not make sure that ret is not NULL. PoC 3 - Code Snippet [CWE 134] ======================== (.../openssl-1.0.2a/ssl/kssl.c:970) fprintf(stderr, (isprint(adata->contents[i])) ? "%c " : "%02x", adata->contents[i]); Description: The function call is prone to a format string attack. Appendices ========== Sincere Thanks to the OpenSSL team for their mutual efforts. References ========== [1] Oracle (2015). Basic Library Functions - Title: fopen() man pages section 3: Basic Library Functions [Online] Available at: http://docs.oracle.com/cd/E23824_01/html/821-1465/fopen-3c.html#scrolltoc [Last Accessed 2 April, 2015] [2] M. Howard, D. LeBlanc Writing Secure Code, Second Edition Microsoft Press


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2024, cxsecurity.com

 

Back to Top