Bug 1299471

Summary: qemu: Out-of-bounds read in sd
Product: [Other] Security Response Reporter: Adam Mariš <amaris>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED NOTABUG QA Contact:
Severity: low Docs Contact:
Priority: low    
Version: unspecifiedCC: abaron, alonbl, aortega, apevec, areis, ayoung, bmcclain, chrisw, dallan, dblechte, gklein, gkotton, jen, jschluet, knoel, lhh, lpeer, markmc, mgoldboi, michal.skrivanek, mkenneth, mrezanin, mst, osoukup, pbonzini, ppandit, rbalakri, rbryant, sclewis, security-response-team, sherold, tdecacqu, yeylon, ykaul, ylavi
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-01-21 05:18:30 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:    
Bug Blocks: 1299461    

Description Adam Mariš 2016-01-18 12:48:57 UTC
An out-of-bounds read was reported in sd.c allowing privileged user in guest to cause kernel DoS.

Vulnerable code:

//qemu/hw/sd/sd.c
static sd_rsp_type_t sd_normal_command(SDState *sd,
SDRequest req)
{
uint32_t rca = 0x0000;
uint64_t addr = (sd->ocr & (1 << 30)) ? (uint64_t) req.arg << 9 :
req.arg;

/* Not interpreting this as an app command */
sd->card_status &= ~APP_CMD;

//here!! sd_cmd_type is an array of 64 bytes,but req.cmd can be a value
from 0 to 0xff, so sd_cmd_type[req.cmd] could be make a out-of-bounds read
issue.
if (sd_cmd_type[req.cmd] == sd_ac || sd_cmd_type[req.cmd] == sd_adtc)
rca = req.arg >> 16;

...
}