{"id":"CVE-2026-113507","kind":"vulnerability","aliases":["CVE-2026-113507"],"related":[],"title":"aaPanel: spoofed X-Real-Ip header bypasses IP-based access controls","description":"A vulnerability was found in aaPanel up to 8.25.0. The impacted element is the function GetClientIp of the file class/public/common.py. The manipulation of the argument X-Real-Ip results in improper access controls. The attack may be performed from remote. The exploit has been made public and could be used. The vendor confirms: \"The reported X-Real-Ip IP-bypass vulnerability has already been fixed\".","summary":"aaPanel up to 8.25.0 trusts the X-Real-Ip request header in its GetClientIp function, so a remote client can set that header to a whitelisted address. This defeats IP-based access controls and lets the attacker reach restricted panel functions.","severity":"medium","cvss":5.5,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["aapanel","linux-servers","other","self-hosted"],"not_affected_if":["panel-not-internet-exposed","patched-version"],"how_to_check":"- Check the installed aaPanel version with the panel's version info or `cat /www/server/panel/class/common.py | grep -n X-Real-Ip` (path unknown if the install differs)\n- Look for `X-Real-Ip` handling in `class/public/common.py` in the panel directory\n- Confirm whether the panel is restricted by IP allowlist in its security settings","fix":"- Upgrade aaPanel to a release newer than `8.25.0` that includes the vendor's X-Real-Ip fix (exact fixed version unknown)\n- Until upgraded, restrict panel access at the firewall or reverse proxy rather than relying on the panel's IP allowlist\n- Stop trusting X-Real-Ip from untrusted clients at the proxy layer","status":"open","published_at":"2026-10-20T18:17:18+00:00","first_seen_at":"2026-10-23T21:57:21+00:00","triaged_at":"2026-10-25T04:12:29+00:00","updated_at":"2026-10-25T04:12:29+00:00","category":"other","confidence":0.6,"triage":{"at":"2026-10-25T04:12:29Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade aaPanel to a release newer than `8.25.0` that includes the vendor's X-Real-Ip fix (exact fixed version unknown)\n- Until upgraded, restrict panel access at the firewall or reverse proxy rather than relying on the panel's IP allowlist\n- Stop trusting X-Real-Ip from untrusted clients at the proxy layer","reach":"internet","title":"aaPanel: spoofed X-Real-Ip header bypasses IP-based access controls","impact":"medium","summary":"aaPanel up to 8.25.0 trusts the X-Real-Ip request header in its GetClientIp function, so a remote client can set that header to a whitelisted address. This defeats IP-based access controls and lets the attacker reach restricted panel functions.","category":"other","nicknames":[],"who_cares":["aaPanel","self-hosted","linux-servers"],"confidence":0.6,"needs_auth":"no","worst_case":"remote clients bypass IP restrictions and reach protected panel functions","analyst_note":"Find the exact fixed aaPanel version and the vendor advisory; the NVD entry has no fixed-version detail.","how_to_check":"- Check the installed aaPanel version with the panel's version info or `cat /www/server/panel/class/common.py | grep -n X-Real-Ip` (path unknown if the install differs)\n- Look for `X-Real-Ip` handling in `class/public/common.py` in the panel directory\n- Confirm whether the panel is restricted by IP allowlist in its security settings","needs_analyst":true,"not_affected_if":["patched-version","panel-not-internet-exposed"],"who_is_affected":"Servers running aaPanel up to version 8.25.0 that rely on its IP-based access controls to limit who reaches the panel. Exposure depends on whether the panel is reachable from the internet and whether those IP rules guard sensitive functions. Teams that already upgraded past the vendor fix, or that do not expose the panel, can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000698,"input_tokens":3337,"output_tokens":729,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-113507':16A,19A '-2026':15A,18A '8.25.0':31B,79C 'aapanel':1A,20B,28B,76C 'access':12A,61B,103C 'address':55B 'alreadi':136C 'argument':95C 'attack':66B,106C 'base':11A,60B 'bypass':8A,133C 'class/public/common.py':90C 'client':47B 'confirm':124C 'control':13A,62B,104C 'could':119C 'cve':14A,17A 'defeat':57B 'element':82C 'exploit':113C 'file':89C 'fix':138C 'found':74C 'function':43B,70B,85C 'getclientip':42B,86C 'header':7A,39B,51B 'host':27B 'impact':81C 'improp':102C 'ip':6A,10A,37B,59B,99C,130C,132C 'ip-bas':9A,58B 'ip-bypass':131C 'let':64B 'linux':22B 'linux-serv':21B 'made':116C 'manipul':92C 'may':107C 'panel':69B 'perform':109C 'public':117C 'reach':67B 'real':5A,36B,98C,129C 'remot':46B,111C 'report':126C 'request':38B 'restrict':68B 'result':100C 'self':26B 'self-host':25B 'server':23B 'set':49B 'spoof':2A 'trust':32B 'use':121C 'vendor':123C 'vulner':72C,134C 'whitelist':54B 'x':4A,35B,97C,128C 'x-real-ip':3A,34B,96C,127C","nicknames":[],"mitigations":[],"who_affected":"Servers running aaPanel up to version 8.25.0 that rely on its IP-based access controls to limit who reaches the panel. Exposure depends on whether the panel is reachable from the internet and whether those IP rules guard sensitive functions. Teams that already upgraded past the vendor fix, or that do not expose the panel, can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-20T18:17:18+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"cna@vuldb.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-113507","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-113507","severity":null,"published_at":"2026-10-20T18:17:18+00:00","modified_at":"2026-10-23T02:16:55+00:00","first_seen_at":"2026-10-23T21:57:21+00:00","fetched_at":"2026-10-23T22:28:58+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}