Foundationপ্রথম নীতি থেকে
LEVEL 10 · Computer Security

Return-Oriented Programming

রিটার্ন-ওরিয়েন্টেড প্রোগ্রামিং

নতুন code inject না করে, ইতিমধ্যে-loaded binary-র ছোট instruction-sequence ('gadget') চেইন করে NX bypass করা exploitation কৌশল।

also: rop, rop-chain

gadget = কয়েকটা instruction শেষ হয় `ret`-এ, ইতিমধ্যে binary/library-তে বিদ্যমান
corrupted stack = gadget-address-দের সিরিজ (fake "return address" chain)
ret → gadget1 চালায় → নিজের `ret`-এ পরের gadget → ... → কার্যকর payload
  • NX bit নতুন code inject করা বন্ধ করে, কিন্তু ইতিমধ্যে-executable মেমরির code চালানো বন্ধ করে না — ROP ঠিক সেই ফাঁক ব্যবহার করে
  • Shacham-এর “Geometry of Innocent Flesh on the Bone” (2007) দেখিয়েছে libc-র মতো একটা large library-ই Turing-complete gadget-set দিতে যথেষ্ট
  • CFI (Control-Flow Integrity) এই আক্রমণের সরাসরি জবাব — প্রতিটা indirect jump/return-কে শুধু legal target-এ সীমাবদ্ধ করে