Bug 206270 - CVE-2006-4997 IP over ATM clip_mkip dereference freed pointer
CVE-2006-4997 IP over ATM clip_mkip dereference freed pointer
Product: Red Hat Enterprise Linux 3
Classification: Red Hat
Component: kernel (Show other bugs)
All Linux
medium Severity medium
: ---
: ---
Assigned To: Thomas Graf
Brian Brock
: Security
Depends On:
  Show dependency treegraph
Reported: 2006-09-13 08:43 EDT by Marcel Holtmann
Modified: 2014-06-18 04:29 EDT (History)
4 users (show)

See Also:
Fixed In Version: RHSA-2006-0710
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2006-10-19 08:46:07 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)
proposed patch (475 bytes, patch)
2006-10-02 13:25 EDT, Thomas Graf
no flags Details | Diff

  None (edit)
Description Marcel Holtmann 2006-09-13 08:43:16 EDT
Reported by ADLab, Venustech info Ltd CHINA:

There is a vulnerability in function clip_mkip() in net/atm/clip.c. When
re-processing received data, a struct sk_buff pointer skb may be dereferenced
after a free operation. It will lead to a kernel panic and denying further service.
clip_mkip (clip.c):

502         while ((skb = skb_dequeue(&copy)) != NULL)
503                 if (!clip_devs) {
504                         atm_return(vcc,skb->truesize);
505                         kfree_skb(skb);
506                 }
507                 else {
508                         unsigned int len = skb->len;
510                         clip_push(vcc,skb);
511                         PRIV(skb->dev)->stats.rx_packets--;
512                         PRIV(skb->dev)->stats.rx_bytes -= len;
513                 }
At line 511, PRIV(skb->dev) reference skb->dev; but after call clip_push at line
510, skb may be freed.
clip_push (clip.c):

198 static void clip_push(struct atm_vcc *vcc,struct sk_buff *skb)
199 {


234         memset(ATM_SKB(skb), 0, sizeof(struct atm_skb_data));
235         netif_rx(skb);
236 }
netif_rx (dev.c):

1392 int netif_rx(struct sk_buff *skb)
1393 {


1428         kfree_skb(skb);	//drop skb
1429         return NET_RX_DROP;
1430 }

In netif_rx(), skb may be dropped during processing for congestion control or by
the protocol layers; the return value NET_RX_DROP is used to identify skb
pointer arg is dropped(freed).
Comment 2 Thomas Graf 2006-10-02 13:25:31 EDT
Created attachment 137572 [details]
proposed patch
Comment 3 RHEL Product and Program Management 2006-10-09 11:18:40 EDT
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux maintenance release.  Product Management has requested
further review of this request by Red Hat Engineering, for potential
inclusion in a Red Hat Enterprise Linux Update release for currently deployed
products.  This request is not yet committed for inclusion in an Update
Comment 4 Jay Turner 2006-10-10 08:10:55 EDT
QE ack for U9.
Comment 5 Ernie Petrides 2006-10-10 18:20:30 EDT
A fix for this problem has just been committed to the RHEL3 U9
patch pool this evening (in kernel version 2.4.21-47.2.EL).
Comment 6 Ernie Petrides 2006-10-13 17:51:46 EDT
A fix for this problem has also been committed to the RHEL3 E9
patch pool this evening (in kernel version 2.4.21-47.0.1.EL).
Comment 9 Red Hat Bugzilla 2006-10-19 08:46:09 EDT
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.


Note You need to log in before you can comment on or make changes to this bug.