{"id":154,"date":"2026-01-19T00:00:00","date_gmt":"2026-01-18T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/sv\/kritisk-privilege-escalation-i-acf-extended-sa-sakrar-du-dina-wordpress-sajter\/"},"modified":"2026-01-19T00:00:00","modified_gmt":"2026-01-18T23:00:00","slug":"kritisk-privilege-escalation-i-acf-extended-sa-sakrar-du-dina-wordpress-sajter","status":"publish","type":"post","link":"https:\/\/helloblog.io\/sv\/kritisk-privilege-escalation-i-acf-extended-sa-sakrar-du-dina-wordpress-sajter\/","title":{"rendered":"Kritisk privilege escalation i ACF Extended: vad som faktiskt \u00e4r drabbat och hur du s\u00e4krar dina WordPress-sajter"},"content":{"rendered":"\n<p>Om du anv\u00e4nder <strong>Advanced Custom Fields: Extended<\/strong> (ofta kallat <em>ACF Extended<\/em> eller ACFE) som addon till Advanced Custom Fields kan du beh\u00f6va agera snabbt. Wordfence har g\u00e5tt ut med en rapport om en <strong>kritisk privilege escalation<\/strong> (beh\u00f6righetseskalering) d\u00e4r en oautentiserad angripare kan ge sig sj\u00e4lv administrat\u00f6rsbeh\u00f6righet \u2013 under vissa f\u00f6ruts\u00e4ttningar.<\/p>\n\n\n\n<p>Det viktiga h\u00e4r \u00e4r att risken inte n\u00f6dv\u00e4ndigtvis g\u00e4ller alla installationer \u201cper automatik\u201d, utan fr\u00e4mst sajter d\u00e4r man byggt <strong>frontend-formul\u00e4r<\/strong> i ACFE som kan skapa eller uppdatera anv\u00e4ndare och d\u00e4r en <em>role<\/em>-input \u00e4r kopplad (mappad) till \u00e5tg\u00e4rden. Men eftersom konsekvensen \u00e4r total kompromettering av sajten om den g\u00e5r att utnyttja, \u00e4r patch-niv\u00e5n \u00e4nd\u00e5 n\u00e5got du vill ha koll p\u00e5 omg\u00e5ende.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"1600\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/acfe-1-scaled-1.png\" alt=\"ACF Extended-gr\u00e4nssnitt d\u00e4r ett f\u00e4lt f\u00f6r anv\u00e4ndarroll kan begr\u00e4nsas via inst\u00e4llningen Allow User Role\" class=\"wp-image-153\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/acfe-1-scaled-1.png 2560w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/acfe-1-scaled-1-300x188.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/acfe-1-scaled-1-1024x640.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/acfe-1-scaled-1-768x480.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/acfe-1-scaled-1-1536x960.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/acfe-1-scaled-1-2048x1280.png 2048w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/acfe-1-scaled-1-400x250.png 400w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">ACFE har UI-st\u00f6d f\u00f6r att begr\u00e4nsa vilka roller som f\u00e5r v\u00e4ljas \u2013 men s\u00e5rbarheten handlade om att detta inte uppr\u00e4tth\u00f6lls i formul\u00e4rfl\u00f6det. \u2014 <em>Forr\u00e1s: Wordfence.com<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Vad \u00e4r det som \u00e4r s\u00e5rbart?<\/h2>\n\n\n\n<p>S\u00e5rbarheten g\u00e4ller pluginet <strong>Advanced Custom Fields: Extended<\/strong> i versioner <strong>\u2264 0.9.2.1<\/strong> och \u00e4r registrerad som <strong>CVE-2025-14533<\/strong> med <strong>CVSS 9.8 (Critical)<\/strong>. Enligt Wordfence handlar det om att pluginets hantering av \u201cInsert User\u201d-\u00e5tg\u00e4rden (skapa anv\u00e4ndare) inte begr\u00e4nsar vilka roller som f\u00e5r s\u00e4ttas vid registrering.<\/p>\n\n\n\n<p>I praktiken betyder det att om din ACFE-form tar emot en parameter\/f\u00e4lt som mappas till <code>role<\/code> kan en angripare skicka in <code>administrator<\/code> och d\u00e4rmed skapa en administrat\u00f6r p\u00e5 sajten utan att vara inloggad.<\/p>\n\n\n\n<div class=\"wp-block-group callout callout-warning is-style-warning is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Det h\u00e4r \u00e4r den avg\u00f6rande f\u00f6ruts\u00e4ttningen<\/h4>\n\n\n<p>Wordfence noterar att s\u00e5rbarheten bara kan utnyttjas om <strong>f\u00e4ltet \u201crole\u201d \u00e4r mappat till ett custom field<\/strong> i formul\u00e4ret. Har du inga ACFE-formul\u00e4r som hanterar anv\u00e4ndare (Create\/Update user) med role-f\u00e4lt, \u00e4r angreppsytan typiskt sett inte densamma.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Var i fl\u00f6det uppst\u00e5r felet?<\/h2>\n\n\n\n<p>Tekniskt pekar Wordfence p\u00e5 att ACFE anv\u00e4nder en <code>insert_user()<\/code>-funktion i en modulklass f\u00f6r formul\u00e4r-\u00e5tg\u00e4rder och att argumenten som skickas vidare till WordPress (<code>wp_insert_user<\/code>) kan inneh\u00e5lla roll utan att pluginet stoppar\/whitelistar roller baserat p\u00e5 de begr\u00e4nsningar du satt i UI:t. Resultatet blir en klassisk mismatch mellan \u201cvad UI:t lovar\u201d och \u201cvad servern faktiskt validerar\u201d.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>\/\/ F\u00f6renklad illustration av problemet enligt Wordfence analys:\n\/\/ Formdata byggs upp till $args och skickas till wp_insert_user()\n\/\/ utan att roll (role) begr\u00e4nsas till en till\u00e5ten lista.\n\n$user_id = wp_insert_user( $args );\n\n\/\/ Om $args['role'] kan s\u00e4ttas av en oautentiserad klient\n\/\/ och inte valideras, kan den bli 'administrator'.\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#6A737D\">\/\/ F\u00f6renklad illustration av problemet enligt Wordfence analys:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ Formdata byggs upp till $args och skickas till wp_insert_user()<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ utan att roll (role) begr\u00e4nsas till en till\u00e5ten lista.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">$user_id <\/span><span style=\"color:#F97583\">=<\/span><span style=\"color:#B392F0\"> wp_insert_user<\/span><span style=\"color:#E1E4E8\">( $args );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ Om $args['role'] kan s\u00e4ttas av en oautentiserad klient<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">\/\/ och inte valideras, kan den bli 'administrator'.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Det \u00e4r ocks\u00e5 d\u00e4rf\u00f6r det h\u00e4r blir s\u00e5 allvarligt: f\u00e5r angriparen ett admin-konto kan de i princip g\u00f6ra allt som en administrat\u00f6r kan i WordPress \u2013 exempelvis installera\/uppdatera plugins och teman, ladda upp filer och i v\u00e4rsta fall placera en bakd\u00f6rr.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vilka versioner \u00e4r drabbade \u2013 och vilken version ska du k\u00f6ra?<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Drabbade versioner: <strong>Advanced Custom Fields: Extended \u2264 0.9.2.1<\/strong><\/li>\n\n\n<li>Fixad version: <strong>0.9.2.2<\/strong><\/li>\n\n\n<li>CVE: <strong>CVE-2025-14533<\/strong><\/li>\n\n\n<li>Allvarlighetsgrad enligt Wordfence: <strong>CVSS 9.8 (Critical)<\/strong><\/li>\n\n<\/ul>\n\n\n\n<p>Rekommendationen fr\u00e5n Wordfence \u00e4r att uppdatera till den patchade versionen <strong>0.9.2.2<\/strong> (\u201dat the time of publication\u201d i deras rapport).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hur du snabbt verifierar om du \u00e4r exponerad (praktiskt checklista)<\/h2>\n\n\n\n<p>F\u00f6r en utvecklare eller tekniskt ansvarig \u00e4r det h\u00e4r den mest konkreta delen: avg\u00f6r om sajten bara beh\u00f6ver uppdateras (vilket den b\u00f6r) eller om du dessutom m\u00e5ste rensa\/mitigera en farlig formul\u00e4rkonfiguration.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li><strong>Kontrollera plugin-versionen<\/strong> f\u00f6r Advanced Custom Fields: Extended. Ligger den p\u00e5 0.9.2.1 eller l\u00e4gre \u2192 uppdatera direkt till 0.9.2.2.<\/li>\n\n\n<li><strong>Inventera ACFE Forms<\/strong>: finns formul\u00e4r med actiontypen <em>Create user<\/em> (insert_user) eller <em>Update user<\/em>?<\/li>\n\n\n<li>Om ja: <strong>leta efter f\u00e4ltmappning till roll<\/strong> (role). Det r\u00e4cker ofta att ett \u201crole\u201d-f\u00e4lt \u00e4r exponerat i frontend-formul\u00e4ret f\u00f6r att bli en angreppsvektor.<\/li>\n\n\n<li><strong>Granska om formul\u00e4ren \u00e4r offentliga<\/strong> (tillg\u00e4ngliga f\u00f6r oinloggade). Ju mer \u00f6ppet formul\u00e4r, desto st\u00f6rre risk.<\/li>\n\n\n<li><strong>Efter uppdatering<\/strong>: \u00f6verv\u00e4g att tillf\u00e4lligt ta bort role-f\u00e4lt fr\u00e5n frontend-formul\u00e4r eller h\u00e5rdvalidera roller i server-side hook\/filter om din l\u00f6sning kr\u00e4ver rollstyrning.<\/li>\n\n<\/ol>\n\n\n\n<div class=\"wp-block-group callout callout-info is-style-info is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Varf\u00f6r \u201crole\u201d-f\u00e4lt i frontend \u00e4r k\u00e4nsligt<\/h4>\n\n\n<p>Att l\u00e5ta en klient styra <code>role<\/code> \u00e4r i grunden en privilegiek\u00e4nslig operation. \u00c4ven om du visar en dropdown med \u201cSubscriber\u201d, m\u00e5ste servern alltid g\u00f6ra slutvalideringen. UI-begr\u00e4nsningar \u00e4r aldrig ett s\u00e4kerhetslager.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Wordfence-skydd och tidslinje (bra att k\u00e4nna till om du driftar m\u00e5nga sajter)<\/h2>\n\n\n\n<p>Enligt Wordfence skickades en brandv\u00e4ggsregel ut till betalande kunder (Wordfence Premium\/Care\/Response) <strong>11 december 2025<\/strong>. Samma skydd rullades ut till gratisversionen <strong>10 januari 2026<\/strong>. Sj\u00e4lva pluginfixen fr\u00e5n leverant\u00f6ren sl\u00e4pptes <strong>14 december 2025<\/strong>.<\/p>\n\n\n\n<p>Po\u00e4ngen: om du sitter med fri Wordfence och inte uppdaterade pluginet snabbt kan du ha haft en l\u00e4ngre exponering, beroende p\u00e5 din formul\u00e4rkonfiguration.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vad du b\u00f6r g\u00f6ra om du misst\u00e4nker utnyttjande<\/h2>\n\n\n\n<p>Wordfences rapport fokuserar p\u00e5 s\u00e5rbarheten och patchen, men rent operativt \u00e4r det h\u00e4r de vanligaste tecknen att kontrollera vid den h\u00e4r typen av incident:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Nya administrat\u00f6rskonton du inte k\u00e4nner igen (kolla anv\u00e4ndarlistan och historik om du loggar detta).<\/li>\n\n\n<li>Ov\u00e4ntade plugin-\/temainstallationer eller nyligen \u00e4ndrade filer.<\/li>\n\n\n<li>Ov\u00e4ntade redirects eller spam-inneh\u00e5ll i inl\u00e4gg\/sidor.<\/li>\n\n\n<li>Konstiga cron-jobb eller nya PHP-filer p\u00e5 m\u00e4rkliga platser.<\/li>\n\n<\/ul>\n\n\n\n<p>Om du hittar sp\u00e5r av intr\u00e5ng beh\u00f6ver du behandla det som en full compromise: rotera l\u00f6senord, regenerera API-nycklar, kontrollera filintegritet och st\u00e4da upp eventuella bakd\u00f6rrar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sammanfattning<\/h2>\n\n\n\n<p>CVE-2025-14533 i <strong>Advanced Custom Fields: Extended<\/strong> \u00e4r en kritisk s\u00e5rbarhet som kan ge oinloggade angripare administrat\u00f6rsr\u00e4ttigheter n\u00e4r ett ACFE-formul\u00e4r l\u00e5ter <code>role<\/code> f\u00f6lja med in i anv\u00e4ndarskapandet utan korrekt server-side validering. \u00c4ven om den mest kritiska effekten typiskt kr\u00e4ver en specifik formul\u00e4rsetup, \u00e4r \u00e5tg\u00e4rden enkel och tydlig: <strong>uppdatera ACFE till 0.9.2.2<\/strong> och se \u00f6ver om du exponerar role i frontend-formul\u00e4r.<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Referenser \/ K\u00e4llor<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/www.wordfence.com\/blog\/2026\/01\/100000-wordpress-sites-affected-by-privilege-escalation-vulnerability-in-advanced-custom-fields-extended-wordpress-plugin\/\" target=\"_blank\" rel=\"noopener noreferrer\">100,000 WordPress Sites Affected by Privilege Escalation Vulnerability in Advanced Custom Fields: Extended WordPress Plugin<\/a><\/li><li><a href=\"https:\/\/www.wordfence.com\/threat-intel\/vulnerabilities\/wordpress-plugins\/acf-extended\/advanced-custom-fields-extended-0921-unauthenticated-privilege-escalation-via-insert-user-form-action\" target=\"_blank\" rel=\"noopener noreferrer\">Advanced Custom Fields: Extended &lt;= 0.9.2.1 &#8212; Unauthenticated Privilege Escalation via Insert User Form Action<\/a><\/li><li><a href=\"https:\/\/www.cve.org\/CVERecord?id=CVE-2025-14533\" target=\"_blank\" rel=\"noopener noreferrer\">CVE-2025-14533<\/a><\/li><li><a href=\"https:\/\/wordpress.org\/plugins\/acf-extended\/\" target=\"_blank\" rel=\"noopener noreferrer\">Advanced Custom Fields: Extended (WordPress.org plugin directory)<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>En kritisk s\u00e5rbarhet i Advanced Custom Fields: Extended (ACF Extended) kan l\u00e5ta en oinloggad angripare bli administrat\u00f6r \u2013 men bara i en specifik konfiguration. H\u00e4r \u00e4r vad du beh\u00f6ver kontrollera och vilka versioner som m\u00e5ste uppdateras.<\/p>\n","protected":false},"author":62,"featured_media":152,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[77,78,58,13,10],"class_list":["post-154","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sakerhet","tag-acf-extended","tag-cve-2025-14533","tag-sarbarhet","tag-wordfence","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/posts\/154","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/users\/62"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/comments?post=154"}],"version-history":[{"count":0,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/posts\/154\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/media\/152"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/media?parent=154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/categories?post=154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/tags?post=154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}