{"id":"CVE-2026-87872","aliases":["DEBIAN-CVE-2026-87872","EUVD-2026-75086","GHSA-72h7-pjj2-r4pr","UBUNTU-CVE-2026-87872"],"status":"published","title":"Community.general: community.general: ocapi module_utils (ocapi_command, ocapi_info) hardcode validate_certs=false with no override, enabling tls man-in-the-middle and credential disclosure","description":"A flaw was found in the OCAPI modules (ocapi_command, ocapi_info) of the\ncommunity.general Ansible collection. The shared OCAPI request helper disables\nTLS certificate validation on every request and the modules expose no parameter\nto re-enable it, while sending HTTP Basic-Auth credentials to an https endpoint.\nAn attacker positioned on the network path between the Ansible controller and the\nOCAPI-managed storage/enclosure device can present any certificate, intercept the\nsession, capture the credentials, and tamper with responses.","severity":{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00137,"percentile":0.03139,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-295"],"published":"2026-09-09T16:06:27Z","modified":"2026-10-17T13:01:14Z","affected":[{"source":"osv","ecosystem":"Debian:12","package":"ansible","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["10.0.0+dfsg-1","10.0.1+dfsg-1","10.1.0+dfsg-1","10.5.0+dfsg-1","10.5.0+dfsg-2","10.6.0+dfsg-1","11.1.0+dfsg-1","11.2.0+dfsg-1","12.0.0+dfsg-1","12.0.0~a1+dfsg-1","12.0.0~a2+dfsg-1","12.0.0~a4+dfsg-1","12.0.0~a6+dfsg-1","12.0.0~b1+dfsg-1","12.0.0~b2+dfsg-1","12.0.0~b3+dfsg-1","12.0.0~b5+dfsg-1","12.2.0+dfsg-1","13.1.0+dfsg-1","13.4.0+dfsg-1","14.0.0+dfsg-1","14.0.0~a4+dfsg-1","14.4.0+dfsg-1","7.3.0+dfsg-1","7.7.0+dfsg-1","7.7.0+dfsg-2","7.7.0+dfsg-3","7.7.0+dfsg-3+deb12u1","9.4.0+dfsg-1","9.5.1+dfsg-1"]},{"source":"osv","ecosystem":"Debian:13","package":"ansible","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["12.0.0+dfsg-0+deb13u1","12.0.0+dfsg-1","12.0.0~a6+dfsg-1","12.0.0~b1+dfsg-1","12.0.0~b2+dfsg-1","12.0.0~b3+dfsg-1","12.0.0~b5+dfsg-0+deb13u1","12.0.0~b5+dfsg-1","12.2.0+dfsg-1","13.1.0+dfsg-1","13.4.0+dfsg-1","14.0.0+dfsg-1","14.0.0~a4+dfsg-1","14.4.0+dfsg-1"]},{"source":"osv","ecosystem":"Debian:14","package":"ansible","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["12.0.0+dfsg-1","12.0.0~a6+dfsg-1","12.0.0~b1+dfsg-1","12.0.0~b2+dfsg-1","12.0.0~b3+dfsg-1","12.0.0~b5+dfsg-1","12.2.0+dfsg-1","13.1.0+dfsg-1","13.4.0+dfsg-1","14.0.0+dfsg-1","14.0.0~a4+dfsg-1","14.4.0+dfsg-1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:14.04:LTS","package":"ansible","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.1+dfsg-1","1.3.4+dfsg-1","1.4.0+dfsg-1","1.4.1+dfsg-1","1.4.3+dfsg-1","1.4.4+dfsg-1","1.5.4+dfsg-1","1.5.4+dfsg-1ubuntu0.1~esm1","1.5.4+dfsg-1ubuntu0.1~esm2","1.5.4+dfsg-1ubuntu0.1~esm3"]},{"source":"osv","ecosystem":"Ubuntu:Pro:16.04:LTS","package":"ansible","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.9.2+dfsg-2","1.9.4-1","2.0.0.2-2","2.0.0.2-2ubuntu1","2.0.0.2-2ubuntu1.1","2.0.0.2-2ubuntu1.2","2.0.0.2-2ubuntu1.3","2.0.0.2-2ubuntu1.3+esm1","2.0.0.2-2ubuntu1.3+esm2","2.0.0.2-2ubuntu1.3+esm3","2.0.0.2-2ubuntu1.3+esm4","2.0.0.2-2ubuntu1.3+esm5","2.0.0.2-2ubuntu1.3+esm6"]},{"source":"osv","ecosystem":"Ubuntu:Pro:18.04:LTS","package":"ansible","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.3.1.0+dfsg-2","2.5.0+dfsg-1","2.5.1+dfsg-1","2.5.1+dfsg-1ubuntu0.1","2.5.1+dfsg-1ubuntu0.1+esm1","2.5.1+dfsg-1ubuntu0.1+esm2","2.5.1+dfsg-1ubuntu0.1+esm3","2.5.1+dfsg-1ubuntu0.1+esm4","2.5.1+dfsg-1ubuntu0.1+esm5"]},{"source":"osv","ecosystem":"Ubuntu:Pro:20.04:LTS","package":"ansible","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.8.3+dfsg-1","2.8.6+dfsg-1","2.9.2+dfsg-1","2.9.4+dfsg-1","2.9.6+dfsg-1","2.9.6+dfsg-1ubuntu0.1~esm1","2.9.6+dfsg-1ubuntu0.1~esm2","2.9.6+dfsg-1ubuntu0.1~esm3"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"ansible-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.12.0-1","2.12.0-1ubuntu0.1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:22.04:LTS","package":"ansible","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.10.7+merged+base+2.10.8+dfsg-1","2.10.7+merged+base+2.10.8+dfsg-1ubuntu0.1~esm1","2.10.7+merged+base+2.10.8+dfsg-1ubuntu0.1~esm4"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"ansible","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["7.7.0+dfsg-1","7.7.0+dfsg-3","9.2.0+dfsg-0ubuntu4","9.2.0+dfsg-0ubuntu5"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"ansible-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.14.9-2","2.14.11-1","2.14.11-2","2.14.13-1","2.16.3-0ubuntu1","2.16.3-0ubuntu2"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"ansible","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["13.1.0+dfsg-1ubuntu1","13.4.0+dfsg-1"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"ansible-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.20.1-1","2.21.1~rc1-1","2.21.1~rc1-2","2.21.1~rc1-2ubuntu1","2.22.0~beta2-1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"ansible","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["12.0.0~b1+dfsg-1","12.0.0+dfsg-1","12.2.0+dfsg-1","13.1.0+dfsg-1","13.1.0+dfsg-1ubuntu1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"ansible-core","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.19.0-1ubuntu1","2.19.4-1","2.20.1-1"]}],"products":[{"vendor":"red hat","product":"red hat ceph storage 5"},{"vendor":"red hat","product":"red hat ceph storage 9"},{"vendor":"red hat","product":"red hat openstack platform 17.1"},{"vendor":"red hat","product":"red hat openstack platform 18.0"}],"references":[{"url":"https://access.redhat.com/security/cve/CVE-2026-87872","tags":["vdb-entry","x_refsource_REDHAT"]},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2530988","tags":["issue-tracking","x_refsource_REDHAT","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-87872"},{"url":"https://github.com/advisories/GHSA-72h7-pjj2-r4pr"},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-87872","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-87872","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-87872","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-87872","title":"Community.general: community.general: ocapi module_utils (ocapi_command, ocapi_info) hardcode validate_certs=false with no override, enabling tls man-in-the-middle and credential disclosure","description":"A flaw was found in the OCAPI modules (ocapi_command, ocapi_info) of the\ncommunity.general Ansible collection. The shared OCAPI request helper disables\nTLS certificate validation on every request and the modules expose no parameter\nto re-enable it, while sending HTTP Basic-Auth credentials to an https endpoint.\nAn attacker positioned on the network path between the Ansible controller and the\nOCAPI-managed storage/enclosure device can present any certificate, intercept the\nsession, capture the credentials, and tamper with responses.","status":"published","published":"2026-09-09T16:06:27.744Z","modified":"2026-09-14T13:39:41.973Z","cvss":[{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-295"],"updated_at":"2026-11-02T13:37:47.463822Z"}],"euvd":[{"id":"EUVD-2026-75086","description":"A flaw was found in the OCAPI modules (ocapi_command, ocapi_info) of the\ncommunity.general Ansible collection. The shared OCAPI request helper disables\nTLS certificate validation on every request and the modules expose no parameter\nto re-enable it, while sending HTTP Basic-Auth credentials to an https endpoint.\nAn attacker positioned on the network path between the Ansible controller and the\nOCAPI-managed storage/enclosure device can present any certificate, intercept the\nsession, capture the credentials, and tamper with responses.","status":"published","published":"2026-09-09T16:06:27Z","modified":"2026-09-14T13:39:41Z","cvss":[{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T17:28:20.757989Z"}],"ghsa":[{"id":"GHSA-72h7-pjj2-r4pr","title":"A flaw was found in the OCAPI modules (ocapi_command, ocapi_info) of the\ncommunity.general...","description":"A flaw was found in the OCAPI modules (ocapi_command, ocapi_info) of the\ncommunity.general Ansible collection. The shared OCAPI request helper disables\nTLS certificate validation on every request and the modules expose no parameter\nto re-enable it, while sending HTTP Basic-Auth credentials to an https endpoint.\nAn attacker positioned on the network path between the Ansible controller and the\nOCAPI-managed storage/enclosure device can present any certificate, intercept the\nsession, capture the credentials, and tamper with responses.","status":"published","published":"2026-09-09T18:32:05Z","modified":"2026-09-09T18:32:12Z","cvss":[{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"medium"}],"cwes":["CWE-295"],"updated_at":"2026-11-02T15:11:40.005602Z"}],"nvd":[{"id":"CVE-2026-87872","description":"A flaw was found in the OCAPI modules (ocapi_command, ocapi_info) of the\ncommunity.general Ansible collection. The shared OCAPI request helper disables\nTLS certificate validation on every request and the modules expose no parameter\nto re-enable it, while sending HTTP Basic-Auth credentials to an https endpoint.\nAn attacker positioned on the network path between the Ansible controller and the\nOCAPI-managed storage/enclosure device can present any certificate, intercept the\nsession, capture the credentials, and tamper with responses.","status":"published","published":"2026-09-09T17:17:52.96Z","modified":"2026-09-14T14:17:18.553Z","cvss":[{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"medium","assessor":"secondary"}],"cwes":["CWE-295"],"updated_at":"2026-11-02T14:12:45.93749Z"}],"osv":[{"id":"DEBIAN-CVE-2026-87872","description":"A flaw was found in the OCAPI modules (ocapi_command, ocapi_info) of the community.general Ansible collection. The shared OCAPI request helper disables TLS certificate validation on every request and the modules expose no parameter to re-enable it, while sending HTTP Basic-Auth credentials to an https endpoint. An attacker positioned on the network path between the Ansible controller and the OCAPI-managed storage/enclosure device can present any certificate, intercept the session, capture the credentials, and tamper with responses.","status":"published","published":"2026-09-09T17:17:52.96Z","modified":"2026-10-01T03:03:52.208833871Z","cvss":[{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T15:46:05.506112Z"},{"id":"UBUNTU-CVE-2026-87872","description":"A flaw was found in the OCAPI modules (ocapi_command, ocapi_info) of the community.general Ansible collection. The shared OCAPI request helper disables TLS certificate validation on every request and the modules expose no parameter to re-enable it, while sending HTTP Basic-Auth credentials to an https endpoint. An attacker positioned on the network path between the Ansible controller and the OCAPI-managed storage/enclosure device can present any certificate, intercept the session, capture the credentials, and tamper with responses.","status":"published","published":"2026-09-09T17:17:00Z","modified":"2026-10-17T13:01:14.990312257Z","cvss":[{"version":"3.1","score":6.8,"vector":"CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T16:57:24.828975Z"}]}}
