WP Manifestindependent plugin directory

Install

Download mehrana-app-3.9.14.zip From the 3.9.14 release on GitHub, Jan 9, 2026

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

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/mehrshadr/mehrana-wordpress-plugin/releases/download/3.9.14/mehrana-app-3.9.14.zip
Updates itself. It ships its own updater, so new versions appear under Dashboard → Updates.

Releases

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

Tag
Published
Assets
Downloads
3.9.14 latest
Jan 9, 2026 9mo ago
mehrana-app-3.9.14.zip
6
Jan 9, 2026 9mo ago
mehrana-app-3.9.13.zip
6
Jan 8, 2026 9mo ago
mehrana-app-v3.9.0.zip
2
Jan 8, 2026 9mo ago
mehrana-app-v3.8.9.zip
2
Jan 8, 2026 9mo ago
mehrana-app-v3.8.8.zip
4
Jan 8, 2026 9mo ago
mehrana-app-v3.8.7.zip
2
Jan 8, 2026 9mo ago
mehrana-app-v3.8.6.zip
2
Jan 8, 2026 9mo ago
mehrana-app-v3.8.4.zip
0
Jan 7, 2026 10mo ago
mehrana-app-v3.8.1.zip
0
Jan 7, 2026 10mo ago
mehrana-app-v3.7.3.zip
3
Jan 7, 2026 10mo ago
mehrana-app-v3.7.2.zip
1
Jan 7, 2026 10mo ago
mehrana-app-plugin.zip
2
Jan 7, 2026 10mo ago
mehrana-app-v3.6.0.zip
2
Jan 6, 2026 10mo ago
mehrana-app-v3.5.0.zip
2
Jan 6, 2026 10mo ago
mehrana-app-v3.4.0.zip
2
Jan 5, 2026 10mo ago
mehrana-app-v3.3.0.zip
2
Jan 5, 2026 10mo ago
mehrana-app.v3.2.0.zip
2
Jan 4, 2026 10mo ago
mehrana-app-v3.1.0.zip
4
Jan 3, 2026 10mo ago
mehrana-app-v3.0.0.zip
1
Jan 1, 2026 10mo ago
mehrana-app.v2.2.0.zip
3
Jan 1, 2026 10mo ago
mehrana-app.v2.1.0.zip
2
Dec 31, 2025 10mo ago
mehrana-app.v1.7.6.zip
0
D+ grade

Security

Mehrana App Plugin 3.9.14 · audited by WP Registry

High-severity findings.

1 high 1 medium 1 low
Audited release
3.9.14
Findings
3
Worst severity
high
Content hash
e951320e38965c9c08ac1df5…

Findings

  • high Arbitrary file copy and deletion via backup_path/backup_filename in media restore/delete-backup REST routes

    file_access

    restore_media() takes a raw backup_path (or backup_filename appended to uploads/mehrana-backups/ with no traversal check), copies it next to the attachment file, and then unlink()s backup_path. delete_backup() concatenates backup_filename into the backups dir and unlink()s it. No realpath containment is done. Any user with edit_pages (Editor) or the API key can delete wp-config.php (forcing re-install / site takeover) or any other writable file, and copy non-PHP server files into the public uploads directory to read them.

    mehrana-app.php:1397-1518

    Recommendation

    Drop the backup_path parameter; accept only a basename (sanitize_file_name / basename), build the path under uploads/mehrana-backups and verify realpath() stays inside that directory before copy/unlink. Consider requiring upload_files + manage_options for file-level operations.

  • medium Activity log written to publicly accessible wp-content/mehrana-app.log

    information_disclosure

    log() appends to WP_CONTENT_DIR . '/mehrana-app.log' (enabled by default: map_enable_logging defaults to '1'). Each entry contains the acting user's user_login, plus URLs, alt text, page IDs and S3 diagnostics. The file sits in the web root with no access protection, so unauthenticated visitors can download it and harvest admin/editor usernames.

    mehrana-app.php:2952-2962

    Recommendation

    Default logging off, write logs to a non-web-accessible or randomly named protected directory (with deny-all .htaccess / index.php), and avoid logging usernames.

  • low API key generated client-side with Math.random()

    predictable_token

    The admin 'Generate Key' button builds map_api_key with two Math.random().toString(36) chunks in the browser. Math.random is not a CSPRNG; the key grants full mehrana/v1 access (including the file operations above) without any user context.

    mehrana-app.php:3206-3215

    Recommendation

    Generate the key server-side with wp_generate_password(40, false) or bin2hex(random_bytes(24)).

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.