{"id":7843,"date":"2025-08-08T17:01:45","date_gmt":"2025-08-08T15:01:45","guid":{"rendered":"https:\/\/www.lrob.fr\/?p=7843"},"modified":"2025-08-08T17:01:45","modified_gmt":"2025-08-08T15:01:45","slug":"acf-faille-cve-2025-54940","status":"publish","type":"post","link":"https:\/\/portail.lrob.fr\/en\/securite\/acf-faille-cve-2025-54940\/","title":{"rendered":"ACF : Faille CVE-2025-54940 : pourquoi la 6.4.3 reste une mise \u00e0 jour \u00e0 faire vite (m\u00eame si le score CVSS est mod\u00e9r\u00e9)"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Advanced Custom Fields (ACF) \u00e9quipe plus de 2 millions de sites WordPress. Le 08\/08\/2025, une vuln\u00e9rabilit\u00e9 r\u00e9f\u00e9renc\u00e9e <strong>CVE-2025-54940<\/strong> a \u00e9t\u00e9 publi\u00e9e. Elle concerne des <strong>injections HTML<\/strong> possibles dans certains usages d\u2019ACF jusqu\u2019\u00e0 la <strong>version 6.4.2<\/strong> incluse. L\u2019\u00e9diteur WPEngine a livr\u00e9 un <strong>correctif en 6.4.3<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">D\u00e9tails de la faille CVSS<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">CVE : <a href=\"https:\/\/www.cve.org\/CVERecord?id=CVE-2025-54940\" target=\"_blank\" rel=\"noopener\">CVE-2025-54940<\/a><br>Base score : 4.6<br>Publi\u00e9e le : 08\/08\/2025<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>CVSS:4.0\/AV:N\/AC:L\/AT:N\/PR:H\/UI:A\/VC:N\/VI:N\/VA:N\/SC:N\/SI:L\/SA:N  \u2192 Base 4.6<br>CVSS:3.0\/AV:N\/AC:L\/PR:H\/UI:R\/S:C\/C:N\/I:L\/A:N                     \u2192 Base 3.4<br><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Traduction : exploitation possible \u00e0 distance, peu complexe, mais <strong>droits \u00e9lev\u00e9s requis<\/strong> et <strong>interaction utilisateur<\/strong> n\u00e9cessaire ; impact surtout sur <strong>l\u2019int\u00e9grit\u00e9<\/strong> (injection\/modification de contenu), pas sur la confidentialit\u00e9 ni la disponibilit\u00e9. D\u2019o\u00f9 un score \u201cmod\u00e9r\u00e9\u201d \u2014 mais pas \u00e0 ignorer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ce que fait la vuln\u00e9rabilit\u00e9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Concr\u00e8tement, un utilisateur ayant acc\u00e8s aux champs personnalis\u00e9s peut ins\u00e9rer du code HTML qui sera affich\u00e9 tel quel sur les pages.<\/strong><br>R\u00e9sultat : d\u00e9gradation du rendu, <strong>tromperie des visiteurs<\/strong> via contenus pi\u00e9g\u00e9s (faux boutons, banni\u00e8res, liens), et <strong>tremplin vers du XSS<\/strong> selon la fa\u00e7on dont votre th\u00e8me\/blocs r\u00e9-affichent ces champs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C\u00f4t\u00e9 <strong>administration<\/strong>, ACF indique que l\u2019<strong>import involontaire de contenu malicieux<\/strong> (ex. via des JSON de groupes de champs) pouvait aussi poser probl\u00e8me dans certains cas d\u2019usage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enfin, on peut pr\u00e9sumer que <strong>dans certains contextes ACF<\/strong>, une <strong>simple \u00e9dition de contenu<\/strong> par un utilisateur (pas forc\u00e9ment admin) pouvait suffire \u00e0 exploiter la faille.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pourquoi s\u2019en soucier si le score est \u201cseulement\u201d 4.6 ?<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Surface d\u2019exposition<\/strong> \u00e9norme (plugin massivement d\u00e9ploy\u00e9).<\/li>\n\n\n\n<li>La combinaison \u201c<strong>PR:H + UI:A<\/strong>\u201d ne vous prot\u00e8ge pas si vous avez plusieurs administrateurs\/\u00e9diteurs puissants, si vous importez des JSON tiers, ou si des automatisations traitent des contenus ACF.<\/li>\n\n\n\n<li>L\u2019impact peut sembler \u201cvisuel\u201d, mais un XSS de proximit\u00e9 peut devenir un <strong>levier d\u2019escalade<\/strong> (vol de session admin, injection de scripts tiers, etc.) si l\u2019\u00e9chappement est laxiste.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Versions touch\u00e9es et correctif<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Vuln\u00e9rables<\/strong> : ACF \u2264 <strong>6.4.2<\/strong> (selon le contexte d\u2019int\u00e9gration et l\u2019\u00e9chappement).<\/li>\n\n\n\n<li><strong>Corrig\u00e9<\/strong> : <strong>6.4.3<\/strong> (ACF et ACF PRO).<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Sc\u00e9narios d\u2019exploitation plausibles<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Insertion de <strong>HTML pi\u00e9g\u00e9<\/strong> dans un champ ACF affich\u00e9 \u201cbrut\u201d par le th\u00e8me \u2192 boutons factices, pop-ups, redirections.<\/li>\n\n\n\n<li><strong>Phishing interne<\/strong> : contenus ressemblant \u00e0 des composants l\u00e9gitimes (CTA, formulaires) pour pi\u00e9ger les utilisateurs.<\/li>\n\n\n\n<li><strong>Cha\u00eene vers XSS<\/strong> si la sortie n\u2019est pas s\u00e9curis\u00e9e (<code>esc_html<\/code>, <code>esc_attr<\/code>, <code>wp_kses<\/code>, etc.).<\/li>\n\n\n\n<li><strong>Import<\/strong> de groupes de champs (JSON) contenant des valeurs malicieuses, ensuite r\u00e9-affich\u00e9es dans l\u2019admin ou le front.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Que faire maintenant (priorit\u00e9s)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Mettre \u00e0 jour ACF en 6.4.3<\/strong> partout (prod, pr\u00e9prod, clones).<\/li>\n\n\n\n<li><strong>D\u00e9veloppeurs : V\u00e9rifier l\u2019\u00e9chappement<\/strong> des champs ACF dans le th\u00e8me\/blocs\/shortcodes : n\u2019affichez jamais \u201cbrut\u201d ce qui vient d\u2019un champ.<\/li>\n\n\n\n<li><strong>V\u00e9rifier les droits<\/strong> : qui peut cr\u00e9er\/\u00e9diter des champs, importer des JSON, publier du contenu riche ?<\/li>\n\n\n\n<li><strong>\u00c9viter les imports non fiables<\/strong> : ne chargez pas de groupes de champs provenant de sources externes sans audit. Un bon rappel.<\/li>\n\n\n\n<li><strong>Surveiller<\/strong> : WAF actif, logs d\u2019admin, alertes sur modifications de templates\/pages sensibles.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Durcissement recommand\u00e9 (bonus)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>D\u00e9ployer une <strong>Content-Security-Policy<\/strong> pour limiter l\u2019ex\u00e9cution de scripts non attendus.<\/li>\n\n\n\n<li>Centraliser les sorties ACF via des <strong>helpers qui \u00e9chappent syst\u00e9matiquement<\/strong>.<\/li>\n\n\n\n<li>Repasser les pages critiques avec un <strong>scanner XSS<\/strong> et un crawl \u00e0 la recherche d\u2019\u00e9l\u00e9ments HTML inattendus.<\/li>\n\n\n\n<li>Activer un WAF (pare-feu applicatif), comme <a href=\"https:\/\/portail.lrob.fr\/en\/hebergement-web\/\">actif par d\u00e9faut sur les h\u00e9bergements LRob<\/a>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u201cMon site a l\u2019air sain, je peux attendre ?\u201d<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Mauvaise id\u00e9e : le co\u00fbt d\u2019une MEP est minime face au risque d\u2019un d\u00e9tournement de contenu sur des pages cl\u00e9s.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u201cMon th\u00e8me \u00e9chappe d\u00e9j\u00e0 les variables, je suis couvert ?\u201d<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tu r\u00e9duis le risque, mais <strong>mets quand m\u00eame \u00e0 jour<\/strong> : tu ne ma\u00eetrises pas tous les points d\u2019entr\u00e9e (imports, blocs\/shortcodes tiers).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u201cJe ne peux pas patcher aujourd\u2019hui\u201d<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Active un <strong>WAF<\/strong>, <strong>g\u00e8le<\/strong> les comptes non indispensables, <strong>d\u00e9sactive<\/strong> temporairement les affichages \u201criches\u201d susceptibles d\u2019injection, puis planifie la mise \u00e0 jour au plus vite.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sources<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>JVN (fiche d\u00e9taill\u00e9e, CVSS v4.0 4.6 &amp; v3.0 3.4) : <a href=\"https:\/\/jvn.jp\/en\/jp\/JVN21048820\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">https:\/\/jvn.jp\/en\/jp\/JVN21048820\/<\/a><\/li>\n\n\n\n<li>CVE Program (CVE Record officiel) : <a href=\"https:\/\/www.cve.org\/CVERecord?id=CVE-2025-54940\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">https:\/\/www.cve.org\/CVERecord?id=CVE-2025-54940<\/a><\/li>\n\n\n\n<li>Annonce ACF \u2013 Security release 6.4.3 : <a href=\"https:\/\/www.advancedcustomfields.com\/blog\/acf-6-4-3-security-release\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">https:\/\/www.advancedcustomfields.com\/blog\/acf-6-4-3-security-release\/<\/a><\/li>\n\n\n\n<li>Fiche plugin ACF (installations actives, changelog) : <a href=\"https:\/\/wordpress.org\/plugin\/advanced-custom-fields\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">https:\/\/wordpress.org\/plugin\/advanced-custom-fields\/<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Une faille d\u2019injection HTM touche Advanced Custom Fields jusqu\u2019en version 6.4.2. Risque mod\u00e9r\u00e9 mais \u00e0 corriger rapidement pour \u00e9viter d\u00e9gradations, phishing ou XSS.<\/p>","protected":false},"author":1,"featured_media":7844,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45],"tags":[],"class_list":["post-7843","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-securite"],"_links":{"self":[{"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/posts\/7843","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/comments?post=7843"}],"version-history":[{"count":0,"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/posts\/7843\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/media\/7844"}],"wp:attachment":[{"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/media?parent=7843"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/categories?post=7843"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/portail.lrob.fr\/en\/wp-json\/wp\/v2\/tags?post=7843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}