{"id":276,"date":"2026-08-20T17:39:24","date_gmt":"2026-08-20T15:39:24","guid":{"rendered":"https:\/\/helloblog.io\/sl\/kriticna-ranljivost-elementor-pro-neoverjeno-nalaganje-datotek\/"},"modified":"2026-08-20T17:39:24","modified_gmt":"2026-08-20T15:39:24","slug":"kriticna-ranljivost-elementor-pro-neoverjeno-nalaganje-datotek","status":"publish","type":"post","link":"https:\/\/helloblog.io\/sl\/kriticna-ranljivost-elementor-pro-neoverjeno-nalaganje-datotek\/","title":{"rendered":"Kriti\u010dna ranljivost v Elementor Pro omogo\u010da neoverjen nalaganje PHP datotek"},"content":{"rendered":"\n<p>V Elementor Pro so odkrili kriti\u010dno ranljivost, ki neoverjenemu napadalcu omogo\u010da nalaganje poljubnih datotek, tudi izvr\u0161ljivih datotek PHP. Uspe\u0161en napad lahko privede do oddaljenega izvajanja kode in popolnega prevzema spletnega mesta. Prizadete so vse razli\u010dice Elementor Pro do vklju\u010dno 4.2.1, popravek pa prina\u0161a razli\u010dica 4.2.2.<\/p>\n\n\n\n<div class=\"wp-block-group callout callout-danger is-style-danger 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\">Takoj posodobi Elementor Pro<\/h4>\n\n\n<p>Ranljivost nosi oznako CVE-2026-32475 in oceno CVSS 9,8 od 10. Napadalec ne potrebuje uporabni\u0161kega ra\u010duna, vendar mora spletno mesto objavljati obrazec Elementor Pro z vsaj enim neobveznim poljem File Upload.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Koga ranljivost zadeva<\/h2>\n\n\n\n<p>Elementor Pro je premium vti\u010dnik za WordPress, ki med drugim raz\u0161iri gradnik obrazcev Form in omogo\u010da polja za nalaganje datotek. Ocenjeno \u0161tevilo aktivnih namestitev dosega 6.000.000. Te\u017eava vpliva na <a href=\"https:\/\/elementor.com\/pro\/\">Elementor Website Builder Pro<\/a> v razli\u010dicah do 4.2.1.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>CVE:<\/strong> CVE-2026-32475<\/li>\n\n\n<li><strong>Ocena CVSS:<\/strong> 9,8, kriti\u010dno<\/li>\n\n\n<li><strong>Prizadete razli\u010dice:<\/strong> Elementor Pro 4.2.1 in starej\u0161e<\/li>\n\n\n<li><strong>Popravljena razli\u010dica:<\/strong> Elementor Pro 4.2.2<\/li>\n\n\n<li><strong>Pogoj za napad:<\/strong> javno objavljena stran z gradnikom Elementor Pro Form, ki vsebuje vsaj eno polje File Upload brez oznake required<\/li>\n\n\n<li><strong>Potrebne pravice napadalca:<\/strong> nobene; napad lahko izvede neoverjen obiskovalec<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Kaj gre narobe pri preverjanju datotek<\/h2>\n\n\n\n<p>Obrazec sprejme podatke prek funkcije <code>ajax_send_form()<\/code> v razredu <code>Ajax_Handler<\/code>, do katere lahko dostopajo tudi neoverjeni obiskovalci. Vti\u010dnik podatke obrazca in nalo\u017eene datoteke zapakira v objekt <code>Form_Record<\/code>, nato pa za polja File Upload pokli\u010de metodi <code>validation()<\/code> in <code>process_field()<\/code> iz razreda <code>ElementorProModulesFormsFieldsUpload<\/code>.<\/p>\n\n\n\n<p>Napaka je v validacijski zanki metode <code>validation()<\/code>. Ko polje ni obvezno in prva postavka v polju predstavlja prazno re\u017eo za datoteko z napako <code>UPLOAD_ERR_NO_FILE<\/code>, koda uporabi <code>return<\/code>. S tem zapusti celotno metodo in ne preveri nobene naslednje datoteke istega polja.<\/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>foreach ( $files[ $id ] as $index =&gt; $file ) {\n    \/\/ Pri neobveznem polju prazna prva re\u017ea prekine celo validacijo.\n    if ( ! $field['required'] &amp;&amp; UPLOAD_ERR_NO_FILE === $file['error'] ) {\n        return;\n    }\n\n    if ( ! $this-&gt;is_file_type_valid( $field, $file ) ) {\n        $ajax_handler-&gt;add_error( $id, 'This file type is not allowed.' );\n    }\n\n    if ( ! $this-&gt;is_file_size_valid( $field, $file ) ) {\n        $ajax_handler-&gt;add_error( $id, 'This file exceeds the maximum allowed size.' );\n    }\n}\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:#F97583\">foreach<\/span><span style=\"color:#E1E4E8\"> ( $files[ $id ] <\/span><span style=\"color:#F97583\">as<\/span><span style=\"color:#E1E4E8\"> $index <\/span><span style=\"color:#F97583\">=><\/span><span style=\"color:#E1E4E8\"> $file ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\">    \/\/ Pri neobveznem polju prazna prva re\u017ea prekine celo validacijo.<\/span><\/span>\n<span class=\"line\"><span style=\"color:#F97583\">    if<\/span><span style=\"color:#E1E4E8\"> ( <\/span><span style=\"color:#F97583\">!<\/span><span style=\"color:#E1E4E8\"> $field[<\/span><span style=\"color:#9ECBFF\">'required'<\/span><span style=\"color:#E1E4E8\">] <\/span><span style=\"color:#F97583\">&#x26;&#x26;<\/span><span style=\"color:#79B8FF\"> UPLOAD_ERR_NO_FILE<\/span><span style=\"color:#F97583\"> ===<\/span><span style=\"color:#E1E4E8\"> $file[<\/span><span style=\"color:#9ECBFF\">'error'<\/span><span style=\"color:#E1E4E8\">] ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color:#F97583\">        return<\/span><span style=\"color:#E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#F97583\">    if<\/span><span style=\"color:#E1E4E8\"> ( <\/span><span style=\"color:#F97583\">!<\/span><span style=\"color:#79B8FF\"> $this<\/span><span style=\"color:#F97583\">-><\/span><span style=\"color:#B392F0\">is_file_type_valid<\/span><span style=\"color:#E1E4E8\">( $field, $file ) ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">        $ajax_handler<\/span><span style=\"color:#F97583\">-><\/span><span style=\"color:#B392F0\">add_error<\/span><span style=\"color:#E1E4E8\">( $id, <\/span><span style=\"color:#9ECBFF\">'This file type is not allowed.'<\/span><span style=\"color:#E1E4E8\"> );<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#F97583\">    if<\/span><span style=\"color:#E1E4E8\"> ( <\/span><span style=\"color:#F97583\">!<\/span><span style=\"color:#79B8FF\"> $this<\/span><span style=\"color:#F97583\">-><\/span><span style=\"color:#B392F0\">is_file_size_valid<\/span><span style=\"color:#E1E4E8\">( $field, $file ) ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">        $ajax_handler<\/span><span style=\"color:#F97583\">-><\/span><span style=\"color:#B392F0\">add_error<\/span><span style=\"color:#E1E4E8\">( $id, <\/span><span style=\"color:#9ECBFF\">'This file exceeds the maximum allowed size.'<\/span><span style=\"color:#E1E4E8\"> );<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Pravilna logika bi na prazni re\u017ei uporabila <code>continue<\/code>, ki bi presko\u010dil le prazni element in nadaljeval preverjanje naslednjega. <code>return<\/code> pa prepre\u010di preverjanje kon\u010dnice z <code>is_file_type_valid()<\/code> in preverjanje velikosti z <code>is_file_size_valid()<\/code> za vse preostale datoteke v istem polju.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kako obid pripelje do izvajanja kode<\/h2>\n\n\n\n<p>Napadalec lahko polje za nalaganje po\u0161lje kot polje z dvema elementoma. Prvi element ostane prazen in spro\u017ei <code>UPLOAD_ERR_NO_FILE<\/code>, drugi pa vsebuje datoteko z napadal\u010devo vsebino in izbrano kon\u010dnico. Ker se validacija kon\u010da pri prvem elementu, vti\u010dnik druge datoteke ne preveri.<\/p>\n\n\n\n<p>Metoda <code>process_field()<\/code> prazni element pravilno presko\u010di z <code>continue<\/code>, zato nato obdela drugi element, ki ni prestal preverjanja. Kon\u010dnico prebere neposredno iz imena datoteke, ki ga po\u0161lje odjemalec, ustvari enoli\u010dno ime, datoteko premakne v imenik za nalaganje in ji nastavi dovoljenja <code>0644<\/code>.<\/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>foreach ( $files[ $id ] as $index =&gt; $file ) {\n    if ( UPLOAD_ERR_NO_FILE === $file['error'] ) {\n        continue;\n    }\n\n    $uploads_dir = $this-&gt;get_ensure_upload_dir();\n    $file_extension = pathinfo( $file['name'], PATHINFO_EXTENSION );\n    $filename = wp_unique_filename( $uploads_dir, uniqid() . '.' . $file_extension );\n    $new_file = trailingslashit( $uploads_dir ) . $filename;\n\n    Plugin::instance()-&gt;php_api-&gt;move_uploaded_file( $file['tmp_name'], $new_file );\n    chmod( $new_file, 0644 );\n}\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:#F97583\">foreach<\/span><span style=\"color:#E1E4E8\"> ( $files[ $id ] <\/span><span style=\"color:#F97583\">as<\/span><span style=\"color:#E1E4E8\"> $index <\/span><span style=\"color:#F97583\">=><\/span><span style=\"color:#E1E4E8\"> $file ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color:#F97583\">    if<\/span><span style=\"color:#E1E4E8\"> ( <\/span><span style=\"color:#79B8FF\">UPLOAD_ERR_NO_FILE<\/span><span style=\"color:#F97583\"> ===<\/span><span style=\"color:#E1E4E8\"> $file[<\/span><span style=\"color:#9ECBFF\">'error'<\/span><span style=\"color:#E1E4E8\">] ) {<\/span><\/span>\n<span class=\"line\"><span style=\"color:#F97583\">        continue<\/span><span style=\"color:#E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">    $uploads_dir <\/span><span style=\"color:#F97583\">=<\/span><span style=\"color:#79B8FF\"> $this<\/span><span style=\"color:#F97583\">-><\/span><span style=\"color:#B392F0\">get_ensure_upload_dir<\/span><span style=\"color:#E1E4E8\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">    $file_extension <\/span><span style=\"color:#F97583\">=<\/span><span style=\"color:#79B8FF\"> pathinfo<\/span><span style=\"color:#E1E4E8\">( $file[<\/span><span style=\"color:#9ECBFF\">'name'<\/span><span style=\"color:#E1E4E8\">], <\/span><span style=\"color:#79B8FF\">PATHINFO_EXTENSION<\/span><span style=\"color:#E1E4E8\"> );<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">    $filename <\/span><span style=\"color:#F97583\">=<\/span><span style=\"color:#B392F0\"> wp_unique_filename<\/span><span style=\"color:#E1E4E8\">( $uploads_dir, <\/span><span style=\"color:#79B8FF\">uniqid<\/span><span style=\"color:#E1E4E8\">() <\/span><span style=\"color:#F97583\">.<\/span><span style=\"color:#9ECBFF\"> '.'<\/span><span style=\"color:#F97583\"> .<\/span><span style=\"color:#E1E4E8\"> $file_extension );<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">    $new_file <\/span><span style=\"color:#F97583\">=<\/span><span style=\"color:#B392F0\"> trailingslashit<\/span><span style=\"color:#E1E4E8\">( $uploads_dir ) <\/span><span style=\"color:#F97583\">.<\/span><span style=\"color:#E1E4E8\"> $filename;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#79B8FF\">    Plugin<\/span><span style=\"color:#F97583\">::<\/span><span style=\"color:#B392F0\">instance<\/span><span style=\"color:#E1E4E8\">()<\/span><span style=\"color:#F97583\">-><\/span><span style=\"color:#E1E4E8\">php_api<\/span><span style=\"color:#F97583\">-><\/span><span style=\"color:#B392F0\">move_uploaded_file<\/span><span style=\"color:#E1E4E8\">( $file[<\/span><span style=\"color:#9ECBFF\">'tmp_name'<\/span><span style=\"color:#E1E4E8\">], $new_file );<\/span><\/span>\n<span class=\"line\"><span style=\"color:#79B8FF\">    chmod<\/span><span style=\"color:#E1E4E8\">( $new_file, <\/span><span style=\"color:#79B8FF\">0644<\/span><span style=\"color:#E1E4E8\"> );<\/span><\/span>\n<span class=\"line\"><span style=\"color:#E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>V ranljivih razli\u010dicah se lahko zato datoteka s kon\u010dnico <code>.php<\/code> zapi\u0161e neposredno v <code>\/wp-content\/uploads\/elementor\/forms\/<\/code>. \u010ce stre\u017enik tak\u0161no datoteko na zahtevo izvede, napadalec za\u017eene svojo PHP kodo. Poljubno nalaganje datotek lahko napadalci zlorabijo tudi z webshelli in drugimi tehnikami za popoln prevzem spletnega mesta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u010casovnica popravka<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li><strong>24. julija 2026:<\/strong> prek programa za nagrajevanje ranljivosti so prejeli prijavo neoverjenega nalaganja poljubnih datotek v Elementor Pro.<\/li>\n\n\n<li><strong>27. julija 2026:<\/strong> potrdili so prijavo in proof of concept ter o te\u017eavi obvestili razvijalce Elementorja.<\/li>\n\n\n<li><strong>2. avgusta 2026:<\/strong> razvijalci so sporo\u010dili, da je isto ranljivost prijavil tudi drug raziskovalec in da pripravljajo popravek.<\/li>\n\n\n<li><strong>19. avgusta 2026:<\/strong> iz\u0161la je Elementor Pro 4.2.2, ki ranljivost v celoti odpravi.<\/li>\n\n<\/ol>\n\n\n\n<p>Ranljivost je odgovorno prijavil varnostni raziskovalec prek programa Wordfence. Ker je Elementor za isto te\u017eavo \u017ee prejel neodvisno prijavo, uporablja CVE-2026-32475 oznako CVE, dodeljeno za tisto prijavo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kaj naredi zdaj<\/h2>\n\n\n\n<p>V nadzorni plo\u0161\u010di WordPressa takoj preveri razli\u010dico Elementor Pro in ga posodobi vsaj na 4.2.2 oziroma na najnovej\u0161o razpolo\u017eljivo popravljeno razli\u010dico. Posebno prednost daj spletnim mestom z javnimi obrazci, kjer uporabniki nalagajo priloge, predvsem kadar polje File Upload ni obvezno.<\/p>\n\n\n\n<p>Po posodobitvi preglej obrazce Elementor Pro, ki sprejemajo datoteke, in preveri, ali so na javnih straneh res potrebni. Nato preglej imenik <code>\/wp-content\/uploads\/elementor\/forms\/<\/code> za nepri\u010dakovane datoteke, zlasti datoteke PHP, saj lahko njihova prisotnost ka\u017ee na prej\u0161nji poskus zlorabe.<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Reference \/ Viri<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/www.wordfence.com\/blog\/2026\/08\/critical-arbitrary-file-upload-vulnerability-patched-in-elementor-pro-wordpress-plugin\/\" target=\"_blank\" rel=\"noopener noreferrer\">Critical Arbitrary File Upload Vulnerability Patched in Elementor Pro WordPress Plugin<\/a><\/li><li><a href=\"https:\/\/www.cve.org\/CVERecord?id=CVE-2026-32475\" target=\"_blank\" rel=\"noopener noreferrer\">CVE-2026-32475<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>\u010ce Elementor Pro uporablja obrazec z neobveznim poljem za nalaganje datotek, lahko napadalec obide preverjanje vrste datoteke. Posodobi vti\u010dnik na 4.2.2 ali novej\u0161o razli\u010dico.<\/p>\n","protected":false},"author":46,"featured_media":275,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[154,152,153,155,10],"class_list":["post-276","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-varnost","tag-cve-2026-32475","tag-elementor-pro","tag-ranljivost","tag-varnost-vticnikov","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/posts\/276","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/comments?post=276"}],"version-history":[{"count":0,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/posts\/276\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/media\/275"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/media?parent=276"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/categories?post=276"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/tags?post=276"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}