CVE-2022-23577: Null-dereference in Tensorflow
(updated )
The implementation of GetInitOp
is vulnerable to a crash caused by dereferencing a null pointer:
const auto& init_op_sig_it =
meta_graph_def.signature_def().find(kSavedModelInitOpSignatureKey);
if (init_op_sig_it != sig_def_map.end()) {
*init_op_name = init_op_sig_it->second.outputs()
.find(kSavedModelInitOpSignatureKey)
->second.name();
return Status::OK();
}
Here, we have a nested map and we assume that if the first .find
succeeds then so would be the search in the internal map. However, the maps are built based on the SavedModel
protobuf format and a malicious user can alter that on disk before loading to cause the second .find
to return nullptr
.
References
- github.com/advisories/GHSA-8cxv-76p7-jxwr
- github.com/pypa/advisory-database/tree/main/vulns/tensorflow-cpu/PYSEC-2022-86.yaml
- github.com/pypa/advisory-database/tree/main/vulns/tensorflow-gpu/PYSEC-2022-141.yaml
- github.com/tensorflow/tensorflow
- github.com/tensorflow/tensorflow/blob/a1320ec1eac186da1d03f033109191f715b2b130/tensorflow/cc/saved_model/loader_util.cc
- github.com/tensorflow/tensorflow/commit/4f38b1ac8e42727e18a2f0bde06d3bee8e77b250
- github.com/tensorflow/tensorflow/security/advisories/GHSA-8cxv-76p7-jxwr
- nvd.nist.gov/vuln/detail/CVE-2022-23577
Detect and mitigate CVE-2022-23577 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →