Lucene search
K

SecureCRT Memory Corruption

🗓️ 15 May 2020 00:00:00Reported by Tavis OrmandyType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 178 Views

SecureCRT Bug Allows Remote Memory Corruption and Code Executio

Related
Code
ReporterTitlePublishedViews
Family
CNVD
VanDyke Software SecureCRT Input Validation Error Vulnerability
18 May 202000:00
cnvd
CVE
CVE-2020-12651
15 May 202017:31
cve
Cvelist
CVE-2020-12651
15 May 202017:31
cvelist
EUVD
EUVD-2020-4950
7 Oct 202500:30
euvd
NVD
CVE-2020-12651
15 May 202018:15
nvd
OSV
CVE-2020-12651
15 May 202018:15
osv
Prion
Integer overflow
15 May 202018:15
prion
RedhatCVE
CVE-2020-12651
9 Jan 202609:57
redhatcve
Tenable Nessus
VanDyke Software SecureCRT < 8.7.2 Memory Corruption
22 Jul 202000:00
nessus
Tenable Nessus
VanDyke Software SecureCRT < 8.7.2 Memory Corruption Vulnerability
29 May 202000:00
nessus
Rows per page
`securecrt: memory corruption in CSI functions CVE-2020-12651  
  
I noticed a vulnerability in SecureCRT that allows a remote system to corrupt memory in the terminal process and execute arbitrary code.  
  
The bug is that if you specify a line number to CSI functions that exceeds INT_MAX, the unsigned integer is used in signed comparisons and wraps around.  
  
https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_  
  
The terminal has an array of line buffers it uses for managing the current screen, and this bug means you can corrupt buffers outside of those array bounds.  
  
To reproduce this bug, follow the following steps:  
(I tested VT100 and XTerm emulation on Windows 10 x64, I assume otherplatforms/configurations are affected).  
  
  
1. Create a new SSH session, accept all the default settings.  
2. Connect to a remote system, and run this command (I assume gnu printf):  
  
$ printf \"\\e[%uM%*c\" -$((1 << 30)) $COLUMNS A  
  
That's CSI DL (Delete Line), but other line functions work too, e.g. IL, but it requires a longer reproducer:  
  
$ tput clear; tput cup 0 0; for ((i=0; i < 32; i++)); do  
> printf \"\\e[%huL%*c\\" $((-i & 0xffffffff)) $COLUMNS A  
> done  
  
In a real attack this might be an SSH banner or similar.  
  
This bug is subject to a 90 day disclosure deadline. After 90 days elapse,  
the bug report will become visible to the public. The scheduled disclosure  
date is 2020-06-27. Disclosure at an earlier date is possible if  
agreed upon by all parties.  
  
  
Related CVE Numbers: CVE-2020-12651.  
  
  
  
Found by: [email protected]  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation