Skip to content
DevMeme
5461 of 7590
Security Post #5985 · source on Telegram

Programming Paradigms: From Mainstream Design to Advanced Security Exploits

Description

This meme uses a photo of two children, a young girl and a younger, crying boy, huddled together in fear in the corner of a room. A small, black rabbit is on the floor nearby. Text overlays categorize the characters: the girl is labeled 'OBJECT ORIENTED PROGRAMMERS', the crying boy is 'DATA ORIENTED PROGRAMMERS', and the seemingly harmless rabbit is 'RETURN ORIENTED PROGRAMMERS'. The setting appears to be a house interior, with light-colored siding on one wall and a pale blue wall on the other. A watermark for 'imgflip.com' is in the bottom left corner. The humor is multi-layered and targets an experienced technical audience. It contrasts two legitimate but different software design paradigms (Object-Oriented and Data-Oriented) with a term that sounds similar but is actually a dangerous security exploit. Object-Oriented Programming is mainstream. Data-Oriented design is a more specialized, performance-centric approach, hence the more stressed-out character. The punchline is that 'Return-Oriented Programming' is not a way to design software, but a sophisticated hacking technique used to hijack a program's control flow. The meme hilariously portrays the two design paradigms as being terrified of the security exploit, which is cleverly represented by the deceptively innocent rabbit

Comments

13
Anonymous ★ Top Pick I told the junior dev our new service was based on return-oriented programming. He spent a week trying to implement it before I explained it's a security team thing, not a design pattern
  1. Anonymous ★ Top Pick

    I told the junior dev our new service was based on return-oriented programming. He spent a week trying to implement it before I explained it's a security team thing, not a design pattern

  2. Anonymous

    We spent weeks bikeshedding over SOLID vs cache-friendly SoA; the pen-tester hopped in with a three-gadget ROP chain and bypassed the whole architecture like ASLR was a baby gate

  3. Anonymous

    The real power move is when your data-oriented code is so cache-friendly that the OOP architects start questioning their 17-layer abstraction hierarchies, while the security team quietly hopes nobody notices they've been using ROP gadgets to bypass ASLR since 2012

  4. Anonymous

    The real joke here is that while OOP developers are standing tall and data-oriented programmers are getting down to the metal for cache coherency, return-oriented programmers aren't actually writing code - they're chaining together existing instruction sequences to bypass DEP. It's the ultimate form of code reuse: exploiting the gadgets already in your binary. Though to be fair, after debugging a deeply nested OOP hierarchy with virtual inheritance, sometimes ROP gadgets feel more maintainable than the class diagram

  5. Anonymous

    OOP's embrace shows why DOP chokes on cache misses - while ROP devs know the real chains are gadgets, not hugs

  6. Anonymous

    While we argue inheritance vs composition, the return-oriented programmer is composing gadgets with your saved RIP

  7. Anonymous

    After two quarters debating OOP vs data-oriented for cache locality, the attacker shipped a ROP chain that turned our error handlers into gadgets

  8. @RiedleroD 2y

    salary oriented programmers:

  9. @purplesyringa 2y

    That's meeeee :3

    1. @sylfn 2y

      🥺

  10. @MrZarei 2y

    What the duck is return oriented programming?

    1. @Girrese 2y

      Exploit

    2. @ZgGPuo8dZef58K6hxxGVj3Z2 2y

      Maybe they mean something else but I think they mean when you have a stack that you try to manipulate in ways it does what you program. So like “exploit programmer”

Use J and K for navigation