19 · 2026
Secure Code Judge Sandbox
ตัวรันโค้ดแบบ online judge ที่คอมไพล์และรันโค้ดที่ไม่น่าไว้ใจอย่างปลอดภัย จำกัดเวลา/หน่วยความจำ และบล็อก system call อันตรายAn online-judge style runner that compiles and runs untrusted code safely — time/memory limits and dangerous syscalls blocked.
// process ลูก: จำกัด → กรอง → รันstruct rlimit cpu = { .rlim_cur = 1, .rlim_max = 1 };setrlimit(RLIMIT_CPU, &cpu);seccomp_load(filter); // block socket, ptrace ...execve(path, argv, envp);ภาพรวม
Sandbox สำหรับรันโค้ดที่ส่งเข้ามาแบบ online judge โดยใช้ system call ของ Linux โดยตรง
หลักการทำงาน
fork()แยก process ลูกสำหรับโค้ดที่จะรัน- ตั้งขีดจำกัดด้วย
setrlimit()(CPU time, memory) - กรอง system call อันตรายด้วย
seccomp execve()รันโปรแกรม และใช้alarm()/ signal กันโปรแกรมค้างwait4()เก็บผลลัพธ์ เวลา และหน่วยความจำที่ใช้
มีแผนทำเว็บเดโมที่แสดงแต่ละขั้นตอนด้วยแอนิเมชัน
Overview
A sandbox for running submitted code, online-judge style, built directly on Linux system calls.
How it works
fork()a child process for the submission- Set limits with
setrlimit()(CPU time, memory) - Filter dangerous system calls with
seccomp execve()the program, withalarm()/ signals to stop runaway codewait4()to collect the result, time and memory usage
A web demo that animates each step is planned.