CUJO - Safe Browsing with Lua Lourival Vieira Neto - - PowerPoint PPT Presentation
CUJO - Safe Browsing with Lua Lourival Vieira Neto - - PowerPoint PPT Presentation
CUJO - Safe Browsing with Lua Lourival Vieira Neto <lourival.neto@getcujo.com> Introduction CUJO Smart Firewall Safe Browsing Parental Controls Introduction CUJO Firmware Team Gabriel Ligneul Iruat
Introduction
➔ CUJO ◆ Smart Firewall ◆ Safe Browsing ◆ Parental Controls
Introduction
➔ CUJO Firmware Team ◆ Gabriel Ligneul ◆ Iruatã Souza ◆ Katia Fernandes ◆ Linas Nenorta ◆ Lourival Vieira Neto ◆ Marcel Moura ◆ Savio Barbosa ◆ Tadeu Bastos ◆ Pedro Tammela
Introduction
➔ Lunatik ◆ Lua in the Linux Kernel
◆
"Scriptable Operating Systems with Lua"
- Vieira Neto, L., Ierusalimschy, R., de Moura, A.L. and Balmer, M.
➔ Luadata ◆ “Zero-copy” ➔ NFLua ◆ Netfilter Binding
Iptables
NIC Driver Netfilter NFLua
Luadata
(zero copy)
Kernel User space
Cloud Luajson Lunatik
Safe Browsing
Agent
threatd
nf.lua nf_http.lua nf_ssl.lua nf_threat.lua nf_safebro.lua
➔ Components
Iptables
NIC Driver Netfilter NFLua
Luadata
(zero copy)
Kernel User space
Cloud Luajson Lunatik
Safe Browsing
Agent
threatd
nf.lua nf_http.lua nf_ssl.lua nf_threat.lua nf_safebro.lua
➔ Configuration
safebro.json
Iptables
NIC Driver Netfilter NFLua
Luadata
(zero copy)
Kernel User space
Cloud Luajson Lunatik
Safe Browsing
Agent
threatd
nf.lua nf_http.lua nf_ssl.lua nf_threat.lua nf_safebro.lua
➔ Configuration
safebro.json Lua chunk
Iptables
NIC Driver Netfilter NFLua
Luadata
(zero copy)
Kernel User space
Cloud Luajson Lunatik
Safe Browsing
Agent
threatd
nf.lua nf_http.lua nf_ssl.lua nf_threat.lua nf_safebro.lua
➔ Configuration
safebro.json Lua chunk Load config
Safe Browsing
➔ Configuration
# cat nf_{threat,safebro,http,ssl}.lua > /proc/nf_lua # iptables -A FORWARD -p tcp --dport 80 --tcp-flags PSH PSH \
- m lua --function nf_http -j DROP
# iptables -A FORWARD -p tcp --dport 443 --tcp-flags PSH PSH \
- m lua --function nf_ssl -j REJECT --reject-with tcp-reset
Safe Browsing
➔ Configuration
threatd.lua
Safe Browsing
➔ Configuration
xt_lua.c
Safe Browsing
➔ Configuration
nf_safebro.lua
Iptables
NIC Driver Netfilter NFLua
Luadata
(zero copy)
Kernel User space
Cloud Luajson Lunatik
Safe Browsing
Agent
threatd
nf.lua nf_http.lua nf_ssl.lua nf_threat.lua nf_safebro.lua
➔ Filter
Cached? No
TCP PSH n f l u a _ m a t c h
Iptables
NIC Driver Netfilter NFLua
Luadata
(zero copy)
Kernel User space
Cloud Luajson Lunatik
Safe Browsing
Agent
threatd
nf.lua nf_http.lua nf_ssl.lua nf_threat.lua nf_safebro.lua
➔ Filter
Cached? No
TCP PSH Hot drop L
- k
u p n f l u a _ m a t c h
Iptables
NIC Driver Netfilter NFLua
Luadata
(zero copy)
Kernel User space
Cloud Luajson Lunatik
Safe Browsing
Agent
threatd
nf.lua nf_http.lua nf_ssl.lua nf_threat.lua nf_safebro.lua
➔ Filter
Cached? No
TCP PSH Hot drop L
- k
u p Lookup Reputation/ Category Cloud Decision n f l u a _ m a t c h
Iptables
NIC Driver Netfilter NFLua
Luadata
(zero copy)
Kernel User space
Cloud Luajson Lunatik
Safe Browsing
Agent
threatd
nf.lua nf_http.lua nf_ssl.lua nf_threat.lua nf_safebro.lua
➔ Filter
Cached? No
TCP PSH Hot drop A d d t
- c
a c h e L
- k
u p Lookup n f l u a _ m a t c h Reputation/ Category Cloud Decision
Iptables
NIC Driver Netfilter NFLua
Luadata
(zero copy)
Kernel User space
Cloud Luajson Lunatik
Safe Browsing
Agent
threatd
nf.lua nf_http.lua nf_ssl.lua nf_threat.lua nf_safebro.lua
➔ Filter
TCP retransmission nflua_match
Cached? Yes
Iptables
NIC Driver Netfilter NFLua
Luadata
(zero copy)
Kernel User space
Cloud Luajson Lunatik
Safe Browsing
Agent
threatd
nf.lua nf_http.lua nf_ssl.lua nf_threat.lua nf_safebro.lua
➔ Filter
TCP retransmission nflua_match A c c e p t / B l
- c
k p a g e
Cached? Yes
TCP reply
Safe Browsing
➔ Filter
xt_lua.c
Safe Browsing
➔ Filter
xt_lua.c
Safe Browsing
➔ Filter
nf_http.lua
Safe Browsing
➔ Filter
nf.lua
Safe Browsing
➔ Filter
nf_ssl.lua
Safe Browsing
➔ Filter
nf_ssl.lua
Safe Browsing
➔ Filter
nf_http.lua
Safe Browsing
➔ Filter
Block page
Why Lua?
➔ Extensible Extension Language ◆ Embeddable and Extensible ◆ C Library ➔ Almost Freestanding ➔ Small Footprint ◆ ~250 KB ➔ Fast ➔ MIT License
Why Lua?
➔ Ease of Development
➔ High-level Language ➔ Dynamically Typed ➔ Domain-specific API
Why Lua?
➔ Safety
➔ Automatic Memory Management ➔ Protected Call ➔ Fully Isolated States ➔ Cap the Number of Executed Instructions ➔ Test Suite
Why Lua?
➔ Security
- A single vulnerability disclosed since 1993