WP Manifestindependent plugin directory
manifest / builders / almahome

ALMa Home WP Registry grade B. Medium-severity findings · 2 findingsWP RegistryMedium-severity findings · 2 findingsOpen the reportB

Plugin na zakázku pro společnost ALMa Home s.r.o.

★ 0stars
71release downloads
≈10active sites
1.0.9latest · 2 years ago

Install

Download AlmaHome_v1.0.9.zip From the 1.0.9 release on GitHub, Apr 11, 2024

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/ultronstudio/almahome/releases/download/1.0.9/AlmaHome_v1.0.9.zip
Updates itself. It ships its own updater, so new versions appear under Dashboard → Updates.

Releases

10 releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
1.0.9 latest
Apr 11, 2024 2 years ago
AlmaHome_v1.0.9.zip
6
Apr 8, 2024 2 years ago
AlmaHome.zip
7
Apr 8, 2024 2 years ago
AlmaHome.zip
7
Apr 5, 2024 2 years ago
AlmaHome_v1.0.6.zip
6
Apr 3, 2024 2 years ago
AlmaHome_v1.0.5.zip
7
Apr 3, 2024 2 years ago
AlmaHome_v1.0.4.zip
10
Mar 25, 2024 2 years ago
AlmaHome_v1.0.3.zip
7
Mar 22, 2024 2 years ago
AlmaHome_v1.0.2.zip
8
Mar 14, 2024 2 years ago
AlmaHome_v1.0.1.zip
8
Mar 4, 2024 2 years ago
AlmaHome_v1.0.0.zip
5

Active-site estimate ≈10 comes from the median of recent superseded releases. Method.

B grade

Security

ALMa Home 1.0.9 · audited by WP Registry

Medium-severity findings.

1 medium 1 low
Audited release
1.0.9
Findings
2
Worst severity
medium
Content hash
03e275eede88ad8de2b651be…

Findings

  • medium Elementor calculator widgets interpolate settings into frontend HTML and inline JavaScript

    xss_stored

    KalkulackaServis::render() and KalkulackaRenovace::render() pass Elementor get_settings_for_display() values into render/kalkulacka-servis.php and render/kalkulacka-renovace.php. Those templates echo $titulek and $popis raw into the page and splice unit-price settings into an inline <script> as JavaScript numeric literals, using only esc_html() (HTML entity encoding). esc_html does not encode commas, parentheses, or semicolons, so a NUMBER setting such as 1,alert(document.domain),1 becomes executable JavaScript via the comma operator inside the script block. The same pattern exists for okenni_kridlo, balkonove_dvere_kridlo, psk_hs_portal, tesneni (service widget) and okenni_kridlo_od/do, euro_okno_od/do (renovation widget). $titulek is a TEXT control intended as a heading and is not escaped; $popis is a TEXTAREA whose default is HTML, so it is an intentional HTML field but is printed with no wp_kses_post. Write path is Elementor document save into _elementor_data (edit_post + Elementor Role Manager), not a plugin AJAX handler. On a default Elementor Role Manager only administrators can save; if editor/author/contributor is granted Elementor access they can persist a payload that runs for every visitor. The client-side innerHTML assignment of CzechPrice(parseFloat(input)) is not an XSS sink. Subscriber/customer cannot write these settings.

    render/kalkulacka-servis.php:11-57

    Recommendation

    Escape $titulek with esc_html() (or esc_attr() if used in attributes). Print $popis with wp_kses_post(). For values interpolated into JavaScript, cast with floatval() (or absint()) or pass them through wp_json_encode() / wp_localize_script() instead of esc_html() inside a <script> block. Same fixes in render/kalkulacka-renovace.php (title, description, and the four price literals around lines 42-45).

  • low Unscoped auto_update_plugin filter forces updates for every plugin

    insecure_config

    almahome.php hooks auto_update_plugin to __return_true with no $item check. WP_Automatic_Updater therefore treats every plugin as forced-auto-update, overriding per-plugin admin toggles site-wide. Combined with self_update() on update_plugins_github.com, this plugin itself auto-installs GitHub releases/latest assets[0].browser_download_url with no checksum or asset-name pin. A Subscriber cannot trigger installs; wp-cron/admin update checks can. The intended effect appears to be keeping this private plugin current; the unscoped filter also auto-installs unrelated wordpress.org (and other) plugin updates the site owner may have held back. Not attacker-reachable as an HTTP handler.

    almahome.php:145-147

    Recommendation

    Scope automatic updates to this plugin only, e.g. add_filter('auto_update_plugin', function ($update, $item) { return (!empty($item->plugin) && $item->plugin === 'AlmaHome/almahome.php') ? true : $update; }, 10, 2). Prefer pinning the GitHub asset by name and a hash instead of assets[0]. Remove leftover error_log() calls in self_update().

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.