CVE-2025-15661
Executive Summary
CVE-2025-15661 is a critical heap-based out-of-bounds read vulnerability in the libssh2 library, affecting versions up to and including 1.11.1. The flaw resides in the sftp_symlink() function within src/sftp.c. A malicious SSH server or a man-in-the-middle attacker can exploit this by sending a crafted SSH_FXP_NAME response with an oversized link_len value during SFTP READLINK or REALPATH operations. This triggers a heap buffer over-read of up to target_len - 1 bytes, potentially leaking sensitive heap memory or causing a denial of service (crash). The vulnerability is remotely exploitable without authentication, making it a significant threat to any application using libssh2 for SFTP operations.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not specific to NPM, PyPI, Go, or Ruby ecosystems, but it affects the C library libssh2, which is a dependency for many higher-level packages across multiple languages. Applications in any ecosystem that bundle or dynamically link against a vulnerable version of libssh2 are at risk. Security teams must audit their software supply chain to identify and update any dependencies that rely on libssh2 <= 1.11.1.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – Exploitable remotely over the network.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – No authentication needed.
- User Interaction (UI): None (N) – No user action required.
- Scope (S): Unchanged (U) – Exploit does not affect other components.
- Confidentiality (C): High (H) – Potential disclosure of heap memory contents.
- Integrity (I): None (N) – No data modification.
- Availability (A): High (H) – Can cause a crash (DoS).
CVSS Score: 8.2 (High) – The combination of remote exploitability, low complexity, and potential for both information disclosure and denial of service makes this a high-severity threat.
Deep Dive & Mechanics
The vulnerability is in the sftp_symlink() function, which handles SFTP SSH_FXP_SYMLINK, SSH_FXP_READLINK, and SSH_FXP_REALPATH requests. When the client sends a READLINK or REALPATH request, the server responds with an SSH_FXP_NAME packet containing a list of file attributes. Each entry includes a link_len field that specifies the length of the symlink target path.
The vulnerable code path is as follows:
- The client receives the
SSH_FXP_NAMEpacket. - It parses the number of names in the response.
- For each name, it reads
link_lenfrom the packet. - It then performs a
memcpyoperation to copylink_lenbytes from the packet buffer into a local buffer (target) of sizetarget_len.
The flaw is that there is no validation to ensure that link_len does not exceed the remaining bytes in the packet buffer. An attacker can set link_len to a value larger than the actual packet data, causing memcpy to read beyond the allocated heap buffer. This over-read can leak adjacent heap memory or cause a segmentation fault if it reads into unmapped memory.
The target_len is typically set to a fixed size (e.g., 256 bytes) by the client. The attacker can set link_len to any value up to target_len - 1, but the actual packet data may be much smaller. The memcpy will then copy link_len bytes from the packet buffer, reading out-of-bounds.
Vulnerable vs. Patched Code
Vulnerable Code (libssh2 <= 1.11.1):
// src/sftp.c (simplified)
int sftp_symlink(LIBSSH2_SFTP *sftp, const char *linkpath, char *target,
size_t target_len) {
// ... send request ...
// ... receive SSH_FXP_NAME packet ...
unsigned char *data = packet->data;
size_t data_len = packet->data_len;
// Parse number of names
uint32_t names_count = _libssh2_ntohu32(data);
data += 4;
for (uint32_t i = 0; i < names_count; i++) {
// Parse filename length and filename (skipped for brevity)
// Parse long entry (skipped for brevity)
// Parse link_len
uint32_t link_len = _libssh2_ntohu32(data);
data += 4;
// VULNERABILITY: No check that link_len <= remaining data
memcpy(target, data, link_len); // Out-of-bounds read if link_len > remaining data
target[link_len] = '\0';
data += link_len;
}
}
Patched Code (commit 2dae302):
// src/sftp.c (patched)
int sftp_symlink(LIBSSH2_SFTP *sftp, const char *linkpath, char *target,
size_t target_len) {
// ... same as above ...
uint32_t link_len = _libssh2_ntohu32(data);
data += 4;
// PATCH: Validate that link_len does not exceed remaining packet data
if (link_len > (data_len - (data - packet->data))) {
// Error handling: invalid packet
return LIBSSH2_ERROR_SFTP_PROTOCOL;
}
// Also ensure link_len does not exceed target buffer size
if (link_len >= target_len) {
link_len = target_len - 1;
}
memcpy(target, data, link_len);
target[link_len] = '\0';
data += link_len;
}
The patch adds two critical checks:
- Ensures
link_lendoes not exceed the remaining bytes in the packet buffer. - Caps
link_lentotarget_len - 1to prevent buffer overflow in thetargetbuffer.
Exploitation & Lab Setup
Red Team
Prerequisites:
- A vulnerable client application using libssh2 <= 1.11.1 that performs SFTP
READLINKorREALPATHoperations. - Ability to act as a malicious SSH server or perform a man-in-the-middle attack.
Exploitation Steps:
- Setup a malicious SSH server that responds to SFTP requests with crafted packets.
- Wait for the client to send a
SSH_FXP_READLINKorSSH_FXP_REALPATHrequest. - Craft a malicious
SSH_FXP_NAMEresponse with an oversizedlink_lenvalue. For example, setlink_lento 255 while the actual packet data is only 10 bytes. - Send the crafted response to the client.
- Observe the client behavior: The
memcpywill read 255 bytes from the heap, potentially leaking sensitive data or causing a crash.
Example Python script for a malicious SFTP server (conceptual):
import socket
import struct
def handle_sftp_client(conn):
# ... SSH handshake and SFTP initialization ...
while True:
packet = recv_packet(conn)
if packet_type(packet) == SSH_FXP_READLINK:
# Craft malicious response
names_count = 1
filename_len = 5
filename = b"link"
long_entry_len = 10
long_entry = b"long_entry"
link_len = 255 # Oversized value
link_data = b"A" * 10 # Actual data is only 10 bytes
response = struct.pack('>I', names_count)
response += struct.pack('>I', filename_len) + filename
response += struct.pack('>I', long_entry_len) + long_entry
response += struct.pack('>I', link_len) + link_data
send_packet(conn, SSH_FXP_NAME, response)
Note: This is a simplified example. A real exploit would require proper SSH and SFTP protocol handling.
Blue Team
Detection and Prevention:
- Update libssh2 to the patched version (commit 2dae302 or later).
- Monitor for anomalous SFTP responses with unusually large
link_lenvalues. - Use network intrusion detection systems (NIDS) to detect malformed SFTP packets.
- Implement heap canaries or ASLR to make exploitation harder, but these are not complete mitigations.
- Audit all applications that use libssh2 for SFTP functionality and ensure they are updated.
Indicators of Compromise (IOCs)
- Network IOCs:
- SFTP
SSH_FXP_NAMEpackets withlink_lenvalues significantly larger than the actual packet data. - Repeated SFTP
READLINKorREALPATHrequests followed by client crashes.
- SFTP
- Host IOCs:
- Application crashes with segmentation faults in
sftp_symlink(). - Heap memory dumps containing sensitive data (e.g., passwords, keys) in crash logs.
- Application crashes with segmentation faults in
- File IOCs:
- Presence of libssh2 versions <= 1.11.1 in the software inventory.
Detection Engineering
YARA Rule
rule CVE_2025_15661_libssh2_sftp_symlink_oob_read {
meta:
description = "Detects vulnerable libssh2 versions based on binary patterns"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-15661"
strings:
$sftp_symlink = "sftp_symlink" ascii wide nocase
$memcpy = { 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24 ?? 8B ?? 24