Skip to content

Shall We Play a Game

Tamas Szakaly

Shall We Play a Game

Summary

### Scripting Engines as Game Attack Surfaces At 02:30 and 06:24, Tamas Szakaly investigates the security implications of embedding scripting engines—predominantly Lua and custom interpreters—inside commercial video game engines. While scripting languages accelerate gameplay development and modding support, developers frequently expose low-level native functions and fail to properly sandbox scripts executing untrusted multiplayer data.

### SMB Traversal and Remote DLL Loading via UNC Paths At 12:57 and 19:58, Szakaly demonstrates how seemingly benign game scripting functions can be weaponized across local networks and multiplayer sessions. By feeding universal naming convention (UNC) file paths (`\\attacker\share\payload.dll`) into script-level file loaders, he forces the running game process to reach across the network and load arbitrary dynamic link libraries into memory.

### Unauthorized Memory Access and VM Sandbox Escapes At 27:13 and 34:15, the presentation delves into Lua virtual machine internals and bytecode exploitation. Szakaly demonstrates how corrupting upvalue pointers (`upval` structures) within Lua closures allows attackers to break out of the scripting environment. By manipulating closure offsets in memory, an attacker gains arbitrary memory read and write primitives within the host game process.

### Mitigations for Game Developers and Mod Ecosystems Concluding between 38:00 and 40:39, Szakaly outlines practical mitigations for game studios. He advises disabling dangerous Lua standard libraries (`io`, `os`, `package`), enforcing strict path validation to block UNC network paths, verifying bytecode integrity, and isolating mod execution within restricted privilege boundaries.

(AI summary — Gemini Flash)

Related talks