DoS via local buffer overflow
Bug #121780 reported by
Kees Cook
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Red Hat Cluster |
Fix Released
|
Low
|
|||
redhat-cluster-suite (Ubuntu) |
Fix Released
|
High
|
Fabio Massimo Di Nitto | ||
Feisty |
Fix Released
|
Undecided
|
Kees Cook | ||
Gutsy |
Fix Released
|
High
|
Fabio Massimo Di Nitto |
Bug Description
Binary package hint: redhat-
Fabio found an overflow in cman. Update pending...
CVE References
Changed in redhatcluster: | |
status: | Unknown → Fix Committed |
Changed in redhatcluster: | |
status: | Fix Committed → Fix Released |
Changed in redhatcluster: | |
importance: | Unknown → Low |
To post a comment you must log in.
Description of problem:
The funcion process_client in cman/daemon.c uses a static buffer
of size MAX_CLUSTER_MESSAGE + sizeof(struct sock_header).
MAX_CLUSTER_MESSAGE is 1500 bytes and struct sock_header at the timing of filing
this bug is 20 bytes.
2 problems are discovered here and fixed by the patch committed to head (see url).
The buffer is never cleaned and so data from previous usage will stay in the new
one.
There is no upper boundary check if the data we are reading from the socket are
larger than the buffer itself.
It was fairly simple to connect to cman and push a random 1520 bytes in the
socket that will corrupt memory and eventually crash cman/aisexec.
How reproducible:
always
Additional info:
cvs HEAD has been fixed but i am told to submit a BZ for people to look into the
different release branches.
Patrick has been informed and agreed on the solution on CVS head.
Submitting the bug on Lon request.