Ack: [Precise Quantal CVE-2013-1929] tg3: fix length overflow in VPD firmware parsing
Brad Figg
brad.figg at canonical.com
Fri Apr 12 14:12:13 UTC 2013
On 04/12/2013 06:46 AM, Luis Henriques wrote:
> From: Kees Cook <keescook at chromium.org>
>
> CVE-2013-1929
>
> BugLink: http://bugs.launchpad.net/bugs/1167065
>
> Commit 184b89044fb6e2a74611dafa69b1dce0d98612c6 ("tg3: Use VPD fw version
> when present") introduced VPD parsing that contained a potential length
> overflow.
>
> Limit the hardware's reported firmware string length (max 255 bytes) to
> stay inside the driver's firmware string length (32 bytes). On overflow,
> truncate the formatted firmware string instead of potentially overwriting
> portions of the tg3 struct.
>
> http://cansecwest.com/slides/2013/PrivateCore%20CSW%202013.pdf
>
> Signed-off-by: Kees Cook <keescook at chromium.org>
> Reported-by: Oded Horovitz <oded at privatecore.com>
> Reported-by: Brad Spengler <spender at grsecurity.net>
> Cc: stable at vger.kernel.org
> Cc: Matt Carlson <mcarlson at broadcom.com>
> Signed-off-by: David S. Miller <davem at davemloft.net>
> (cherry picked from commit 715230a44310a8cf66fbfb5a46f9a62a9b2de424)
>
> Signed-off-by: Luis Henriques <luis.henriques at canonical.com>
> ---
> drivers/net/ethernet/broadcom/tg3.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
> index ca3be73..c2450f4 100644
> --- a/drivers/net/ethernet/broadcom/tg3.c
> +++ b/drivers/net/ethernet/broadcom/tg3.c
> @@ -13617,8 +13617,11 @@ static void __devinit tg3_read_vpd(struct tg3 *tp)
> if (j + len > block_end)
> goto partno;
>
> - memcpy(tp->fw_ver, &vpd_data[j], len);
> - strncat(tp->fw_ver, " bc ", vpdlen - len - 1);
> + if (len >= sizeof(tp->fw_ver))
> + len = sizeof(tp->fw_ver) - 1;
> + memset(tp->fw_ver, 0, sizeof(tp->fw_ver));
> + snprintf(tp->fw_ver, sizeof(tp->fw_ver), "%.*s bc ", len,
> + &vpd_data[j]);
> }
>
> partno:
>
--
Brad Figg brad.figg at canonical.com http://www.canonical.com
More information about the kernel-team
mailing list