VAR-201001-0329
Vulnerability from variot - Updated: 2022-05-04 09:19Apache HTTP Server is a popular web server. The Apache server's mod_proxy module has an integer overflow vulnerability that can eventually cause a heap overflow when performing character type conversions. The following is a vulnerable code snippet: \"./src/modules/proxy/proxy_util.c\"long int ap_proxy_send_fb(BUFF f, request_rec r, cache_req c, off_t len, int nowrite, int chunked, size_t recv_buffer_size){ ... size_t buf_size; long remaining = 0;... for (end_of_chunk = ok = 1; ok;) {... if (chunked) { long chunk_start = 0; n = 0; / start of a new chunk / if (end_of_chunk) { end_of_chunk = 0; / get the chunk size from the stream / chunk_start = ap_getline(buf, buf_size, f, 0); <-------------- -- [0] reading line from traffic (socket) if ((chunk_start <= 0) || ((size_t)chunk_start + 1 >= buf_size) || !ap_isxdigit(buf)) { n = -1; } / * parse the chunk size / else { remaining = ap_get_chunk_size(buf); <---------------- [1] convert readed data to 'long' size! if (re Maining == 0) { / Last chunk indicated, get footers /... } } else if (remaining < 0) { n = -1; ap_log_rerror(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r, \"proxy: Remote protocol error, invalid chunk size\"); } } } / read the chunk */ if (remaining > 0) { n = ap_bread(f, buf, MIN((int)buf_size, (int)remaining)); ------------- [2] convert 'long' to 'int' !!!! if (n > -1) { remaining -= n; end_of_chunk = (remaining == 0); } }......}When the server reads the HTTP header, if it is a block connection, it will wait at [0] and read the block size data from the socket, which will be received at [1]. The data to be converted to a long type; if there is a positive block size, [2] directly converts the long type to an int type, which is An integer overflow may be triggered on the amd64 architecture.
Show details on source website{
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/VARIoTentry#",
"affected_products": {
"@id": "https://www.variotdbs.pl/ref/affected_products"
},
"configurations": {
"@id": "https://www.variotdbs.pl/ref/configurations"
},
"credits": {
"@id": "https://www.variotdbs.pl/ref/credits"
},
"cvss": {
"@id": "https://www.variotdbs.pl/ref/cvss/"
},
"description": {
"@id": "https://www.variotdbs.pl/ref/description/"
},
"exploit_availability": {
"@id": "https://www.variotdbs.pl/ref/exploit_availability/"
},
"external_ids": {
"@id": "https://www.variotdbs.pl/ref/external_ids/"
},
"iot": {
"@id": "https://www.variotdbs.pl/ref/iot/"
},
"iot_taxonomy": {
"@id": "https://www.variotdbs.pl/ref/iot_taxonomy/"
},
"patch": {
"@id": "https://www.variotdbs.pl/ref/patch/"
},
"problemtype_data": {
"@id": "https://www.variotdbs.pl/ref/problemtype_data/"
},
"references": {
"@id": "https://www.variotdbs.pl/ref/references/"
},
"sources": {
"@id": "https://www.variotdbs.pl/ref/sources/"
},
"sources_release_date": {
"@id": "https://www.variotdbs.pl/ref/sources_release_date/"
},
"sources_update_date": {
"@id": "https://www.variotdbs.pl/ref/sources_update_date/"
},
"threat_type": {
"@id": "https://www.variotdbs.pl/ref/threat_type/"
},
"title": {
"@id": "https://www.variotdbs.pl/ref/title/"
},
"type": {
"@id": "https://www.variotdbs.pl/ref/type/"
}
},
"@id": "https://www.variotdbs.pl/vuln/VAR-201001-0329",
"affected_products": {
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/affected_products#",
"data": {
"@container": "@list"
},
"sources": {
"@container": "@list",
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/sources#"
},
"@id": "https://www.variotdbs.pl/ref/sources"
}
},
"data": [
{
"model": null,
"scope": null,
"trust": 0.6,
"vendor": "no",
"version": null
}
],
"sources": [
{
"db": "CNVD",
"id": "CNVD-2010-0173"
}
]
},
"description": {
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/description#",
"sources": {
"@container": "@list",
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/sources#"
}
}
},
"data": "Apache HTTP Server is a popular web server. The Apache server\u0027s mod_proxy module has an integer overflow vulnerability that can eventually cause a heap overflow when performing character type conversions. The following is a vulnerable code snippet: \\\"./src/modules/proxy/proxy_util.c\\\"long int ap_proxy_send_fb(BUFF *f, request_rec *r, cache_req *c, off_t len, int nowrite, int chunked, size_t recv_buffer_size){ ... size_t buf_size; long remaining = 0;... for (end_of_chunk = ok = 1; ok;) {... if (chunked) { long chunk_start = 0; n = 0; /* start of a new chunk */ if (end_of_chunk) { end_of_chunk = 0; /* get the chunk size from the stream */ chunk_start = ap_getline(buf, buf_size, f, 0); \u003c-------------- -- [0] reading line from traffic (socket) if ((chunk_start \u003c= 0) || ((size_t)chunk_start + 1 \u003e= buf_size) || !ap_isxdigit(*buf)) { n = -1; } / * parse the chunk size */ else { remaining = ap_get_chunk_size(buf); \u003c---------------- [1] convert readed data to \u0027long\u0027 size! if (re Maining == 0) { /* Last chunk indicated, get footers */... } } else if (remaining \u003c 0) { n = -1; ap_log_rerror(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r, \\\"proxy: Remote protocol error, invalid chunk size\\\"); } } } /* read the chunk */ if (remaining \u003e 0) { n = ap_bread(f, buf, MIN((int)buf_size, (int)remaining)); ------------- [2] convert \u0027long\u0027 to \u0027int\u0027 !!!! if (n \u003e -1) { remaining -= n; end_of_chunk = (remaining == 0); } }......}When the server reads the HTTP header, if it is a block connection, it will wait at [0] and read the block size data from the socket, which will be received at [1]. The data to be converted to a long type; if there is a positive block size, [2] directly converts the long type to an int type, which is An integer overflow may be triggered on the amd64 architecture.",
"sources": [
{
"db": "CNVD",
"id": "CNVD-2010-0173"
}
],
"trust": 0.6
},
"external_ids": {
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/external_ids#",
"data": {
"@container": "@list"
},
"sources": {
"@container": "@list",
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/sources#"
}
}
},
"data": [
{
"db": "CNVD",
"id": "CNVD-2010-0173",
"trust": 0.6
}
],
"sources": [
{
"db": "CNVD",
"id": "CNVD-2010-0173"
}
]
},
"id": "VAR-201001-0329",
"iot": {
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/iot#",
"sources": {
"@container": "@list",
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/sources#"
}
}
},
"data": true,
"sources": [
{
"db": "CNVD",
"id": "CNVD-2010-0173"
}
],
"trust": 0.06
},
"iot_taxonomy": {
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/iot_taxonomy#",
"data": {
"@container": "@list"
},
"sources": {
"@container": "@list",
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/sources#"
}
}
},
"data": [
{
"category": [
"Network device"
],
"sub_category": null,
"trust": 0.6
}
],
"sources": [
{
"db": "CNVD",
"id": "CNVD-2010-0173"
}
]
},
"last_update_date": "2022-05-04T09:19:26.600000Z",
"sources": {
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/sources#",
"data": {
"@container": "@list"
}
},
"data": [
{
"db": "CNVD",
"id": "CNVD-2010-0173"
}
]
},
"sources_release_date": {
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/sources_release_date#",
"data": {
"@container": "@list"
}
},
"data": [
{
"date": "2010-01-28T00:00:00",
"db": "CNVD",
"id": "CNVD-2010-0173"
}
]
},
"sources_update_date": {
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/sources_update_date#",
"data": {
"@container": "@list"
}
},
"data": [
{
"date": "2010-01-28T00:00:00",
"db": "CNVD",
"id": "CNVD-2010-0173"
}
]
},
"title": {
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/title#",
"sources": {
"@container": "@list",
"@context": {
"@vocab": "https://www.variotdbs.pl/ref/sources#"
}
}
},
"data": "Apache mod_proxy module HTTP block coded integer overflow vulnerability",
"sources": [
{
"db": "CNVD",
"id": "CNVD-2010-0173"
}
],
"trust": 0.6
}
}
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.