{"id":"CVE-2021-37654","aliases":["BIT-tensorflow-2021-37654","EUVD-2021-0380","GHSA-2r8p-fg3c-wcj4","PYSEC-2021-276","PYSEC-2021-567","PYSEC-2021-765","openSUSE-SU-2022:10014-1","openSUSE-SU-2024:12116-1"],"status":"published","title":"Heap OOB and CHECK fail in `ResourceGather` in TensorFlow","description":"TensorFlow is an end-to-end open source platform for machine learning. In affected versions an attacker can trigger a crash via a `CHECK`-fail in debug builds of TensorFlow using `tf.raw_ops.ResourceGather` or a read from outside the bounds of heap allocated data in the same API in a release build. The [implementation](https://github.com/tensorflow/tensorflow/blob/f24faa153ad31a4b51578f8181d3aaab77a1ddeb/tensorflow/core/kernels/resource_variable_ops.cc#L660-L668) does not check that the `batch_dims` value that the user supplies is less than the rank of the input tensor. Since the implementation uses several for loops over the dimensions of `tensor`, this results in reading data from outside the bounds of heap allocated buffer backing the tensor. We have patched the issue in GitHub commit bc9c546ce7015c57c2f15c168b3d9201de679a1d. The fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4, as these are also affected and still in supported range.","severity":{"version":"3.1","score":7.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:H","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00167,"percentile":0.06055,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-125"],"published":"2021-08-12T20:30:23Z","modified":"2026-10-20T14:28:09Z","fixes":[{"ecosystem":"PyPI","package":"tensorflow","fixed_in":["2.3.4","2.4.3","2.5.1"],"sources":["ghsa","osv"]},{"ecosystem":"PyPI","package":"tensorflow-cpu","fixed_in":["2.3.4","2.4.3","2.5.1"],"sources":["ghsa","osv"]},{"ecosystem":"PyPI","package":"tensorflow-gpu","fixed_in":["2.3.4","2.4.3","2.5.1"],"sources":["ghsa","osv"]},{"ecosystem":"Bitnami","package":"tensorflow","fixed_in":["2.3.4","2.4.3","2.5.1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"tensorflow","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.4"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"tensorflow","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.4.0"},{"fixed":"2.4.3"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"tensorflow","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.5.0"},{"last_affected":"2.5.0"},{"fixed":"2.5.1"}]}],"versions":["2.5.0"]},{"source":"ghsa","ecosystem":"PyPI","package":"tensorflow-cpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.4"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"tensorflow-cpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.4.0"},{"fixed":"2.4.3"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"tensorflow-cpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.5.0"},{"last_affected":"2.5.0"},{"fixed":"2.5.1"}]}],"versions":["2.5.0"]},{"source":"ghsa","ecosystem":"PyPI","package":"tensorflow-gpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.4"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"tensorflow-gpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.4.0"},{"fixed":"2.4.3"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"tensorflow-gpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.5.0"},{"last_affected":"2.5.0"},{"fixed":"2.5.1"}]}],"versions":["2.5.0"]},{"source":"osv","ecosystem":"Bitnami","package":"tensorflow","ranges":[{"type":"SEMVER","events":[{"introduced":"2.3.0"},{"fixed":"2.3.4"},{"introduced":"2.4.0"},{"fixed":"2.4.3"},{"introduced":"2.5.0"},{"fixed":"2.5.1"}]}]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.4"}]}],"versions":["0.12.0","0.12.1","1.0.0","1.0.1","1.1.0","1.10.0","1.10.1","1.11.0","1.12.0","1.12.2","1.12.3","1.13.1","1.13.2","1.14.0","1.15.0","1.15.2","1.15.3","1.15.4","1.15.5","1.2.0","1.2.1","1.3.0","1.4.0","1.4.1","1.5.0","1.5.1","1.6.0","1.7.0","1.7.1","1.8.0","1.9.0","2.0.0","2.0.1","2.0.2","2.0.3","2.0.4","2.1.0","2.1.1","2.1.2","2.1.3","2.1.4","2.2.0","2.2.1","2.2.2","2.2.3","2.3.0","2.3.1","2.3.2","2.3.3"]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.4.0"},{"fixed":"2.4.3"}]}],"versions":["2.4.0","2.4.1","2.4.2"]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.5.0"},{"fixed":"2.5.1"}]}],"versions":["2.5.0"]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow-cpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.4"}]}],"versions":["1.15.0","2.1.0","2.1.1","2.1.2","2.1.3","2.1.4","2.2.0","2.2.1","2.2.2","2.2.3","2.3.0","2.3.1","2.3.2","2.3.3"]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow-cpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.4.0"},{"fixed":"2.4.3"}]}],"versions":["2.4.0","2.4.1","2.4.2"]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow-cpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.5.0"},{"fixed":"2.5.1"}]}],"versions":["2.5.0"]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow-gpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.4"}]}],"versions":["0.12.0","0.12.1","1.0.0","1.0.1","1.1.0","1.10.0","1.10.1","1.11.0","1.12.0","1.12.2","1.12.3","1.13.1","1.13.2","1.14.0","1.15.0","1.15.2","1.15.3","1.15.4","1.15.5","1.2.0","1.2.1","1.3.0","1.4.0","1.4.1","1.5.0","1.5.1","1.6.0","1.7.0","1.7.1","1.8.0","1.9.0","2.0.0","2.0.1","2.0.2","2.0.3","2.0.4","2.1.0","2.1.1","2.1.2","2.1.3","2.1.4","2.2.0","2.2.1","2.2.2","2.2.3","2.3.0","2.3.1","2.3.2","2.3.3"]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow-gpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.4.0"},{"fixed":"2.4.3"}]}],"versions":["2.4.0","2.4.1","2.4.2"]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow-gpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.5.0"},{"fixed":"2.5.1"}]}],"versions":["2.5.0"]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow","ranges":[{"type":"GIT","events":[{"introduced":"0"},{"fixed":"bc9c546ce7015c57c2f15c168b3d9201de679a1d"}]},{"type":"ECOSYSTEM","events":[{"introduced":"2.3.0"},{"fixed":"2.3.4"},{"introduced":"2.4.0"},{"fixed":"2.4.3"}]}],"versions":["2.3.0","2.3.1","2.3.2","2.3.3","2.4.0","2.4.1","2.4.2"]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow-cpu","ranges":[{"type":"GIT","events":[{"introduced":"0"},{"fixed":"bc9c546ce7015c57c2f15c168b3d9201de679a1d"}]},{"type":"ECOSYSTEM","events":[{"introduced":"2.3.0"},{"fixed":"2.3.4"},{"introduced":"2.4.0"},{"fixed":"2.4.3"}]}],"versions":["2.3.0","2.3.1","2.3.2","2.3.3","2.4.0","2.4.1","2.4.2"]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow-gpu","ranges":[{"type":"GIT","events":[{"introduced":"0"},{"fixed":"bc9c546ce7015c57c2f15c168b3d9201de679a1d"}]},{"type":"ECOSYSTEM","events":[{"introduced":"2.3.0"},{"fixed":"2.3.4"},{"introduced":"2.4.0"},{"fixed":"2.4.3"}]}],"versions":["2.3.0","2.3.1","2.3.2","2.3.3","2.4.0","2.4.1","2.4.2"]},{"source":"osv","ecosystem":"SUSE:Package Hub 15 SP3","package":"bazel-skylib1.0.3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.0.3-bp153.2.1"}]}],"bundled":63},{"source":"osv","ecosystem":"SUSE:Package Hub 15 SP3","package":"bazel3.7","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.7.2-bp153.4.1"}]}],"bundled":63},{"source":"osv","ecosystem":"SUSE:Package Hub 15 SP3","package":"tensorflow2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.6.0-bp153.2.3.1"}]}],"bundled":63},{"source":"osv","ecosystem":"SUSE:Package Hub 15 SP3","package":"tensorflow2-lite","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.6.0-bp153.2.3.1"}]}],"bundled":63},{"source":"osv","ecosystem":"SUSE:Package Hub 15 SP3","package":"tensorflow2_2_6_0-gnu-hpc","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.6.0-bp153.2.3.1"}]}],"bundled":63},{"source":"osv","ecosystem":"SUSE:Package Hub 15 SP3","package":"tensorflow2_2_6_0-gnu-openmpi2-hpc","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.6.0-bp153.2.3.1"}]}],"bundled":63},{"source":"osv","ecosystem":"openSUSE:Leap 15.3","package":"bazel-skylib1.0.3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.0.3-bp153.2.1"}]}],"bundled":63},{"source":"osv","ecosystem":"openSUSE:Leap 15.3","package":"bazel3.7","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.7.2-bp153.4.1"}]}],"bundled":63},{"source":"osv","ecosystem":"openSUSE:Leap 15.3","package":"tensorflow2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.6.0-bp153.2.3.1"}]}],"bundled":63},{"source":"osv","ecosystem":"openSUSE:Leap 15.3","package":"tensorflow2-lite","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.6.0-bp153.2.3.1"}]}],"bundled":63},{"source":"osv","ecosystem":"openSUSE:Leap 15.3","package":"tensorflow2_2_6_0-gnu-hpc","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.6.0-bp153.2.3.1"}]}],"bundled":63},{"source":"osv","ecosystem":"openSUSE:Leap 15.3","package":"tensorflow2_2_6_0-gnu-openmpi2-hpc","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.6.0-bp153.2.3.1"}]}],"bundled":63}],"products":[{"vendor":"google","product":"tensorflow"},{"vendor":"tensorflow","product":"tensorflow"}],"references":[{"url":"https://github.com/tensorflow/tensorflow/security/advisories/GHSA-2r8p-fg3c-wcj4","tags":["x_refsource_CONFIRM","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://github.com/tensorflow/tensorflow/commit/bc9c546ce7015c57c2f15c168b3d9201de679a1d","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","advisory","fix","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2021-37654","tags":["web","advisory"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow-cpu/PYSEC-2021-567.yaml","tags":["web"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow-gpu/PYSEC-2021-765.yaml","tags":["web"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow/PYSEC-2021-276.yaml","tags":["web"]},{"url":"https://github.com/advisories/GHSA-2r8p-fg3c-wcj4"},{"url":"https://github.com/tensorflow/tensorflow","tags":["web"]},{"url":"https://lists.opensuse.org/archives/list/security-announce@lists.opensuse.org/thread/U25ZU2T5T4LOLSIYIMGC5PLU4PQQMJE5/","tags":["advisory"]},{"url":"https://bugzilla.suse.com/1173128","tags":["report"]},{"url":"https://bugzilla.suse.com/1173314","tags":["report"]},{"url":"https://bugzilla.suse.com/1178287","tags":["report"]},{"url":"https://bugzilla.suse.com/1178564","tags":["report"]},{"url":"https://bugzilla.suse.com/1179455","tags":["report"]},{"url":"https://bugzilla.suse.com/1181864","tags":["report"]},{"url":"https://bugzilla.suse.com/1186860","tags":["report"]},{"url":"https://bugzilla.suse.com/1189423","tags":["report"]},{"url":"https://www.suse.com/security/cve/CVE-2020-26266","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-26267","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-26268","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-26270","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-26271","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37635","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37636","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37637","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37638","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37639","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37640","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37641","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37642","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37643","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37644","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37645","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37646","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37647","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37648","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37649","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37650","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37651","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37652","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37653","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37654","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37655","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37656","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37657","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37658","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37659","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37660","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37661","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37662","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37663","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37664","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37665","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37666","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37667","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37668","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37669","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37670","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37671","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37672","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37673","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37674","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37675","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37676","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37677","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37678","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37679","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37680","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37681","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37682","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37683","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37684","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37685","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37686","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37687","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37688","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37689","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37690","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37691","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-37692","tags":["web"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2020-10531","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-15190","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-15191","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-15194","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-15202","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-15203","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-15204","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-15205","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-15206","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-15207","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-15208","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-15209","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-22922","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-22923","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-22926","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41195","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41196","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41197","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41198","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41199","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41200","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41201","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41202","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41203","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41204","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41205","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41206","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41207","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41208","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41209","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41210","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41211","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41212","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41213","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41214","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41215","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41216","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41217","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41218","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41219","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41220","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41221","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41222","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41223","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41224","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41225","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41226","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41227","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-41228","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21725","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21726","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21727","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21728","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21729","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21730","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21731","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21732","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21733","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21734","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21735","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21736","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21737","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21738","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21739","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21740","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-21741","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23557","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23558","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23559","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23560","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23561","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23562","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23563","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23564","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23565","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23566","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23567","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23568","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23569","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23570","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23571","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23572","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23573","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23574","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23575","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23576","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23577","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23578","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23579","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23580","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23581","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23582","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23583","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23584","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23585","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23586","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23587","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23588","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23589","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23590","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23591","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23594","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-23595","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2021-37654","title":"Heap OOB and CHECK fail in `ResourceGather` in TensorFlow","description":"TensorFlow is an end-to-end open source platform for machine learning. In affected versions an attacker can trigger a crash via a `CHECK`-fail in debug builds of TensorFlow using `tf.raw_ops.ResourceGather` or a read from outside the bounds of heap allocated data in the same API in a release build. The [implementation](https://github.com/tensorflow/tensorflow/blob/f24faa153ad31a4b51578f8181d3aaab77a1ddeb/tensorflow/core/kernels/resource_variable_ops.cc#L660-L668) does not check that the `batch_dims` value that the user supplies is less than the rank of the input tensor. Since the implementation uses several for loops over the dimensions of `tensor`, this results in reading data from outside the bounds of heap allocated buffer backing the tensor. We have patched the issue in GitHub commit bc9c546ce7015c57c2f15c168b3d9201de679a1d. The fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4, as these are also affected and still in supported range.","status":"published","published":"2021-08-12T20:30:23Z","modified":"2024-08-04T01:23:01.509Z","cvss":[{"version":"3.1","score":7.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:H","level":"high","assessor":"cna"}],"cwes":["CWE-125"],"updated_at":"2026-11-02T14:32:58.359368Z"}],"euvd":[{"id":"EUVD-2021-0380","description":"TensorFlow is an end-to-end open source platform for machine learning. In affected versions an attacker can trigger a crash via a `CHECK`-fail in debug builds of TensorFlow using `tf.raw_ops.ResourceGather` or a read from outside the bounds of heap allocated data in the same API in a release build. The [implementation](https://github.com/tensorflow/tensorflow/blob/f24faa153ad31a4b51578f8181d3aaab77a1ddeb/tensorflow/core/kernels/resource_variable_ops.cc#L660-L668) does not check that the `batch_dims` value that the user supplies is less than the rank of the input tensor. Since the implementation uses several for loops over the dimensions of `tensor`, this results in reading data from outside the bounds of heap allocated buffer backing the tensor. We have patched the issue in GitHub commit bc9c546ce7015c57c2f15c168b3d9201de679a1d. The fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4, as these are also affected and still in supported range.","status":"published","published":"2021-08-12T20:30:23Z","modified":"2024-08-04T01:23:01Z","cvss":[{"version":"3.1","score":7.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:H","level":"high"}],"updated_at":"2026-11-03T03:24:27.254804Z"}],"ghsa":[{"id":"GHSA-2r8p-fg3c-wcj4","title":"Heap OOB and CHECK fail in `ResourceGather`","description":"### Impact\nAn attacker can trigger a crash via a `CHECK`-fail in debug builds of TensorFlow using `tf.raw_ops.ResourceGather` or a read from outside the bounds of heap allocated data in the same API in a release build:\n\n```python\nimport tensorflow as tf\n\ntensor = tf.constant(value=[[1,2],[3,4],[5,6]],shape=(3,2),dtype=tf.uint32)\nv = tf.Variable(tensor)\ntf.raw_ops.ResourceGather(\n  resource=v.handle,\n  indices=[0],\n  dtype=tf.uint32,\n  batch_dims=10,\n  validate_indices=False)\n```\n\nThe [implementation](https://github.com/tensorflow/tensorflow/blob/f24faa153ad31a4b51578f8181d3aaab77a1ddeb/tensorflow/core/kernels/resource_variable_ops.cc#L660-L668) does not check that the `batch_dims` value that the user supplies is less than the rank of the input tensor.\n\nSince the implementation uses several for loops over the dimensions of `tensor`, this results in reading data from outside the bounds of heap allocated buffer backing the tensor:\n\n```cc\n    // batch_dims_ = \u003e params.dims() (10 \u003e 2)\n    for (int i = 0; i \u003c batch_dims_; ++i) {\n      result_shape.AddDim(params.dim_size(i));\n    }\n    for (int i = batch_dims_; i \u003c indices.dims(); ++i) {\n      result_shape.AddDim(indices.dim_size(i));\n    }\n    for (int i = batch_dims_ + 1; i \u003c params.dims(); ++i) {\n      result_shape.AddDim(params.dim_size(i));\n    }\n```\n\nIn debug mode, `.dim_size(i)` validates that the argument is less than `.dims()` using a `DCHECK`. But the `DCHECK` is a no-op in release builds.\n\n### Patches\nWe have patched the issue in GitHub commit [bc9c546ce7015c57c2f15c168b3d9201de679a1d](https://github.com/tensorflow/tensorflow/commit/bc9c546ce7015c57c2f15c168b3d9201de679a1d).\n\nThe fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4, as these are also affected and still in supported range.\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.\n\n### Attribution\nThis vulnerability has been reported by members of the Aivul Team from Qihoo 360.","status":"published","published":"2021-08-25T14:43:01Z","modified":"2024-11-13T17:28:12Z","cvss":[{"version":"4.0","score":7,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:H/SC:N/SI:N/SA:N","level":"high"},{"version":"3.1","score":7.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:H","level":"high"}],"cwes":["CWE-125"],"updated_at":"2026-11-02T14:38:17.357217Z"}],"nvd":[{"id":"CVE-2021-37654","description":"TensorFlow is an end-to-end open source platform for machine learning. In affected versions an attacker can trigger a crash via a `CHECK`-fail in debug builds of TensorFlow using `tf.raw_ops.ResourceGather` or a read from outside the bounds of heap allocated data in the same API in a release build. The [implementation](https://github.com/tensorflow/tensorflow/blob/f24faa153ad31a4b51578f8181d3aaab77a1ddeb/tensorflow/core/kernels/resource_variable_ops.cc#L660-L668) does not check that the `batch_dims` value that the user supplies is less than the rank of the input tensor. Since the implementation uses several for loops over the dimensions of `tensor`, this results in reading data from outside the bounds of heap allocated buffer backing the tensor. We have patched the issue in GitHub commit bc9c546ce7015c57c2f15c168b3d9201de679a1d. The fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4, as these are also affected and still in supported range.","status":"published","published":"2021-08-12T21:15:08.267Z","modified":"2026-06-17T04:00:54.923Z","cvss":[{"version":"3.1","score":7.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:H","level":"high","assessor":"secondary"},{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H","level":"high","assessor":"primary"},{"version":"2.0","score":3.6,"vector":"AV:L/AC:L/Au:N/C:P/I:N/A:P","level":"low","assessor":"primary"}],"cwes":["CWE-125"],"updated_at":"2026-11-02T14:06:56.943671Z"}],"osv":[{"id":"CVE-2021-37654","description":"TensorFlow is an end-to-end open source platform for machine learning. In affected versions an attacker can trigger a crash via a `CHECK`-fail in debug builds of TensorFlow using `tf.raw_ops.ResourceGather` or a read from outside the bounds of heap allocated data in the same API in a release build. The [implementation](https://github.com/tensorflow/tensorflow/blob/f24faa153ad31a4b51578f8181d3aaab77a1ddeb/tensorflow/core/kernels/resource_variable_ops.cc#L660-L668) does not check that the `batch_dims` value that the user supplies is less than the rank of the input tensor. Since the implementation uses several for loops over the dimensions of `tensor`, this results in reading data from outside the bounds of heap allocated buffer backing the tensor. We have patched the issue in GitHub commit bc9c546ce7015c57c2f15c168b3d9201de679a1d. The fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4, as these are also affected and still in supported range.","status":"published","published":"2021-08-12T21:15:08.267Z","modified":"2026-10-20T14:28:09.529312331Z","cvss":[{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:44:20.434873Z"},{"id":"GHSA-2r8p-fg3c-wcj4","title":"Heap OOB and CHECK fail in `ResourceGather`","description":"### Impact\nAn attacker can trigger a crash via a `CHECK`-fail in debug builds of TensorFlow using `tf.raw_ops.ResourceGather` or a read from outside the bounds of heap allocated data in the same API in a release build:\n\n```python\nimport tensorflow as tf\n\ntensor = tf.constant(value=[[1,2],[3,4],[5,6]],shape=(3,2),dtype=tf.uint32)\nv = tf.Variable(tensor)\ntf.raw_ops.ResourceGather(\n  resource=v.handle,\n  indices=[0],\n  dtype=tf.uint32,\n  batch_dims=10,\n  validate_indices=False)\n```\n\nThe [implementation](https://github.com/tensorflow/tensorflow/blob/f24faa153ad31a4b51578f8181d3aaab77a1ddeb/tensorflow/core/kernels/resource_variable_ops.cc#L660-L668) does not check that the `batch_dims` value that the user supplies is less than the rank of the input tensor.\n\nSince the implementation uses several for loops over the dimensions of `tensor`, this results in reading data from outside the bounds of heap allocated buffer backing the tensor:\n\n```cc\n    // batch_dims_ = \u003e params.dims() (10 \u003e 2)\n    for (int i = 0; i \u003c batch_dims_; ++i) {\n      result_shape.AddDim(params.dim_size(i));\n    }\n    for (int i = batch_dims_; i \u003c indices.dims(); ++i) {\n      result_shape.AddDim(indices.dim_size(i));\n    }\n    for (int i = batch_dims_ + 1; i \u003c params.dims(); ++i) {\n      result_shape.AddDim(params.dim_size(i));\n    }\n```\n\nIn debug mode, `.dim_size(i)` validates that the argument is less than `.dims()` using a `DCHECK`. But the `DCHECK` is a no-op in release builds.\n\n### Patches\nWe have patched the issue in GitHub commit [bc9c546ce7015c57c2f15c168b3d9201de679a1d](https://github.com/tensorflow/tensorflow/commit/bc9c546ce7015c57c2f15c168b3d9201de679a1d).\n\nThe fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4, as these are also affected and still in supported range.\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.\n\n### Attribution\nThis vulnerability has been reported by members of the Aivul Team from Qihoo 360.","status":"published","published":"2021-08-25T14:43:01Z","modified":"2026-07-08T06:28:34.59834861Z","cvss":[{"version":"3.1","score":7.3,"vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:H","level":"high"},{"version":"4.0","score":7,"vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:H/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-125"],"updated_at":"2026-11-02T15:46:34.700741Z"},{"id":"BIT-tensorflow-2021-37654","title":"Heap OOB and CHECK fail in `ResourceGather` in TensorFlow","description":"TensorFlow is an end-to-end open source platform for machine learning. In affected versions an attacker can trigger a crash via a `CHECK`-fail in debug builds of TensorFlow using `tf.raw_ops.ResourceGather` or a read from outside the bounds of heap allocated data in the same API in a release build. The [implementation](https://github.com/tensorflow/tensorflow/blob/f24faa153ad31a4b51578f8181d3aaab77a1ddeb/tensorflow/core/kernels/resource_variable_ops.cc#L660-L668) does not check that the `batch_dims` value that the user supplies is less than the rank of the input tensor. Since the implementation uses several for loops over the dimensions of `tensor`, this results in reading data from outside the bounds of heap allocated buffer backing the tensor. We have patched the issue in GitHub commit bc9c546ce7015c57c2f15c168b3d9201de679a1d. The fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4, as these are also affected and still in supported range.","status":"published","published":"2024-03-06T11:17:29.255Z","modified":"2026-09-08T08:48:20.162997497Z","updated_at":"2026-11-02T15:28:35.51001Z"},{"id":"openSUSE-SU-2022:10014-1","title":"Security update for tensorflow2","description":"\nThis update for tensorflow fixes the following issues:\n\n\nUpdate to TF2 2.6.0 which fixes multiple CVEs (boo#1189423).\n\n- Introduction of bazel6.3 and basel-skylib1.0.3 as build\n  dependencies.\n  The latter has been adapted to all a version in its package\n  name (if %set_ver_suffix is set to 1). This allows multiple\n  versions to exist for one product (not installed).\n  NOTE: basel-skylib1.0.3 does not exist in oS:Factory:\n  basel-skylib in oS:Factory - the base version - is 1.0.3.\n","status":"published","published":"2022-06-18T16:01:26Z","modified":"2026-02-04T02:20:34.480131Z","updated_at":"2026-11-02T16:58:32.653274Z"},{"id":"openSUSE-SU-2024:12116-1","title":"tensorflow-lite-2.9.1-1.1 on GA media","description":"These are all security issues fixed in the tensorflow-lite-2.9.1-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2024-06-15T00:00:00Z","modified":"2026-02-04T03:04:19.609756Z","updated_at":"2026-11-02T16:58:35.485255Z"},{"id":"PYSEC-2021-276","description":"TensorFlow is an end-to-end open source platform for machine learning. In affected versions an attacker can trigger a crash via a `CHECK`-fail in debug builds of TensorFlow using `tf.raw_ops.ResourceGather` or a read from outside the bounds of heap allocated data in the same API in a release build. The [implementation](https://github.com/tensorflow/tensorflow/blob/f24faa153ad31a4b51578f8181d3aaab77a1ddeb/tensorflow/core/kernels/resource_variable_ops.cc#L660-L668) does not check that the `batch_dims` value that the user supplies is less than the rank of the input tensor. Since the implementation uses several for loops over the dimensions of `tensor`, this results in reading data from outside the bounds of heap allocated buffer backing the tensor. We have patched the issue in GitHub commit bc9c546ce7015c57c2f15c168b3d9201de679a1d. The fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4, as these are also affected and still in supported range.","status":"published","published":"2021-08-12T21:15:00Z","modified":"2023-12-06T01:01:22.39077Z","updated_at":"2026-11-02T15:52:52.682031Z"},{"id":"PYSEC-2021-567","description":"TensorFlow is an end-to-end open source platform for machine learning. In affected versions an attacker can trigger a crash via a `CHECK`-fail in debug builds of TensorFlow using `tf.raw_ops.ResourceGather` or a read from outside the bounds of heap allocated data in the same API in a release build. The [implementation](https://github.com/tensorflow/tensorflow/blob/f24faa153ad31a4b51578f8181d3aaab77a1ddeb/tensorflow/core/kernels/resource_variable_ops.cc#L660-L668) does not check that the `batch_dims` value that the user supplies is less than the rank of the input tensor. Since the implementation uses several for loops over the dimensions of `tensor`, this results in reading data from outside the bounds of heap allocated buffer backing the tensor. We have patched the issue in GitHub commit bc9c546ce7015c57c2f15c168b3d9201de679a1d. The fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4, as these are also affected and still in supported range.","status":"published","published":"2021-08-12T21:15:00Z","modified":"2023-12-06T01:01:22.39077Z","updated_at":"2026-11-02T15:52:53.119977Z"},{"id":"PYSEC-2021-765","description":"TensorFlow is an end-to-end open source platform for machine learning. In affected versions an attacker can trigger a crash via a `CHECK`-fail in debug builds of TensorFlow using `tf.raw_ops.ResourceGather` or a read from outside the bounds of heap allocated data in the same API in a release build. The [implementation](https://github.com/tensorflow/tensorflow/blob/f24faa153ad31a4b51578f8181d3aaab77a1ddeb/tensorflow/core/kernels/resource_variable_ops.cc#L660-L668) does not check that the `batch_dims` value that the user supplies is less than the rank of the input tensor. Since the implementation uses several for loops over the dimensions of `tensor`, this results in reading data from outside the bounds of heap allocated buffer backing the tensor. We have patched the issue in GitHub commit bc9c546ce7015c57c2f15c168b3d9201de679a1d. The fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4, as these are also affected and still in supported range.","status":"published","published":"2021-08-12T21:15:00Z","modified":"2023-12-06T01:01:22.39077Z","updated_at":"2026-11-02T15:52:53.119977Z"}]}}
