Bug 1171182 (CVE-2014-9140)

Summary: CVE-2014-9140 tcpdump: incorrect handling of PPP packets printing
Product: [Other] Security Response Reporter: Martin Prpič <mprpic>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED WONTFIX QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: athmanem, carnil, mmilgram, msekleta, sisharma
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1176690 (view as bug list) Environment:
Last Closed: 2021-06-14 15:04:08 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On: 1171184    
Bug Blocks: 1165164    

Description Martin Prpič 2014-12-05 15:45:16 UTC
It was discovered that tcpdump incorrectly handled the printing of PPP packets. A remote attacker could use this flaw to cause tcpdump to crash, resulting in a denial of service, or possibly execute arbitrary code.

Upstream patch:


Comment 1 Martin Prpič 2014-12-05 15:50:43 UTC
Created tcpdump tracking bugs for this issue:

Affects: fedora-all [bug 1171184]

Comment 2 Fedora Update System 2014-12-18 06:04:09 UTC
tcpdump-4.5.1-3.fc20 has been pushed to the Fedora 20 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 3 Fedora Update System 2015-01-07 23:52:02 UTC
tcpdump-4.6.2-3.fc21 has been pushed to the Fedora 21 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 5 Siddharth Sharma 2015-01-29 06:19:45 UTC

In function ppp_hdlc()

1. It declares u_char *b but at line 
   b = (uint8_t *)malloc(length);

it typecast into uint and assigns to variable b which is declared as u_char

2. for (s = (u_char *)p, t = b, i = length; i > 0; i--) {
 		c = *s++;
                if (c == 0x7d) {
                      if (i > 1) {
   here in code there is no checking for variable 's' if it contains anything      further or not, if 's' does not contain anything then it should break here to have proper bounds checking.
                              c = *s++ ^ 0x20; 
                      } else
                *t++ = c;

Remote attacker would only be able to DOS the application, RCE (Remote Code Execution) is unlikely to happen. So the impact of this is considered to be moderate only.

Comment 6 Siddharth Sharma 2015-04-30 07:53:48 UTC

Red Hat Product Security has rated this issue as having moderate security impact, a future update may address this flaw in tcpdump.

Comment 7 Product Security DevOps Team 2021-06-14 15:04:08 UTC
This bug is now closed. Further updates for individual products will be reflected on the CVE page(s):