Linux 软件免费装
Banner图

Vulnity Security

开发者 manuelgalan
更新时间 2026年11月6日 17:13
PHP版本: 7.4 及以上
WordPress版本: 7.1
版权: GPLv2 or later
版权网址: 版权信息

标签

security monitoring siem intrusion-detection

下载

1.2.2 1.3.5 1.2.0 1.1.9 1.3.0 1.3.1 1.0.5 1.3.2 1.4.7 1.1.8 1.2.1 1.4.0 1.4.1 1.1.7 1.3.4 1.4.2 1.2.3 1.3.3 1.4.3 1.4.4 1.4.5 1.4.6

详情介绍:

Vulnity Security brings enterprise-grade threat detection to WordPress. It connects your site to Vulnity's SIEM platform, correlates events, and alerts you before issues become incidents. Features Integration Requirements To receive alerts, configure an API token and endpoint URL provided by your Vulnity SIEM account. Detailed configuration instructions are displayed after activating the plugin under Vulnity > Settings. WordPress Multisite is not supported in Vulnity Security 1.4.0. Network activation and subsite activation are blocked to avoid mixing configuration, firewall storage, cron jobs, or uninstall cleanup between subsites. Vulnity Security 1.4.0 requires WordPress 6.2 or newer. Older WordPress versions are blocked fail-safe so the plugin stays inactive instead of registering security, firewall, cron, REST, or SIEM behavior on an unsupported runtime. External Services This plugin connects to Vulnity's external API hosted on Supabase Edge Functions (domain: euxnoekqasvzwfcbybkg.supabase.co, base URL https://euxnoekqasvzwfcbybkg.supabase.co/functions/v1) to power SIEM alerts, inventory sync, and mitigation updates.

安装:

  1. Upload the plugin files to the /wp-content/plugins/vulnity directory or install from the WordPress plugin repository.
  2. Activate the plugin through the Plugins screen in WordPress.
  3. Navigate to Vulnity > Settings, enter your Vulnity SIEM credentials, and save.
  4. (Optional) Enable scheduled scans on the Monitoring tab to receive weekly reports.

屏幕截图:

  • Alert detail screen showing remediation steps.
  • Settings page for configuring API credentials and scan schedules.

升级注意事项:

1.4.7 Real visitor IP behind Cloudflare (blocks of real IPs start applying after the update) and renamed-login fixes: password reset, subdirectory installs, and the renamed URL no longer leaks to anonymous visitors. HTTPS detection is unchanged. 1.4.3 Coordinate this update with the Vulnity backend patch for organization whitelist inheritance and external connection verification. Existing local exceptions are preserved. 1.4.2 Adds complete IPv6 whitelist support and prevents false success acknowledgements when firewall persistence fails. Recommended for all sites using central mitigation. 1.4.1 Fixes the Disconnect button, stops Vulnity from blocking its own updates, and prevents a routine update from showing the site as disconnected in the panel. Recommended for every site. 1.3.5 Adds WP-Cron diagnostics, documentation guidance, and a throttled traffic fallback for delayed heartbeats. 1.3.4 Hardens hidden login URL handling and reduces malicious upload false positives for normal media files. 1.3.2 Adds WP-CLI pairing support for connecting many WordPress sites to Vulnity from a VPS safely. 1.3.1 Version 1.3.1 release. 1.2.3 Critical stability fixes: prevents admin lockout from firewall, reduces SIEM request timeouts, fixes uninstall leaving broken .htaccess, and expands REST API compatibility with popular plugins. 1.2.2 Fixes bidirectional auto-update sync with the SIEM: corrects authentication headers, dedup hashing, version tracking, and update trigger logic. 1.2.1 Maintenance release with Plugin Check compatibility fixes. 1.2.0 Fixes login URL validation and cron cleanup on disconnect. 1.1.9 Whitelist IPs are now sent to the SIEM during pairing to prevent them from being lost on sync. 1.1.8 Nginx warning now shows only once and includes a link to the solution documentation. 1.1.7 Deactivation now fully clears all cron jobs and .htaccess markers, including events re-scheduled by alert hooks. 1.1.5 Fixes a multisite uninstall query edge case that could log an SQL warning. 1.1.4 Uninstall cleanup now removes Vulnity firewall/log folders recursively so nothing is left behind. 1.1.3 Improved uninstall cleanup for firewall/log folders in restrictive hosting environments. 1.1.2 New rotating Vulnity logs plus safer firewall storage warnings and cleanup behavior for shared hosting. 1.1.1 Conservative .htaccess cleanup update: Vulnity now removes only its own marker blocks on deactivation and leaves user rules untouched. 1.1.0 Stability and compatibility update focused on safer lifecycle handling and cleaner admin UX. 1.0.5 Version bump to 1.0.5. 1.0.4 Version bump to 1.0.4. 1.0.3 Compliance-focused update to align asset loading, documentation, and escaping with WordPress.org guidelines. 1.0.2 Initial public release featuring Vulnity SIEM integration and security monitoring dashboard.

常见问题:

Do I need a Vulnity SIEM subscription?

Yes. The plugin requires an active Vulnity SIEM account to collect and analyze events.

Will the plugin slow down my site?

No. Event collection runs asynchronously and offloads processing to the Vulnity cloud platform.

Can I disable certain alerts?

Absolutely. Use the Alert Policies section within the plugin settings to mute or reclassify events.

How do Vulnity updates interact with WordPress automatic updates?

Vulnity's remote update settings and exclusions control updates requested by the Vulnity service. WordPress keeps its own automatic-update preferences for plugins and themes. Disabling an update or excluding a component in Vulnity does not disable native WordPress updates; manage those separately in WordPress. From 1.4.4, pairing no longer overrides previously saved WordPress preferences. Remote updates continue through WordPress's own upgrader and return a retryable failure while a native background update is running.

How does delegated login decide a request really came over HTTPS? (trust model)

The /sso gate and the plugin's HTTPS shim only believe forwarded headers (X-Forwarded-Proto, X-Forwarded-SSL) when the immediate network hop (REMOTE_ADDR) is a trusted proxy. Trusted means: an entry you configured in the vulnity_trusted_proxies option (IPs or CIDRs — recommended, keep it to the minimal real ranges of your proxy/CDN), or a private/reserved address, which is auto-trusted by default for compatibility with same-host reverse proxies. X-Forwarded-Proto is authoritative and fail-closed: any non-https segment rejects the request and X-Forwarded-SSL: on cannot override it. If a client could reach your origin directly from the private network, disable the automatic trust by returning false from the vulnity_trust_private_proxies filter (e.g. in a mu-plugin) and declare your proxies explicitly. Direct internet connections must satisfy is_ssl(). Cloudflare detection and the proxies declared in the Vulnity panel (see the next question) only affect which client IP is used; they never make the HTTPS shim or the /sso gate trust forwarded headers.

How does Vulnity find the real visitor IP behind Cloudflare?

By default (mode "Automatic"), when the connecting address (REMOTE_ADDR) is in Cloudflare's published IP ranges, the client IP is taken only from CF-Connecting-IP (or CF-Connecting-IPv6 when Cloudflare sends a pseudo-IPv4 address); X-Forwarded-For, X-Real-IP and Forwarded are ignored, and Cloudflare Worker subrequests (CF-Worker header) keep the connecting address. Separately, the plugin samples public requests (about one per minute) and marks the site as behind Cloudflare once at least 20 of them in 24 hours arrive through Cloudflare with a visitor CF-Connecting-IP (Worker subrequests are not counted) and the site's own host name (the WordPress address stored in the database) resolves in public DNS only to Cloudflare addresses. The DNS check runs in WP-Cron, at most once a day and only on sites that see Cloudflare traffic, and keeps someone else's traffic from switching this on or off. If the host name cannot be resolved (no outbound DNS, or WP-Cron disabled), the site is never marked automatically: use "Always Cloudflare" in the panel. It returns to normal when the host name stops resolving to Cloudflare or after 7 days without Cloudflare traffic. On a site marked behind Cloudflare, Cloudflare edge addresses and the proxies declared in the panel are never auto-blocked. Residual risk: a Cloudflare Worker or Snippet in a zone that points at your origin can set CF-Connecting-IP; Worker subrequests are excluded through the CF-Worker header, and if the site does not use Cloudflare you can switch detection off from the panel. From the Vulnity panel you can force the mode on ("Always Cloudflare"), switch it off (1.4.6 behaviour) and declare your own proxies (up to 32 IPs or CIDRs). The read-only "IP detection" card in Vulnity > Mitigation shows the current mode, whether Cloudflare was detected and the IP the plugin sees for you. HTTPS detection is not affected.

What is the HTTPS proxy shim and how do I disable it?

When TLS terminates at a trusted proxy and the origin receives plain HTTP, WordPress' is_ssl() is false, and session cookies would be written (and later read) with the wrong scheme. On load, the plugin applies the standard WordPress reverse-proxy shim — setting $_SERVER['HTTPS'] — but only after the same fail-closed validation as the SSO gate (trusted hop + all-https forwarded chain; never from an untrusted direct client). This keeps is_ssl() consistent site-wide so delegated-login cookies always carry the Secure attribute and remain readable in wp-admin. To disable it, set the option vulnity_https_proxy_shim to 0 or return false from the vulnity_https_proxy_shim filter; the canonical X-Forwarded-Proto shim in wp-config.php remains a valid alternative. Deliberate fail-closed: with the shim disabled and TLS only at the proxy, /sso answers 400 rather than ever issuing a non-Secure admin cookie. One-time note: on a site behind a TLS-terminating proxy that did not already have an is_ssl() shim, activating or updating to this version flips is_ssl() to true, so WordPress starts using the secure auth cookie. Any admin sessions established before the update are invalidated once and those users are asked to log in again — a single expected re-login, not a recurring one. If you already run the X-Forwarded-Proto shim in wp-config.php, nothing changes.

What does the renamed login hide, and how do I make an exception?

With the renamed login enabled, anonymous visitors get a 404 from wp-login.php and wp-admin, and WordPress no longer sends them to the renamed URL. Logged-in users still see it (for example in the log-out link), and so does anyone you show a "Log in" link to. Valid password-reset and personal-data links that point at wp-login.php still work. If a single sign-on or social login plugin needs to reach wp-login.php directly, return true from the vulnity_allow_direct_wp_login filter (arguments: the action WordPress will run and the request method) in a mu-plugin or early plugin code; it is evaluated on init priority 10. To send wp-admin pages that ask to log in again to the renamed URL as before, return true from vulnity_reveal_login_on_auth_redirect. The password form of protected posts and the confirmation link of personal-data requests use wp-login.php, so if your server, firewall or host blocks wp-login.php, let ?action=postpass (POST) and ?action=confirmaction (GET) through.

How do I disable delegated login on my site? (kill switch)

Set the option vulnity_delegated_login_enabled to 0, or return false from the vulnity_delegated_login_enabled filter from code you control (a mu-plugin or your theme). The filter is the last-resort guarantee: it works locally even if the central panel were compromised, so it will never be removed. While disabled, /sso answers 403 and no session can be created.

How is the /sso rate limit enforced?

Each redemption attempt atomically reserves one slot for the real client identity (resolved through the trusted proxy chain; IPv6 grouped by /64, IPv4 per host) in a fixed 300-second window, with a hard cap of 10 admitted attempts per identity and window — a concurrent burst cannot exceed it. A successful login refunds its slot, so only failures consume budget. The number of live rate-limit rows in wp_options is capped (oldest buckets are evicted deterministically, never merged into a shared bucket), and closed windows are swept hourly.

更新日志:

1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.9 1.3.5 1.3.4 1.3.2 1.3.1 1.2.3 1.2.2 1.2.1 1.2.0 1.1.9 1.1.8 1.1.7 1.1.5 1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.5 1.0.4 1.0.3 1.0.2