CVE-2021-29614
Last modified
CVE-2021-29614 is a high-severity vulnerability rated 7.8/10 on the CVSS scale. TensorFlow is an end-to-end open source platform for machine learning. The implementation of `tf.io.decode_raw` produces incorrect results and crashes the Python interpreter when combining `fixed_length` and wider datatypes. EPSS estimates a 0.22% chance of exploitation in the next 30 days.
Description
TensorFlow is an end-to-end open source platform for machine learning. The implementation of `tf.io.decode_raw` produces incorrect results and crashes the Python interpreter when combining `fixed_length` and wider datatypes. The implementation of the padded version(https://github.com/tensorflow/tensorflow/blob/1d8903e5b167ed0432077a3db6e462daf781d1fe/tensorflow/core/kernels/decode_padded_raw_op.cc) is buggy due to a confusion about pointer arithmetic rules. First, the code computes(https://github.com/tensorflow/tensorflow/blob/1d8903e5b167ed0432077a3db6e462daf781d1fe/tensorflow/core/kernels/decode_padded_raw_op.cc#L61) the width of each output element by dividing the `fixed_length` value to the size of the type argument. The `fixed_length` argument is also used to determine the size needed for the output tensor(https://github.com/tensorflow/tensorflow/blob/1d8903e5b167ed0432077a3db6e462daf781d1fe/tensorflow/core/kernels/decode_padded_raw_op.cc#L63-L79). This is followed by reencoding code(https://github.com/tensorflow/tensorflow/blob/1d8903e5b167ed0432077a3db6e462daf781d1fe/tensorflow/core/kernels/decode_padded_raw_op.cc#L85-L94). The erroneous code is the last line above: it is moving the `out_data` pointer by `fixed_length * sizeof(T)` bytes whereas it only copied at most `fixed_length` bytes from the input. This results in parts of the input not being decoded into the output. Furthermore, because the pointer advance is far wider than desired, this quickly leads to writing to outside the bounds of the backing data. This OOB write leads to interpreter crash in the reproducer mentioned here, but more severe attacks can be mounted too, given that this gadget allows writing to periodically placed locations in memory. The fix will be included in TensorFlow 2.5.0. We will also cherrypick this commit on TensorFlow 2.4.2, TensorFlow 2.3.3, TensorFlow 2.2.3 and TensorFlow 2.1.4, as these are also affected and still in supported range.
Metrics
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness Enumeration
Affected Software
| Vendor | Product | Versions |
|---|---|---|
| Tensorflow | < 2.1.4 | |
| Tensorflow | >= 2.2.0, < 2.2.3 | |
| Tensorflow | >= 2.3.0, < 2.3.3 | |
| Tensorflow | >= 2.4.0, < 2.4.2 |
References
- https://github.com/tensorflow/tensorflow/commit/698e01511f62a3c185754db78ebce0eee1f0184dPatch, Third Party Advisory
- https://github.com/tensorflow/tensorflow/security/advisories/GHSA-8pmx-p244-g88hExploit, Patch, Third Party Advisory
- https://github.com/tensorflow/tensorflow/commit/698e01511f62a3c185754db78ebce0eee1f0184dPatch, Third Party Advisory
- https://github.com/tensorflow/tensorflow/security/advisories/GHSA-8pmx-p244-g88hExploit, Patch, Third Party Advisory
Timeline
- Published
- Last Modified
- Status
- Modified
Frequently Asked Questions
What is CVE-2021-29614?
How severe is CVE-2021-29614?
How do I fix CVE-2021-29614?
How Strix Helps
- How Strix found a critical auth bypass in etcdStrix autonomously discovered a critical authentication bypass in etcd, later designated CVE-2026-33413.
- Autonomous PentestingAI agents that find and validate exploitable vulnerabilities like this one across your applications.
- PR ReviewsPentest every pull request so vulnerable code is caught before it ships to production.
- AI Penetration TestingHow AI-driven penetration testing continuously covers your attack surface.
Related CVEs from 2021
- CVE-2021-29608TensorFlow is an end-to-end open source platform for machine…7.8
- CVE-2021-29609TensorFlow is an end-to-end open source platform for machine…7.8
- CVE-2021-29610TensorFlow is an end-to-end open source platform for machine…7.8
- CVE-2021-29611TensorFlow is an end-to-end open source platform for machine…5.5
- CVE-2021-29612TensorFlow is an end-to-end open source platform for machine…7.8
- CVE-2021-29613TensorFlow is an end-to-end open source platform for machine…7.1
- CVE-2021-29615TensorFlow is an end-to-end open source platform for machine…5.5
- CVE-2021-29616TensorFlow is an end-to-end open source platform for machine…7.8
- CVE-2021-29617TensorFlow is an end-to-end open source platform for machine…5.5
- CVE-2021-29618TensorFlow is an end-to-end open source platform for machine…5.5
- CVE-2021-29619TensorFlow is an end-to-end open source platform for machine…5.5
- CVE-2021-29620Report portal is an open source reporting and analysis frame…7.5
Are you affected by CVE-2021-29614?
Run a free Strix scan to check your systems for this vulnerability.
Scan your code nowSource: NVD / NIST
