SlideShare a Scribd company logo
1 of 56
Download to read offline
"Sections are types, linking is policy"
Intra-Process Memory Protection
for Applications on ARM and
x86: Leveraging the ELF ABI
Sergey Bratus
Julian Bangert
Maxwell Koo
Outline
❖ Why and how to use ELF ABI for policy
❖ Our design of an ELF-backed intra-memory ACLs
❖ Linux x86 prototype
❖ ARM prototype
❖ Case studies:
❖ ICS protocol proxy
❖ OpenSSH policy
Motivation
❖ File-level policies (e.g., SELinux) fail to capture what happens
inside a process (cf. Heartbleed, etc.)
❖ CFI, DFI, SFI, etc. are good mitigations, but they aren't policy:
they don't describe intended operation of code
❖ ELF ABI has plenty of structure to encode intent of a process'
parts: libraries, code & data sections
❖ Already supported by the GCC toolchain!
❖ Policy is easy to create, intuitive for C/C++ programmers
Policy vs mitigations
❖ Both aim to block unintended execution (exploits)
❖ Mitigations attempt to derive intent
❖ E.g., no calls into middles of functions, no returns to non-
call sites, etc.
❖ Policy attempts to express intent explicitly
❖ E.g., no execution from data areas, no syscalls beyond a
whitelist, no access to files not properly marked
❖ Policy should be relevant & concise (or else it's ignored)
Policy wish list
❖ Relevance: describe what matters
❖ E.g.: SELinux is a "bag of permissions" on file ops.
Can't describe order of ops, number of ops, memory
accesses, any parts or internals of a process
❖ Brevity: describe only what matters
❖ E.g.: SELinux makes you describe all file ops; you
need tools to compute allowed data flows
What matters?
❖ Composition: a process is no longer "a program"; it's
also many different components & libraries, all in one
space, but with very different purposes & intents
❖ Order of things: a process has phases, which have
different purposes & intents
❖ Exclusive relationships: pieces of code and data have
exclusive relationships by function & intent
❖ "This is my data, only I should be using it"
An inspiration: ELF RTLD
John Levine, 

"Linkers & loaders"
An inspiration: PaX/Grsec UDEREF
User
Kernel
Syscall
Args
Poisoned Data
Driver
Checks
❖ UDEREF guards code from accessing the data it wasn't
meant to access
❖ "Privilege Rings" are too about code/data relationships
Call gate
http://cr.yp.to/qmail/qmailsec-20071101.pdf
"Some thoughts on security after ten years
of qmail", D.J. Bernstein, 2007
❖ Used process isolation as security boundaries
❖ Split functionality into many per-process pieces
❖ Enforced explicit data flow via process isolation
❖ Avoided in-process parsing
❖ Least privilege was a distraction, but isolation worked
Process phases
❖ "Phase" ~ code unit ~ EIP range ~ memory section
Access relationships are key to
programmer intent
❖ Unit semantics ~ Explicit data flows (cf. qmail)
Intent-level semantics
❖ "The gostak distims the doshes" 

-- Andrew Ingraham, 1903
❖ Non-dictionary words, English grammar
❖ Semantics == relationships between terms
❖ Relationships between code & data sections reflect
their intent, often uniquely
"Sections are types, linking is policy"
❖ The idea of a type is "objects with common operations"
❖ Methods of a class in OOP, typeclasses in FP, etc.
❖ For data sections, their dedicated code sections are their
operations
❖ It's dual: data accessed by code tells much about code
❖ Linkers collect similar sections into contiguous pieces
❖ Linker maps are the closest we have to intent
descriptions of binary objects in process space!
Motivating Example
Example policies
❖ Web application decompresses a PNG file
❖ Mental model
.PNG file
Bitmap
libpng
What attackers see
malicious .PNG
Bitmap with
leaked data
.PNG file
private key
libpng
w/ bugs
no-longer-private
key
Or
malicious .PNG
Bitmap overwrites
critical data
.PNG file, with
exploit
libpng
w/ bugs
Authorized keys
Mapping it into the ABI
malicious .PNG
private keylibssl .data
bitmap
libpng .input
libpng .output
• Easy to introduce new sections
• Each code segment can get
different permissions
• Only libssl.text can access
libssl.data
• libpng.text can only access
libpng.input and libpng.output
• And libpng.input can only be
read by libpng.
Back to our example
SSL initialization SSL libpng app logic
SSL keys Input buffer
Output
buffer
RW R RW R W RW
Enforcing
❖ Modern OS loaders discard section information
❖ New architecture:
❖ 'Unforgetful loader' preserves section identity after
loading
❖ Enforcement scheme for intent-level semantics
❖ Better tools to capture semantics in ABI
ELF sections
libpng.so .init
...
libc.o
.text
.data
.text
program.o
.text
.data
ELF consists of sections:
❖ Code
❖ Data (RW/RO)
❖ GOT/PLT jump tables for
dynamic linking
❖ Metadata: Symbols, ...
❖ Can be controlled from C:

__section__(section_name)
❖ Flexible mechanism
❖ ~30 sections in typical file
Sections turn into segments
libpng.o .data
...
libc.o
.text
.data
.text
program.o
.text
.rodata
Linker combines sections & groups them into segments:
.text(program.o)
.text(libc)
.text(libpng)
.rodata
.data(program.o)
.data(libc)
.data(libc)
.bss (heap)
R_X
RW_
Only RWX bits enforced
Two loaders
❖ Static linking:
❖ kernel (binfmt_elf.{c,ko}) reads segments
❖ calls mmap() for each segment
❖ jumps to entry point
❖ Dynamic linking
❖ Kernel loads ld.so (as in the above)
❖ ld.so parses ELF file again (bugs happen here)
❖ ld.so opens shared libraries, mmaps and maintains .PLT/.GOT tables
❖ One mmap() call per segment
What the kernel does:
❖ Kernel:
❖ task_struct for each thread
❖ registers, execution context => state
❖ pid, uid, capabilities => identity of the process
❖ mm_struct for address space
task_struct thread_1 task_struct thread_2
mm_struct
task_struct thread_1 task_struct thread_2
mm_struct
mmap
FS
./foo
.text(program.o)
.text(libc)
.text(libpng)
.rodata
0x40000
.data(program.o)
.data(libc)
.data(libpng)
.bss (heap)
0x80000
vm_area_struct
Linked list of vm_area_structs
Points to file system or anonymous
memory structure
task_struct thread_1 task_struct thread_2
mm_struct
mmap
RB-tree
mm_rb
RB tree for faster lookups
LRU cache for even faster lookups
FS
./foo
FS
./foo
.text(program.o)
.text(libc)
.text(libpng)
.rodata
0x40000
.data(program.o)
.data(libc)
.data(libpng)
.bss (heap)
0x80000
vm_area_struct
What the CPU sees
mm_struct/CPU CR3
pud_t*[512]
pmd_t*[512]
PGD
pmd_t*[512] pmd_t*[512]
pte_t*[512] pte_t*[512] pmd_t*[512]
pte_t[512] pte[512] pte_t[512]
PUD
PMD
PTE
physical address + flag
All three structures have to be kept in sync
Caching
❖ Walking these structures on every memory access
would be prohibitively slow
❖ TLBs cache every level of this hierarchy
❖ Originally invalidated on reload
❖ Tagged TLBs (PCID on intel). ELFbac also had the first
PCID patch for linux. Transparent on AMD
Caches enforce policy!
❖ NX bit is seen as a mere mitigation
❖ Actually it is policy that express intent
❖ First implementations of NX used cache state (split TLB)
meant for performance to add semantics
❖ ELFbac does the same with TLBs and PCID
It's all about caching
❖ Each VM system layer is a cache
❖ And performs checks
❖ Checks get semantically less expressive as you get
closer to hardware
❖ ELFbac adds another layer of per-phase caching
❖ Allows us to enforce a semantically rich policy
Example: Page faults
❖ If the page table lookup fails, CPU calls the kernel
❖ Kernel looks for the vm_area_struct (rb_tree)
❖ Check: If not present, SIGSEGV
❖ Fill in page table, with added semantics
❖ Swap-in
❖ Copy-on-write
❖ Grow stacks
ELFbac execution model
❖ Old n-1 relationship:
❖ task_struct(n threads) <-> mm_struct(1 process)
❖ New n-m relationship:
❖ task_struct(n threads) <-> mm_struct(m ELFbac states)
❖ A lot of kernel code would have to change to update m
copies
Caching as a solution
❖ ElfBAC states are subsets of the base address space
❖ Base address space still represented by mm
❖ Squint enough, and a subset is like a cache
❖ Only need invalidation instead of mutation
❖ Caches already have to be invalidated (TLB)
❖ Linux: mm_notifier plug-in API(virtualization)
ELFbac page fault handler
❖ If the access would fault on the base page tables
❖ Fall back to the old page fault handler
❖ Look up the address in ELFbac policy
❖ Move process to new phase if necessary
❖ Otherwise copy page table entry to allow future
accesses
What each part sees:
task_struct thread_1 task_struct thread_2
base
mm_struct
vm_area_struct
page tables
Rest of kernel :
elfbac policy
mm_struct
Authenticate
mm_struct
ProcessInput
page tables page tables
ELFbac:
CPU
Porting to embedded ARM
❖ Focused on compartmentalizing ELF binaries under static linking
❖ Dynamic linking case supportable by creating an ELFbac-aware
ld.so, left to future work
❖ Policies generated from a JSON descriptor file
❖ tool produces both the linker script and the binary policy
❖ Binary policy is packed into a special segment, loaded by the kernel
during ELF loading time
❖ Modifications to the page fault handler enforce the policy at runtime,
verifying memory accesses and state transitions
❖ ARM ASIDs (tagged TLB) reduce overhead between state transitions
Case Studies
Basic example: isolating a parser
Input&
Processing:&&
malloc()&
memcopy()&
+,&*,&9,&/,&…&&
Recognizer&
for&input&
language&
Grammar&
Spec&
Reject&&
invalid&
inputs&
Accept&valid/expected&inputs,&
call&semanFc&acFons&
ELFbac for SCADA/ICS
❖ DNP3 is a complex ICS protocol; prone to parser errors
❖ S4x14: "Robus Master Serial Killer", Crain & Sistrunk
❖ Only a small subset of the protocol is used on any single
device. Whitelisting this syntax is natural.
❖ A filtering proxy is a DNP3 device's best friend
❖ "Exhaustive syntactic inspection": langsec.org/dnp3/
❖ ELFbac policy: isolate the parser from the rest of the app
Parser isolation
❖ Raw data is (likely) poison; parsing code is the riskiest
part of the app & its only defense
❖ Parser must be separated from the rest of the code
❖ No other section touches raw input
❖ Parser touches no memory outside of its output area,
where it outputs checked, well-typed objects
❖ Input => Parser => Well-typed data => Processing code
ICS proxy policy at a glance
Our ARM target
ELFbac & Grsec/PaX for ARM
❖ We worked with the Grsecurity to integrate ELFbac on
ARM with Grsecurity for ICS hardening:
❖ Cohesive set of protections for ICS systems on ARM
❖ PAX_KERNEXEC, PAX_UDEREF, PAX_USERCOPY, PAX_CONSTIFY,
PAX_PAGEEXEC, PAX_ASLR, and PAX_MPROTECT
❖ Available from https://grsecurity.net/ics.php
❖ ELFbac + Grsecurity ICS tested with our DNP3 proxy on
a common industrial computer Moxa UC-8100, ARM v7
(Cortex-A8)
OpenSSH policy
❖ OpenSSH attacked via crafted inputs
❖ GOBBLES pre-auth RCE 2002 -- CVE-2016-077{7,8}
❖ OpenSSH introduced the original privilege drop as a
policy primitive
❖ "If the process asks for a privileged op after this point,
it's no longer trustworthy; kill it"
❖ But access to (a) non-raw data for a parser (b) raw data
beyond the parser is also privilege!
ELFbac for OpenSSH
❖ Policies for both the OpenSSH client and server
❖ Isolate portions of OpenSSH responsible for crypto/key
management from those responsible for processing & parsing
packets
❖ Create separate sections for sensitive data blobs, allowing for
finer-grained access control
❖ Control access to libraries used by OpenSSH based on where used
❖ Prevent direct leaking of sensitive data like private keys from, e.g.,
CVE-2016-0777 (roaming vuln)
❖ Separate heaps for dynamic allocations, with specific access
permissions across process phase boundaries
OpenSSH policy at a glance
Application design considerations
❖ "Separating concerns" is good engineering, but has limited
security pay-offs
❖ All concerns still live in the same address space
❖ Keeping separate heaps in a process has limited returns
❖ Proximity obstacles to overflows/massaging, but still the
same address space, accessible by all code
❖ Mitigation, not policy
❖ With ELFbac, keeping marked, separating heaps becomes
policy: clear intent, enforced w.r.t. code units
ELFbac is a design style
❖ "Who cares? That's not how code gets written"
❖ Availability of enforcement mechanisms reshapes
programming practice
❖ C++ took over the world by making contracts (e.g.,
encapsulation) enforceable (weakly, at compile time)
❖ Non-enforceable designs are harder to adopt & check
❖ Only enforceable separation matters
Performance & TODOs
Performance overheads (x86)
❖ NGINX benchmarked with a policy isolating all libraries from the
main process:
❖ Best case: around ~5% (AMD Opteron Piledriver)
❖ worst case: ~30% on some Intel platforms
❖ Too many state transitions on the hot path
❖ Policy must be adapted to the application structure
❖ Average ~15% when running on KVM
❖ KVM already incurs performance costs
❖ KVM optimizes virtual memory handling
Drawbacks and TODOs
❖ Significant performance tuning still outstanding
❖ Implement an ELFbac-aware malloc
❖ Integration with system call policy mechanisms (e.g.
Capsicum)
❖ Provide rich policies for many standard libraries
❖ ELFbac is not a mitigation, it's a way to design
policies and resilient applications
Binary Rewriting Tools
❖ Store policy in the ELF file
❖ Loader sends it to the kernel with a new syscall
❖ Adding a policy requires binary rewriting
❖ Made our own tool: Mithril, currently only implemented for ELF
❖ Translates binaries into a canonical form that is less context-dependent and
can be easily modified
❖ Tested on the entire Debian x86_64 archive, producing a bootable system
❖ ~25GB of packages
Takeaway
❖ Per-process bags of permission are no longer a suitable
basis for policy
❖ Instead, ABI-level memory objects at process runtime are
the sweet spot for security policy
❖ Modern ABIs provide enough granularity to capture
programmers intent w.r.t. code and data units
❖ Intent-level semantics compatible with ABI, standard
build/binary tool chains
Policy Granularity: ABI is the Sweet Spot
ABI
Thank you
❖ http://elfbac.org/
❖ https://github.com/sergeybratus/elfbac-arm/
ABI

More Related Content

What's hot

File Systems: Why, How and Where
File Systems: Why, How and WhereFile Systems: Why, How and Where
File Systems: Why, How and WhereKernel TLV
 
.NET Core Blimey! (dotnetsheff Jan 2016)
.NET Core Blimey! (dotnetsheff Jan 2016).NET Core Blimey! (dotnetsheff Jan 2016)
.NET Core Blimey! (dotnetsheff Jan 2016)citizenmatt
 
.NET Core Blimey! (Shropshire Devs Mar 2016)
.NET Core Blimey! (Shropshire Devs Mar 2016).NET Core Blimey! (Shropshire Devs Mar 2016)
.NET Core Blimey! (Shropshire Devs Mar 2016)citizenmatt
 
Modern Distributed Messaging and RPC
Modern Distributed Messaging and RPCModern Distributed Messaging and RPC
Modern Distributed Messaging and RPCMax Alexejev
 
Microsoft .NET (dotnet) Framework 2003 - 2004 overview and web services…
Microsoft .NET (dotnet) Framework 2003 - 2004 overview and web services…Microsoft .NET (dotnet) Framework 2003 - 2004 overview and web services…
Microsoft .NET (dotnet) Framework 2003 - 2004 overview and web services…Lorenz Lo Sauer
 
Rpc framework
Rpc frameworkRpc framework
Rpc frameworkjuly mon
 
.net Core Blimey - Smart Devs UG
.net Core Blimey - Smart Devs UG.net Core Blimey - Smart Devs UG
.net Core Blimey - Smart Devs UGcitizenmatt
 
Application layer
Application layerApplication layer
Application layerNeha Kurale
 
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...GlobalLogic Ukraine
 
Mainframe Virtual User Group Summer 2013
Mainframe Virtual User Group Summer 2013Mainframe Virtual User Group Summer 2013
Mainframe Virtual User Group Summer 2013Serena Software
 
LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013dotCloud
 
ASP.NET Session 1
ASP.NET Session 1ASP.NET Session 1
ASP.NET Session 1Sisir Ghosh
 
pfSense 2.2 Preview - pfSense Hangout November 2014
pfSense 2.2 Preview - pfSense Hangout November 2014pfSense 2.2 Preview - pfSense Hangout November 2014
pfSense 2.2 Preview - pfSense Hangout November 2014Netgate
 

What's hot (20)

File Systems: Why, How and Where
File Systems: Why, How and WhereFile Systems: Why, How and Where
File Systems: Why, How and Where
 
Linux-Internals-and-Networking
Linux-Internals-and-NetworkingLinux-Internals-and-Networking
Linux-Internals-and-Networking
 
.NET Core Blimey! (dotnetsheff Jan 2016)
.NET Core Blimey! (dotnetsheff Jan 2016).NET Core Blimey! (dotnetsheff Jan 2016)
.NET Core Blimey! (dotnetsheff Jan 2016)
 
.NET Core Blimey! (Shropshire Devs Mar 2016)
.NET Core Blimey! (Shropshire Devs Mar 2016).NET Core Blimey! (Shropshire Devs Mar 2016)
.NET Core Blimey! (Shropshire Devs Mar 2016)
 
Advanced C
Advanced C Advanced C
Advanced C
 
Eclipse - Installation and quick start guide
Eclipse - Installation and quick start guideEclipse - Installation and quick start guide
Eclipse - Installation and quick start guide
 
Modern Distributed Messaging and RPC
Modern Distributed Messaging and RPCModern Distributed Messaging and RPC
Modern Distributed Messaging and RPC
 
Microsoft .NET (dotnet) Framework 2003 - 2004 overview and web services…
Microsoft .NET (dotnet) Framework 2003 - 2004 overview and web services…Microsoft .NET (dotnet) Framework 2003 - 2004 overview and web services…
Microsoft .NET (dotnet) Framework 2003 - 2004 overview and web services…
 
Rpc framework
Rpc frameworkRpc framework
Rpc framework
 
.net Core Blimey - Smart Devs UG
.net Core Blimey - Smart Devs UG.net Core Blimey - Smart Devs UG
.net Core Blimey - Smart Devs UG
 
Concept of thread
Concept of threadConcept of thread
Concept of thread
 
Application layer
Application layerApplication layer
Application layer
 
C#
C#C#
C#
 
Rust baksia2014
Rust baksia2014Rust baksia2014
Rust baksia2014
 
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...
Embedded Webinar #13: "From Zero to Hero: contribute to Linux Kernel in 15 mi...
 
Embedded C
Embedded CEmbedded C
Embedded C
 
Mainframe Virtual User Group Summer 2013
Mainframe Virtual User Group Summer 2013Mainframe Virtual User Group Summer 2013
Mainframe Virtual User Group Summer 2013
 
LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013
 
ASP.NET Session 1
ASP.NET Session 1ASP.NET Session 1
ASP.NET Session 1
 
pfSense 2.2 Preview - pfSense Hangout November 2014
pfSense 2.2 Preview - pfSense Hangout November 2014pfSense 2.2 Preview - pfSense Hangout November 2014
pfSense 2.2 Preview - pfSense Hangout November 2014
 

Viewers also liked

ABI란 무엇인가요?
ABI란 무엇인가요?ABI란 무엇인가요?
ABI란 무엇인가요?진상 문
 
家に帰るまでが遠足です
家に帰るまでが遠足です家に帰るまでが遠足です
家に帰るまでが遠足ですCryolite
 
C++が仲間になりたそうにこちらを見ている
C++が仲間になりたそうにこちらを見ているC++が仲間になりたそうにこちらを見ている
C++が仲間になりたそうにこちらを見ているfjnl
 
C++14 solve explicit_default_constructor
C++14 solve explicit_default_constructorC++14 solve explicit_default_constructor
C++14 solve explicit_default_constructorAkira Takahashi
 
C# 뉴비를 위한 맛보기
C# 뉴비를 위한 맛보기C# 뉴비를 위한 맛보기
C# 뉴비를 위한 맛보기진상 문
 
OpenBSD/sgi SMP implementation for Origin 350
OpenBSD/sgi SMP implementation for Origin 350OpenBSD/sgi SMP implementation for Origin 350
OpenBSD/sgi SMP implementation for Origin 350Takuya ASADA
 
SMP Implementation for OpenBSD/sgi [Japanese Edition]
SMP Implementation for OpenBSD/sgi [Japanese Edition]SMP Implementation for OpenBSD/sgi [Japanese Edition]
SMP Implementation for OpenBSD/sgi [Japanese Edition]Takuya ASADA
 

Viewers also liked (8)

Scheme to x86コンパイラ
Scheme to x86コンパイラScheme to x86コンパイラ
Scheme to x86コンパイラ
 
ABI란 무엇인가요?
ABI란 무엇인가요?ABI란 무엇인가요?
ABI란 무엇인가요?
 
家に帰るまでが遠足です
家に帰るまでが遠足です家に帰るまでが遠足です
家に帰るまでが遠足です
 
C++が仲間になりたそうにこちらを見ている
C++が仲間になりたそうにこちらを見ているC++が仲間になりたそうにこちらを見ている
C++が仲間になりたそうにこちらを見ている
 
C++14 solve explicit_default_constructor
C++14 solve explicit_default_constructorC++14 solve explicit_default_constructor
C++14 solve explicit_default_constructor
 
C# 뉴비를 위한 맛보기
C# 뉴비를 위한 맛보기C# 뉴비를 위한 맛보기
C# 뉴비를 위한 맛보기
 
OpenBSD/sgi SMP implementation for Origin 350
OpenBSD/sgi SMP implementation for Origin 350OpenBSD/sgi SMP implementation for Origin 350
OpenBSD/sgi SMP implementation for Origin 350
 
SMP Implementation for OpenBSD/sgi [Japanese Edition]
SMP Implementation for OpenBSD/sgi [Japanese Edition]SMP Implementation for OpenBSD/sgi [Japanese Edition]
SMP Implementation for OpenBSD/sgi [Japanese Edition]
 

Similar to Sections are types, linking is policy

DEF CON 23 - Ryan o'neil - advances in linux forensics with ecfs
DEF CON 23 - Ryan o'neil - advances in linux forensics with ecfsDEF CON 23 - Ryan o'neil - advances in linux forensics with ecfs
DEF CON 23 - Ryan o'neil - advances in linux forensics with ecfsFelipe Prado
 
Dataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and toolsDataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and toolsStefano Salsano
 
Large-scale projects development (scaling LAMP)
Large-scale projects development (scaling LAMP)Large-scale projects development (scaling LAMP)
Large-scale projects development (scaling LAMP)Alexey Rybak
 
Newsql 2015-150213024325-conversion-gate01
Newsql 2015-150213024325-conversion-gate01Newsql 2015-150213024325-conversion-gate01
Newsql 2015-150213024325-conversion-gate01Jagadeesha DG
 
NewSQL overview, Feb 2015
NewSQL overview, Feb 2015NewSQL overview, Feb 2015
NewSQL overview, Feb 2015Ivan Glushkov
 
Pune-Cocoa: Blocks and GCD
Pune-Cocoa: Blocks and GCDPune-Cocoa: Blocks and GCD
Pune-Cocoa: Blocks and GCDPrashant Rane
 
Container & kubernetes
Container & kubernetesContainer & kubernetes
Container & kubernetesTed Jung
 
Introduction to Apache Kafka- Part 1
Introduction to Apache Kafka- Part 1Introduction to Apache Kafka- Part 1
Introduction to Apache Kafka- Part 1Knoldus Inc.
 
Experiences with Microservices at Tuenti
Experiences with Microservices at TuentiExperiences with Microservices at Tuenti
Experiences with Microservices at TuentiAndrés Viedma Peláez
 
Enhancing Domain Specific Language Implementations Through Ontology
Enhancing Domain Specific Language Implementations Through OntologyEnhancing Domain Specific Language Implementations Through Ontology
Enhancing Domain Specific Language Implementations Through OntologyChunhua Liao
 
Spark 101 - First steps to distributed computing
Spark 101 - First steps to distributed computingSpark 101 - First steps to distributed computing
Spark 101 - First steps to distributed computingDemi Ben-Ari
 
Linux internal
Linux internalLinux internal
Linux internalmcganesh
 
Linux architecture
Linux architectureLinux architecture
Linux architecturemcganesh
 
NSC #2 - D3 02 - Peter Hlavaty - Attack on the Core
NSC #2 - D3 02 - Peter Hlavaty - Attack on the CoreNSC #2 - D3 02 - Peter Hlavaty - Attack on the Core
NSC #2 - D3 02 - Peter Hlavaty - Attack on the CoreNoSuchCon
 
Network Stack in Userspace (NUSE)
Network Stack in Userspace (NUSE)Network Stack in Userspace (NUSE)
Network Stack in Userspace (NUSE)Hajime Tazaki
 
Latest (storage IO) patterns for cloud-native applications
Latest (storage IO) patterns for cloud-native applications Latest (storage IO) patterns for cloud-native applications
Latest (storage IO) patterns for cloud-native applications OpenEBS
 
CETH for XDP [Linux Meetup Santa Clara | July 2016]
CETH for XDP [Linux Meetup Santa Clara | July 2016] CETH for XDP [Linux Meetup Santa Clara | July 2016]
CETH for XDP [Linux Meetup Santa Clara | July 2016] IO Visor Project
 

Similar to Sections are types, linking is policy (20)

DEF CON 23 - Ryan o'neil - advances in linux forensics with ecfs
DEF CON 23 - Ryan o'neil - advances in linux forensics with ecfsDEF CON 23 - Ryan o'neil - advances in linux forensics with ecfs
DEF CON 23 - Ryan o'neil - advances in linux forensics with ecfs
 
Dataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and toolsDataplane programming with eBPF: architecture and tools
Dataplane programming with eBPF: architecture and tools
 
Large-scale projects development (scaling LAMP)
Large-scale projects development (scaling LAMP)Large-scale projects development (scaling LAMP)
Large-scale projects development (scaling LAMP)
 
Newsql 2015-150213024325-conversion-gate01
Newsql 2015-150213024325-conversion-gate01Newsql 2015-150213024325-conversion-gate01
Newsql 2015-150213024325-conversion-gate01
 
NewSQL overview, Feb 2015
NewSQL overview, Feb 2015NewSQL overview, Feb 2015
NewSQL overview, Feb 2015
 
Attack on the Core
Attack on the CoreAttack on the Core
Attack on the Core
 
Pune-Cocoa: Blocks and GCD
Pune-Cocoa: Blocks and GCDPune-Cocoa: Blocks and GCD
Pune-Cocoa: Blocks and GCD
 
Container & kubernetes
Container & kubernetesContainer & kubernetes
Container & kubernetes
 
Introduction to Apache Kafka- Part 1
Introduction to Apache Kafka- Part 1Introduction to Apache Kafka- Part 1
Introduction to Apache Kafka- Part 1
 
Experiences with Microservices at Tuenti
Experiences with Microservices at TuentiExperiences with Microservices at Tuenti
Experiences with Microservices at Tuenti
 
Enhancing Domain Specific Language Implementations Through Ontology
Enhancing Domain Specific Language Implementations Through OntologyEnhancing Domain Specific Language Implementations Through Ontology
Enhancing Domain Specific Language Implementations Through Ontology
 
Spark 101 - First steps to distributed computing
Spark 101 - First steps to distributed computingSpark 101 - First steps to distributed computing
Spark 101 - First steps to distributed computing
 
Linux internal
Linux internalLinux internal
Linux internal
 
Linux architecture
Linux architectureLinux architecture
Linux architecture
 
Device Drivers
Device DriversDevice Drivers
Device Drivers
 
NSC #2 - D3 02 - Peter Hlavaty - Attack on the Core
NSC #2 - D3 02 - Peter Hlavaty - Attack on the CoreNSC #2 - D3 02 - Peter Hlavaty - Attack on the Core
NSC #2 - D3 02 - Peter Hlavaty - Attack on the Core
 
Network Stack in Userspace (NUSE)
Network Stack in Userspace (NUSE)Network Stack in Userspace (NUSE)
Network Stack in Userspace (NUSE)
 
Latest (storage IO) patterns for cloud-native applications
Latest (storage IO) patterns for cloud-native applications Latest (storage IO) patterns for cloud-native applications
Latest (storage IO) patterns for cloud-native applications
 
Stack Frame Protection
Stack Frame ProtectionStack Frame Protection
Stack Frame Protection
 
CETH for XDP [Linux Meetup Santa Clara | July 2016]
CETH for XDP [Linux Meetup Santa Clara | July 2016] CETH for XDP [Linux Meetup Santa Clara | July 2016]
CETH for XDP [Linux Meetup Santa Clara | July 2016]
 

More from Priyanka Aash

Digital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOsPriyanka Aash
 
Verizon Breach Investigation Report (VBIR).pdf
Verizon Breach Investigation Report (VBIR).pdfVerizon Breach Investigation Report (VBIR).pdf
Verizon Breach Investigation Report (VBIR).pdfPriyanka Aash
 
Top 10 Security Risks .pptx.pdf
Top 10 Security Risks .pptx.pdfTop 10 Security Risks .pptx.pdf
Top 10 Security Risks .pptx.pdfPriyanka Aash
 
Simplifying data privacy and protection.pdf
Simplifying data privacy and protection.pdfSimplifying data privacy and protection.pdf
Simplifying data privacy and protection.pdfPriyanka Aash
 
Generative AI and Security (1).pptx.pdf
Generative AI and Security (1).pptx.pdfGenerative AI and Security (1).pptx.pdf
Generative AI and Security (1).pptx.pdfPriyanka Aash
 
EVERY ATTACK INVOLVES EXPLOITATION OF A WEAKNESS.pdf
EVERY ATTACK INVOLVES EXPLOITATION OF A WEAKNESS.pdfEVERY ATTACK INVOLVES EXPLOITATION OF A WEAKNESS.pdf
EVERY ATTACK INVOLVES EXPLOITATION OF A WEAKNESS.pdfPriyanka Aash
 
Cyber Truths_Are you Prepared version 1.1.pptx.pdf
Cyber Truths_Are you Prepared version 1.1.pptx.pdfCyber Truths_Are you Prepared version 1.1.pptx.pdf
Cyber Truths_Are you Prepared version 1.1.pptx.pdfPriyanka Aash
 
Cyber Crisis Management.pdf
Cyber Crisis Management.pdfCyber Crisis Management.pdf
Cyber Crisis Management.pdfPriyanka Aash
 
CISOPlatform journey.pptx.pdf
CISOPlatform journey.pptx.pdfCISOPlatform journey.pptx.pdf
CISOPlatform journey.pptx.pdfPriyanka Aash
 
Chennai Chapter.pptx.pdf
Chennai Chapter.pptx.pdfChennai Chapter.pptx.pdf
Chennai Chapter.pptx.pdfPriyanka Aash
 
Cloud attack vectors_Moshe.pdf
Cloud attack vectors_Moshe.pdfCloud attack vectors_Moshe.pdf
Cloud attack vectors_Moshe.pdfPriyanka Aash
 
Stories From The Web 3 Battlefield
Stories From The Web 3 BattlefieldStories From The Web 3 Battlefield
Stories From The Web 3 BattlefieldPriyanka Aash
 
Lessons Learned From Ransomware Attacks
Lessons Learned From Ransomware AttacksLessons Learned From Ransomware Attacks
Lessons Learned From Ransomware AttacksPriyanka Aash
 
Emerging New Threats And Top CISO Priorities In 2022 (Chennai)
Emerging New Threats And Top CISO Priorities In 2022 (Chennai)Emerging New Threats And Top CISO Priorities In 2022 (Chennai)
Emerging New Threats And Top CISO Priorities In 2022 (Chennai)Priyanka Aash
 
Emerging New Threats And Top CISO Priorities In 2022 (Mumbai)
Emerging New Threats And Top CISO Priorities In 2022 (Mumbai)Emerging New Threats And Top CISO Priorities In 2022 (Mumbai)
Emerging New Threats And Top CISO Priorities In 2022 (Mumbai)Priyanka Aash
 
Emerging New Threats And Top CISO Priorities in 2022 (Bangalore)
Emerging New Threats And Top CISO Priorities in 2022 (Bangalore)Emerging New Threats And Top CISO Priorities in 2022 (Bangalore)
Emerging New Threats And Top CISO Priorities in 2022 (Bangalore)Priyanka Aash
 
Cloud Security: Limitations of Cloud Security Groups and Flow Logs
Cloud Security: Limitations of Cloud Security Groups and Flow LogsCloud Security: Limitations of Cloud Security Groups and Flow Logs
Cloud Security: Limitations of Cloud Security Groups and Flow LogsPriyanka Aash
 
Cyber Security Governance
Cyber Security GovernanceCyber Security Governance
Cyber Security GovernancePriyanka Aash
 

More from Priyanka Aash (20)

Digital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOs
 
Verizon Breach Investigation Report (VBIR).pdf
Verizon Breach Investigation Report (VBIR).pdfVerizon Breach Investigation Report (VBIR).pdf
Verizon Breach Investigation Report (VBIR).pdf
 
Top 10 Security Risks .pptx.pdf
Top 10 Security Risks .pptx.pdfTop 10 Security Risks .pptx.pdf
Top 10 Security Risks .pptx.pdf
 
Simplifying data privacy and protection.pdf
Simplifying data privacy and protection.pdfSimplifying data privacy and protection.pdf
Simplifying data privacy and protection.pdf
 
Generative AI and Security (1).pptx.pdf
Generative AI and Security (1).pptx.pdfGenerative AI and Security (1).pptx.pdf
Generative AI and Security (1).pptx.pdf
 
EVERY ATTACK INVOLVES EXPLOITATION OF A WEAKNESS.pdf
EVERY ATTACK INVOLVES EXPLOITATION OF A WEAKNESS.pdfEVERY ATTACK INVOLVES EXPLOITATION OF A WEAKNESS.pdf
EVERY ATTACK INVOLVES EXPLOITATION OF A WEAKNESS.pdf
 
DPDP Act 2023.pdf
DPDP Act 2023.pdfDPDP Act 2023.pdf
DPDP Act 2023.pdf
 
Cyber Truths_Are you Prepared version 1.1.pptx.pdf
Cyber Truths_Are you Prepared version 1.1.pptx.pdfCyber Truths_Are you Prepared version 1.1.pptx.pdf
Cyber Truths_Are you Prepared version 1.1.pptx.pdf
 
Cyber Crisis Management.pdf
Cyber Crisis Management.pdfCyber Crisis Management.pdf
Cyber Crisis Management.pdf
 
CISOPlatform journey.pptx.pdf
CISOPlatform journey.pptx.pdfCISOPlatform journey.pptx.pdf
CISOPlatform journey.pptx.pdf
 
Chennai Chapter.pptx.pdf
Chennai Chapter.pptx.pdfChennai Chapter.pptx.pdf
Chennai Chapter.pptx.pdf
 
Cloud attack vectors_Moshe.pdf
Cloud attack vectors_Moshe.pdfCloud attack vectors_Moshe.pdf
Cloud attack vectors_Moshe.pdf
 
Stories From The Web 3 Battlefield
Stories From The Web 3 BattlefieldStories From The Web 3 Battlefield
Stories From The Web 3 Battlefield
 
Lessons Learned From Ransomware Attacks
Lessons Learned From Ransomware AttacksLessons Learned From Ransomware Attacks
Lessons Learned From Ransomware Attacks
 
Emerging New Threats And Top CISO Priorities In 2022 (Chennai)
Emerging New Threats And Top CISO Priorities In 2022 (Chennai)Emerging New Threats And Top CISO Priorities In 2022 (Chennai)
Emerging New Threats And Top CISO Priorities In 2022 (Chennai)
 
Emerging New Threats And Top CISO Priorities In 2022 (Mumbai)
Emerging New Threats And Top CISO Priorities In 2022 (Mumbai)Emerging New Threats And Top CISO Priorities In 2022 (Mumbai)
Emerging New Threats And Top CISO Priorities In 2022 (Mumbai)
 
Emerging New Threats And Top CISO Priorities in 2022 (Bangalore)
Emerging New Threats And Top CISO Priorities in 2022 (Bangalore)Emerging New Threats And Top CISO Priorities in 2022 (Bangalore)
Emerging New Threats And Top CISO Priorities in 2022 (Bangalore)
 
Cloud Security: Limitations of Cloud Security Groups and Flow Logs
Cloud Security: Limitations of Cloud Security Groups and Flow LogsCloud Security: Limitations of Cloud Security Groups and Flow Logs
Cloud Security: Limitations of Cloud Security Groups and Flow Logs
 
Cyber Security Governance
Cyber Security GovernanceCyber Security Governance
Cyber Security Governance
 
Ethical Hacking
Ethical HackingEthical Hacking
Ethical Hacking
 

Recently uploaded

Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 

Recently uploaded (20)

Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 

Sections are types, linking is policy

  • 1. "Sections are types, linking is policy" Intra-Process Memory Protection for Applications on ARM and x86: Leveraging the ELF ABI Sergey Bratus Julian Bangert Maxwell Koo
  • 2. Outline ❖ Why and how to use ELF ABI for policy ❖ Our design of an ELF-backed intra-memory ACLs ❖ Linux x86 prototype ❖ ARM prototype ❖ Case studies: ❖ ICS protocol proxy ❖ OpenSSH policy
  • 3. Motivation ❖ File-level policies (e.g., SELinux) fail to capture what happens inside a process (cf. Heartbleed, etc.) ❖ CFI, DFI, SFI, etc. are good mitigations, but they aren't policy: they don't describe intended operation of code ❖ ELF ABI has plenty of structure to encode intent of a process' parts: libraries, code & data sections ❖ Already supported by the GCC toolchain! ❖ Policy is easy to create, intuitive for C/C++ programmers
  • 4. Policy vs mitigations ❖ Both aim to block unintended execution (exploits) ❖ Mitigations attempt to derive intent ❖ E.g., no calls into middles of functions, no returns to non- call sites, etc. ❖ Policy attempts to express intent explicitly ❖ E.g., no execution from data areas, no syscalls beyond a whitelist, no access to files not properly marked ❖ Policy should be relevant & concise (or else it's ignored)
  • 5. Policy wish list ❖ Relevance: describe what matters ❖ E.g.: SELinux is a "bag of permissions" on file ops. Can't describe order of ops, number of ops, memory accesses, any parts or internals of a process ❖ Brevity: describe only what matters ❖ E.g.: SELinux makes you describe all file ops; you need tools to compute allowed data flows
  • 6. What matters? ❖ Composition: a process is no longer "a program"; it's also many different components & libraries, all in one space, but with very different purposes & intents ❖ Order of things: a process has phases, which have different purposes & intents ❖ Exclusive relationships: pieces of code and data have exclusive relationships by function & intent ❖ "This is my data, only I should be using it"
  • 7. An inspiration: ELF RTLD John Levine, 
 "Linkers & loaders"
  • 8. An inspiration: PaX/Grsec UDEREF User Kernel Syscall Args Poisoned Data Driver Checks ❖ UDEREF guards code from accessing the data it wasn't meant to access ❖ "Privilege Rings" are too about code/data relationships Call gate
  • 9. http://cr.yp.to/qmail/qmailsec-20071101.pdf "Some thoughts on security after ten years of qmail", D.J. Bernstein, 2007 ❖ Used process isolation as security boundaries ❖ Split functionality into many per-process pieces ❖ Enforced explicit data flow via process isolation ❖ Avoided in-process parsing ❖ Least privilege was a distraction, but isolation worked
  • 10. Process phases ❖ "Phase" ~ code unit ~ EIP range ~ memory section
  • 11. Access relationships are key to programmer intent ❖ Unit semantics ~ Explicit data flows (cf. qmail)
  • 12. Intent-level semantics ❖ "The gostak distims the doshes" 
 -- Andrew Ingraham, 1903 ❖ Non-dictionary words, English grammar ❖ Semantics == relationships between terms ❖ Relationships between code & data sections reflect their intent, often uniquely
  • 13. "Sections are types, linking is policy" ❖ The idea of a type is "objects with common operations" ❖ Methods of a class in OOP, typeclasses in FP, etc. ❖ For data sections, their dedicated code sections are their operations ❖ It's dual: data accessed by code tells much about code ❖ Linkers collect similar sections into contiguous pieces ❖ Linker maps are the closest we have to intent descriptions of binary objects in process space!
  • 15. Example policies ❖ Web application decompresses a PNG file ❖ Mental model .PNG file Bitmap libpng
  • 16. What attackers see malicious .PNG Bitmap with leaked data .PNG file private key libpng w/ bugs no-longer-private key
  • 17. Or malicious .PNG Bitmap overwrites critical data .PNG file, with exploit libpng w/ bugs Authorized keys
  • 18. Mapping it into the ABI malicious .PNG private keylibssl .data bitmap libpng .input libpng .output • Easy to introduce new sections • Each code segment can get different permissions • Only libssl.text can access libssl.data • libpng.text can only access libpng.input and libpng.output • And libpng.input can only be read by libpng.
  • 19. Back to our example SSL initialization SSL libpng app logic SSL keys Input buffer Output buffer RW R RW R W RW
  • 20. Enforcing ❖ Modern OS loaders discard section information ❖ New architecture: ❖ 'Unforgetful loader' preserves section identity after loading ❖ Enforcement scheme for intent-level semantics ❖ Better tools to capture semantics in ABI
  • 21. ELF sections libpng.so .init ... libc.o .text .data .text program.o .text .data ELF consists of sections: ❖ Code ❖ Data (RW/RO) ❖ GOT/PLT jump tables for dynamic linking ❖ Metadata: Symbols, ... ❖ Can be controlled from C:
 __section__(section_name) ❖ Flexible mechanism ❖ ~30 sections in typical file
  • 22. Sections turn into segments libpng.o .data ... libc.o .text .data .text program.o .text .rodata Linker combines sections & groups them into segments: .text(program.o) .text(libc) .text(libpng) .rodata .data(program.o) .data(libc) .data(libc) .bss (heap) R_X RW_ Only RWX bits enforced
  • 23. Two loaders ❖ Static linking: ❖ kernel (binfmt_elf.{c,ko}) reads segments ❖ calls mmap() for each segment ❖ jumps to entry point ❖ Dynamic linking ❖ Kernel loads ld.so (as in the above) ❖ ld.so parses ELF file again (bugs happen here) ❖ ld.so opens shared libraries, mmaps and maintains .PLT/.GOT tables ❖ One mmap() call per segment
  • 24. What the kernel does: ❖ Kernel: ❖ task_struct for each thread ❖ registers, execution context => state ❖ pid, uid, capabilities => identity of the process ❖ mm_struct for address space
  • 25. task_struct thread_1 task_struct thread_2 mm_struct
  • 26. task_struct thread_1 task_struct thread_2 mm_struct mmap FS ./foo .text(program.o) .text(libc) .text(libpng) .rodata 0x40000 .data(program.o) .data(libc) .data(libpng) .bss (heap) 0x80000 vm_area_struct Linked list of vm_area_structs Points to file system or anonymous memory structure
  • 27. task_struct thread_1 task_struct thread_2 mm_struct mmap RB-tree mm_rb RB tree for faster lookups LRU cache for even faster lookups FS ./foo FS ./foo .text(program.o) .text(libc) .text(libpng) .rodata 0x40000 .data(program.o) .data(libc) .data(libpng) .bss (heap) 0x80000 vm_area_struct
  • 28. What the CPU sees mm_struct/CPU CR3 pud_t*[512] pmd_t*[512] PGD pmd_t*[512] pmd_t*[512] pte_t*[512] pte_t*[512] pmd_t*[512] pte_t[512] pte[512] pte_t[512] PUD PMD PTE physical address + flag All three structures have to be kept in sync
  • 29. Caching ❖ Walking these structures on every memory access would be prohibitively slow ❖ TLBs cache every level of this hierarchy ❖ Originally invalidated on reload ❖ Tagged TLBs (PCID on intel). ELFbac also had the first PCID patch for linux. Transparent on AMD
  • 30. Caches enforce policy! ❖ NX bit is seen as a mere mitigation ❖ Actually it is policy that express intent ❖ First implementations of NX used cache state (split TLB) meant for performance to add semantics ❖ ELFbac does the same with TLBs and PCID
  • 31. It's all about caching ❖ Each VM system layer is a cache ❖ And performs checks ❖ Checks get semantically less expressive as you get closer to hardware ❖ ELFbac adds another layer of per-phase caching ❖ Allows us to enforce a semantically rich policy
  • 32. Example: Page faults ❖ If the page table lookup fails, CPU calls the kernel ❖ Kernel looks for the vm_area_struct (rb_tree) ❖ Check: If not present, SIGSEGV ❖ Fill in page table, with added semantics ❖ Swap-in ❖ Copy-on-write ❖ Grow stacks
  • 33. ELFbac execution model ❖ Old n-1 relationship: ❖ task_struct(n threads) <-> mm_struct(1 process) ❖ New n-m relationship: ❖ task_struct(n threads) <-> mm_struct(m ELFbac states) ❖ A lot of kernel code would have to change to update m copies
  • 34. Caching as a solution ❖ ElfBAC states are subsets of the base address space ❖ Base address space still represented by mm ❖ Squint enough, and a subset is like a cache ❖ Only need invalidation instead of mutation ❖ Caches already have to be invalidated (TLB) ❖ Linux: mm_notifier plug-in API(virtualization)
  • 35. ELFbac page fault handler ❖ If the access would fault on the base page tables ❖ Fall back to the old page fault handler ❖ Look up the address in ELFbac policy ❖ Move process to new phase if necessary ❖ Otherwise copy page table entry to allow future accesses
  • 36. What each part sees: task_struct thread_1 task_struct thread_2 base mm_struct vm_area_struct page tables Rest of kernel : elfbac policy mm_struct Authenticate mm_struct ProcessInput page tables page tables ELFbac: CPU
  • 37. Porting to embedded ARM ❖ Focused on compartmentalizing ELF binaries under static linking ❖ Dynamic linking case supportable by creating an ELFbac-aware ld.so, left to future work ❖ Policies generated from a JSON descriptor file ❖ tool produces both the linker script and the binary policy ❖ Binary policy is packed into a special segment, loaded by the kernel during ELF loading time ❖ Modifications to the page fault handler enforce the policy at runtime, verifying memory accesses and state transitions ❖ ARM ASIDs (tagged TLB) reduce overhead between state transitions
  • 39. Basic example: isolating a parser Input& Processing:&& malloc()& memcopy()& +,&*,&9,&/,&…&& Recognizer& for&input& language& Grammar& Spec& Reject&& invalid& inputs& Accept&valid/expected&inputs,& call&semanFc&acFons&
  • 40. ELFbac for SCADA/ICS ❖ DNP3 is a complex ICS protocol; prone to parser errors ❖ S4x14: "Robus Master Serial Killer", Crain & Sistrunk ❖ Only a small subset of the protocol is used on any single device. Whitelisting this syntax is natural. ❖ A filtering proxy is a DNP3 device's best friend ❖ "Exhaustive syntactic inspection": langsec.org/dnp3/ ❖ ELFbac policy: isolate the parser from the rest of the app
  • 41. Parser isolation ❖ Raw data is (likely) poison; parsing code is the riskiest part of the app & its only defense ❖ Parser must be separated from the rest of the code ❖ No other section touches raw input ❖ Parser touches no memory outside of its output area, where it outputs checked, well-typed objects ❖ Input => Parser => Well-typed data => Processing code
  • 42. ICS proxy policy at a glance
  • 44. ELFbac & Grsec/PaX for ARM ❖ We worked with the Grsecurity to integrate ELFbac on ARM with Grsecurity for ICS hardening: ❖ Cohesive set of protections for ICS systems on ARM ❖ PAX_KERNEXEC, PAX_UDEREF, PAX_USERCOPY, PAX_CONSTIFY, PAX_PAGEEXEC, PAX_ASLR, and PAX_MPROTECT ❖ Available from https://grsecurity.net/ics.php ❖ ELFbac + Grsecurity ICS tested with our DNP3 proxy on a common industrial computer Moxa UC-8100, ARM v7 (Cortex-A8)
  • 45. OpenSSH policy ❖ OpenSSH attacked via crafted inputs ❖ GOBBLES pre-auth RCE 2002 -- CVE-2016-077{7,8} ❖ OpenSSH introduced the original privilege drop as a policy primitive ❖ "If the process asks for a privileged op after this point, it's no longer trustworthy; kill it" ❖ But access to (a) non-raw data for a parser (b) raw data beyond the parser is also privilege!
  • 46. ELFbac for OpenSSH ❖ Policies for both the OpenSSH client and server ❖ Isolate portions of OpenSSH responsible for crypto/key management from those responsible for processing & parsing packets ❖ Create separate sections for sensitive data blobs, allowing for finer-grained access control ❖ Control access to libraries used by OpenSSH based on where used ❖ Prevent direct leaking of sensitive data like private keys from, e.g., CVE-2016-0777 (roaming vuln) ❖ Separate heaps for dynamic allocations, with specific access permissions across process phase boundaries
  • 47. OpenSSH policy at a glance
  • 48. Application design considerations ❖ "Separating concerns" is good engineering, but has limited security pay-offs ❖ All concerns still live in the same address space ❖ Keeping separate heaps in a process has limited returns ❖ Proximity obstacles to overflows/massaging, but still the same address space, accessible by all code ❖ Mitigation, not policy ❖ With ELFbac, keeping marked, separating heaps becomes policy: clear intent, enforced w.r.t. code units
  • 49. ELFbac is a design style ❖ "Who cares? That's not how code gets written" ❖ Availability of enforcement mechanisms reshapes programming practice ❖ C++ took over the world by making contracts (e.g., encapsulation) enforceable (weakly, at compile time) ❖ Non-enforceable designs are harder to adopt & check ❖ Only enforceable separation matters
  • 51. Performance overheads (x86) ❖ NGINX benchmarked with a policy isolating all libraries from the main process: ❖ Best case: around ~5% (AMD Opteron Piledriver) ❖ worst case: ~30% on some Intel platforms ❖ Too many state transitions on the hot path ❖ Policy must be adapted to the application structure ❖ Average ~15% when running on KVM ❖ KVM already incurs performance costs ❖ KVM optimizes virtual memory handling
  • 52. Drawbacks and TODOs ❖ Significant performance tuning still outstanding ❖ Implement an ELFbac-aware malloc ❖ Integration with system call policy mechanisms (e.g. Capsicum) ❖ Provide rich policies for many standard libraries ❖ ELFbac is not a mitigation, it's a way to design policies and resilient applications
  • 53. Binary Rewriting Tools ❖ Store policy in the ELF file ❖ Loader sends it to the kernel with a new syscall ❖ Adding a policy requires binary rewriting ❖ Made our own tool: Mithril, currently only implemented for ELF ❖ Translates binaries into a canonical form that is less context-dependent and can be easily modified ❖ Tested on the entire Debian x86_64 archive, producing a bootable system ❖ ~25GB of packages
  • 54. Takeaway ❖ Per-process bags of permission are no longer a suitable basis for policy ❖ Instead, ABI-level memory objects at process runtime are the sweet spot for security policy ❖ Modern ABIs provide enough granularity to capture programmers intent w.r.t. code and data units ❖ Intent-level semantics compatible with ABI, standard build/binary tool chains
  • 55. Policy Granularity: ABI is the Sweet Spot ABI
  • 56. Thank you ❖ http://elfbac.org/ ❖ https://github.com/sergeybratus/elfbac-arm/ ABI