GHSA-vq36-27g6-p492
Vulnerability from github
7.2 (High) - CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:H/SC:N/SI:N/SA:N
Impact
TensorFlow's type inference can cause a heap OOB read as the bounds checking is done in a DCHECK
(which is a no-op during production):
cc
if (node_t.type_id() != TFT_UNSET) {
int ix = input_idx[i];
DCHECK(ix < node_t.args_size())
<< "input " << i << " should have an output " << ix
<< " but instead only has " << node_t.args_size()
<< " outputs: " << node_t.DebugString();
input_types.emplace_back(node_t.args(ix));
// ...
}
An attacker can control input_idx
such that ix
would be larger than the number of values in node_t.args
.
Patches
We have patched the issue in GitHub commit c99d98cd189839dcf51aee94e7437b54b31f8abd.
The fix will be included in TensorFlow 2.8.0. This is the only affected version.
For more information
Please consult our security guide for more information regarding the security model and how to contact us with issues and questions.
{ "affected": [ { "package": { "ecosystem": "PyPI", "name": "tensorflow" }, "ranges": [ { "events": [ { "introduced": "2.8.0-rc0" }, { "fixed": "2.8.0" } ], "type": "ECOSYSTEM" } ], "versions": [ "2.8.0-rc0" ] }, { "package": { "ecosystem": "PyPI", "name": "tensorflow-cpu" }, "ranges": [ { "events": [ { "introduced": "2.8.0-rc0" }, { "fixed": "2.8.0" } ], "type": "ECOSYSTEM" } ], "versions": [ "2.8.0-rc0" ] }, { "package": { "ecosystem": "PyPI", "name": "tensorflow-gpu" }, "ranges": [ { "events": [ { "introduced": "2.8.0-rc0" }, { "fixed": "2.8.0" } ], "type": "ECOSYSTEM" } ], "versions": [ "2.8.0-rc0" ] } ], "aliases": [ "CVE-2022-23592" ], "database_specific": { "cwe_ids": [ "CWE-125" ], "github_reviewed": true, "github_reviewed_at": "2022-02-04T18:17:17Z", "nvd_published_at": "2022-02-04T23:15:00Z", "severity": "HIGH" }, "details": "### Impact\nTensorFlow\u0027s [type inference](https://github.com/tensorflow/tensorflow/blob/274df9b02330b790aa8de1cee164b70f72b9b244/tensorflow/core/graph/graph.cc#L223-L229) can cause a heap OOB read as the bounds checking is done in a `DCHECK` (which is a no-op during production):\n\n```cc\nif (node_t.type_id() != TFT_UNSET) {\n int ix = input_idx[i];\n DCHECK(ix \u003c node_t.args_size())\n \u003c\u003c \"input \" \u003c\u003c i \u003c\u003c \" should have an output \" \u003c\u003c ix\n \u003c\u003c \" but instead only has \" \u003c\u003c node_t.args_size()\n \u003c\u003c \" outputs: \" \u003c\u003c node_t.DebugString();\n input_types.emplace_back(node_t.args(ix));\n // ...\n} \n``` \n \nAn attacker can control `input_idx` such that `ix` would be larger than the number of values in `node_t.args`.\n \n### Patches\nWe have patched the issue in GitHub commit [c99d98cd189839dcf51aee94e7437b54b31f8abd](https://github.com/tensorflow/tensorflow/commit/c99d98cd189839dcf51aee94e7437b54b31f8abd).\n \nThe fix will be included in TensorFlow 2.8.0. This is the only affected version.\n\n### For more information\nPlease consult [our security guide](https://github.com/tensorflow/tensorflow/blob/master/SECURITY.md) for more information regarding the security model and how to contact us with issues and questions.", "id": "GHSA-vq36-27g6-p492", "modified": "2024-11-13T22:16:04Z", "published": "2022-02-09T23:31:48Z", "references": [ { "type": "WEB", "url": "https://github.com/tensorflow/tensorflow/security/advisories/GHSA-vq36-27g6-p492" }, { "type": "ADVISORY", "url": "https://nvd.nist.gov/vuln/detail/CVE-2022-23592" }, { "type": "WEB", "url": "https://github.com/tensorflow/tensorflow/commit/c99d98cd189839dcf51aee94e7437b54b31f8abd" }, { "type": "WEB", "url": "https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow-cpu/PYSEC-2022-101.yaml" }, { "type": "WEB", "url": "https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow-gpu/PYSEC-2022-156.yaml" }, { "type": "WEB", "url": "https://github.com/tensorflow/tensorflow" }, { "type": "WEB", "url": "https://github.com/tensorflow/tensorflow/blob/274df9b02330b790aa8de1cee164b70f72b9b244/tensorflow/core/graph/graph.cc#L223-L229" } ], "schema_version": "1.4.0", "severity": [ { "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H", "type": "CVSS_V3" }, { "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:H/SC:N/SI:N/SA:N", "type": "CVSS_V4" } ], "summary": "Out of bounds read in Tensorflow" }
Sightings
Author | Source | Type | Date |
---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.