SlideShare a Scribd company logo
Application security from the inside
Agenda
How to make apps more secure?
1. Triggering new vulnerabilities (bad guys)
2. Detecting/protecting found issues (good
guys)
1. SQL injection
2. Cross Site Scripting (XSS)
3. Third party components vulnerabilities
4. Shell injection
2
About Me
Jean-Baptiste Aviat
CTO at Sqreen (https://sqreen.io)
We protect applications automatically
Sqreen is hiring
Former RedTeam security engineer at Apple
The best place for app
security
• Where to gather accurate information for
securing an application?
• How to change the tires of a car running at
100 mph?
• How to make the diagnosis continuous, as
modern release cycles?
4
App security: the place to be
• Need to get closer to the runtime
• Retrieve all required data, while the
application processes it
• Work with the deployed, running
application
• Obvious solution: instrumentation
5
Debugging allows…
• Devs & hackers method to inspect live
apps
• Access anything in it
– CPU registers
– Addressable memory of the whole process:
functions, symbols…
– Threads
• And to modify anything in it
– Modify return values
6
7
(byebug) thread list
+ 1 #<Thread:0x007fe41b0d1ae0@2.2.0/webrick/server.rb:283 run> ...
2 #<WEBrick::Utils::TimeoutHandler::Thread:0x007fe41b0d1220@2.2.0/webrick/
utils.rb:162 sleep> 2.2.0/webrick/utils.rb:173
3 #<Thread:0x007fe4140bc408 sleep> 2.2.0/webrick/server.rb:174
(byebug) thread switch 3
3 #<Thread:0x007fe4140bc408 sleep> 2.2.0/webrick/server.rb:174
(byebug) thread switch 3
[168, 177] in 2.2.0/webrick/server.rb
172: while @status == :Running
173: begin
=> 174: if svrs = IO.select([shutdown_pipe[0], *@listeners], nil, nil, 2.0)
175: if svrs[0].include? shutdown_pipe[0]
176: break
At first sight
Web application specifics
• Relevant information in a web application:
– User request (headers, cookies,
parameters…)
and server response
– Any function call and its arguments
• Database requests
• File operations
• External APIs calls
• Syscalls…
– All current threads
8
9
0 ActiveRecord::ConnectionAdapters::SQLite3Adapter.exec_query(sql#String, name#String…)
…
7 PostsController.set_post
…
23 ActionController::ParamsWrapper.process_action(action#NilClass, *args#Array)
…
27 ActionController::Metal.dispatch(action#NilClass, request#ActionDispatch::Request)
…
37 Rack::ETag.call(env#Hash)
…
40 ActionDispatch::ParamsParser.call(env#Hash)
…
44 ActionDispatch::Cookies.call(env#Hash)
45 ActiveRecord::QueryCache.call(env#Hash)
…
74 WEBrick::HTTPServer.service(req#WEBrick::HTTPRequest, res#WEBrick::HTTPResponse)
75 WEBrick::HTTPServer.run(sock#TCPSocket)
76 block in WEBrick::GenericServer.start_thread(sock#TCPSocket, &block#NilClass)
Looking closer…
• Application instrumentation
• Different ways to identify vulnerabilities
• And many solutions to prevent them
– Patch a function return value
– Encode a function arguments
– Raise an exception to prevent further
execution
10
11
(byebug) break ActiveRecord::ConnectionAdapters::SQLite3Adapter.exec_query
Successfully created breakpoint with id 1
(byebug) continue
[283, 292] in …/active_record/connection_adapters/sqlite3_adapter.rb
287:
=> 288: def exec_query(sql, name = nil, binds = [])
289: type_casted_binds = binds.map { |col, val|
290: [col, type_cast(val, col)]
291: }
292:
(byebug) var local
binds = []
name = Post Load
self = #<ActiveRecord::ConnectionAdapters::SQLite3Adapter:0x007fb1eb30df50>
sql = SELECT * FROM posts WHERE id=3
(byebug) self.quote("it's a string")
"'it''s a string'"
Where the database
is accessed
SQL injection detection
• Inside an app, full access to:
– Raw SQL query
just as the database receives it
– Database system (Oracle, MySQL…)
– Database configuration (encoding)
– Untrusted parameters
• Ability to parse the complete SQL query
12
SQL injection
• Untrusted entry used in a SQL request
• Assume pwd is injectable
• Injected query:
• The SQL query has to be valid to trigger an
injection
• How to prove that an injection happened?
13
SELECT * FROM users WHERE pwd = ‘sun' LIMIT 1
SELECT * FROM users WHERE pwd = 'sun' OR 1=1--+’ LIMIT 1
Request just before it leaves the app to the
DB:
Reminder: we know the database, its
charset, encoding rules…
1 user entry, multiple SQL tokens:
This is an injection.
14
SELECT * FROM users WHERE password = 'sun' OR 1=1-- '
SELECT * FROM users WHERE password = sun OR 1 = 1
#0 ActionView::OutputBuffer.<<(value#NilClass)
#1 ActionView::CompiledTemplates._app_views_posts_show_html_erb…(local_assigns, output_buffer)
#2 block in ActionView::Template.render(view, locals#Hash, buffer#NilClass, &block#Proc)
#3 #<Class:ActiveSupport::Notifications>.instrument(name#String, payload#Hash)
[…]
#18 ActionView::Rendering._render_template(options#Hash)
#19 ActionController::Streaming._render_template(options#Hash)
#0 is string concatenation
#1 is template insertion
Rendering a template
(byebug) break ActionView::OutputBuffer.<<
[6, 15] in actionview-4.2.3/lib/action_view/buffers.rb
…
10: def <<(value)
=> 11: return self if value.nil?
12: super(value.to_s)
13: end
14: alias :append= :<<
15:
(byebug) var local
value = "my <script>alert()</script> title"
(byebug) value.html_safe?
true
String concatenation
[6, 15] in app/views/posts/show.html.erb
8:
9: <p>
10: <strong>Title:</strong>
=> 11: <%= @post.title %>
12: </p>
13:
In Template Insertion
XSS detection
• Inside an app, access to:
– Template engine (JSF, ERB…)
– Partially rendered page
– Fully rendered page
– Generated page type
– HTML, CSS, JSON…
– Untrusted parameters
18
XSS detection
• HTML can be parsed
• Injection if:
– User entry adds HTML to the rendered page
• HTML node
• HTML attribute
• In such cases, we have an HTML injection
19
<div><script src=atta.ck/></script>Safari</div>
<a href=‘#’ onclick=‘alert()’>Data</div>
Third party components
vulnerabilities
20
irb(main):001:0> Gem.loaded_specs.map do |k, v|
puts "%20st%st%s " % [k, v.version, v.homepage]
end
rake 10.4.2
i18n 0.7.0 http://github.com/svenfuchs/i18n
tzinfo 1.2.2 http://tzinfo.github.io
activesupport 4.2.3 http://www.rubyonrails.org
erubis 2.7.0 http://www.kuwata-lab.com/erubis/
nokogiri 1.6.6.2 http://nokogiri.org
actionview 4.2.3 http://www.rubyonrails.org
sqlite3 1.3.10 https://github.com/sparklemotion/sqlite3-ruby
execjs 2.6.0 https://github.com/rails/execjs
...
CVE-2015-1819
CVE-2015-7941
CVE-2015-7942
CVE-2015-8035
An application dependencies
3rd party components vuln.
• Application knows its libraries
– Version
– Configuration
– Dependencies
• And OS libraries
• Correlation with public security advisories
• And restrict / correct the vulnerable paths
22
Shell injection
23
• Inside an app, access to:
– Command (before execution)
– Shell
• Type (Bash, ksh, PowerShell, cmd.exe…)
• Version (ShellShock vulnerable?)
– Environment
– User parameters
24
Shell injection
• Similar to SQL injection
• Ability to parse the executed command
– Legitimate command:
– Injected command:
• Possible correlation with untrusted parameters
25
whois jbaviat.sqreen.io
whois jbaviat.sqreen.io ; cat /etc/passwd
@JbAviat
Questions?
26
jb@sqreen.io
Sqreen: you code, we protect
• We protect applications automatically
• Beta program available:
Contact us to be part of it
• Sqreen is hiring
27

More Related Content

PDF
Tune your App Perf (and get fit for summer)
PDF
Ruby on Rails security in your Continuous Integration
PDF
Instrument Rack to visualize
 Rails requests processing
PDF
Serverless security - how to protect what you don't see?
PDF
Policy as code what helm developers need to know about security
PDF
Using Splunk/ELK for auditing AWS/GCP/Azure security posture
PPTX
Alfredo Reino - Monitoring aws and azure
PDF
Exploiting IAM in the google cloud platform - dani_goland_mohsan_farid
Tune your App Perf (and get fit for summer)
Ruby on Rails security in your Continuous Integration
Instrument Rack to visualize
 Rails requests processing
Serverless security - how to protect what you don't see?
Policy as code what helm developers need to know about security
Using Splunk/ELK for auditing AWS/GCP/Azure security posture
Alfredo Reino - Monitoring aws and azure
Exploiting IAM in the google cloud platform - dani_goland_mohsan_farid

What's hot (20)

PPTX
Scaling Security in the Cloud With Open Source
PPTX
Hacker Proof web app using Functional tests
PPTX
Stephen Sadowski - Securely automating infrastructure in the cloud
PDF
"You Don't Know NODE.JS" by Hengki Mardongan Sihombing (Urbanhire)
PPTX
Security testautomation
PDF
Automated Infrastructure Security: Monitoring using FOSS
PPTX
AWS Security Week | Getting to Continuous Security and Compliance Monitoring ...
PDF
Corpsec: “What Happened to Corpses A and B?”
PPTX
DevSecOps - CrikeyCon 2017
PPTX
Web & Cloud Security in the real world
PPTX
Using Puppet With A Secrets Server
PDF
Node JS reverse shell
PPTX
Automated Intrusion Detection and Response on AWS
PDF
Prepare to defend thyself with Blue/Green
PDF
Automated Security Testing
PDF
How to secure web applications
PPTX
.NET Security (Radu Vunvulea)
PDF
Mod Security
PDF
Transfer Learning: Repurposing ML Algorithms from Different Domains to Cloud ...
PDF
Un-broken Logging - Operability.io 2015 - Matthew Skelton
Scaling Security in the Cloud With Open Source
Hacker Proof web app using Functional tests
Stephen Sadowski - Securely automating infrastructure in the cloud
"You Don't Know NODE.JS" by Hengki Mardongan Sihombing (Urbanhire)
Security testautomation
Automated Infrastructure Security: Monitoring using FOSS
AWS Security Week | Getting to Continuous Security and Compliance Monitoring ...
Corpsec: “What Happened to Corpses A and B?”
DevSecOps - CrikeyCon 2017
Web & Cloud Security in the real world
Using Puppet With A Secrets Server
Node JS reverse shell
Automated Intrusion Detection and Response on AWS
Prepare to defend thyself with Blue/Green
Automated Security Testing
How to secure web applications
.NET Security (Radu Vunvulea)
Mod Security
Transfer Learning: Repurposing ML Algorithms from Different Domains to Cloud ...
Un-broken Logging - Operability.io 2015 - Matthew Skelton
Ad

Viewers also liked (14)

PDF
Bletchley
PDF
From 0 to 0xdeadbeef - security mistakes that will haunt your startup
PPTX
Leveraging Honest Users: Stealth Command-and-Control of Botnets
PDF
PhD Thesis Diogo Mónica
PDF
An IDS for browser hijacking
PPTX
WiFiHop - mitigating the Evil twin attack through multi-hop detection
PPTX
Observable Non-Sybil Quorums Construction in One-Hop Wireless Ad Hoc Networks
PDF
MultiPath TCP - The path to multipath
PDF
Secure Software Distribution in an Adversarial World
PDF
ESORICS 2014: Local Password validation using Self-Organizing Maps
PDF
Web Summit 2015 - Enterprise stage - Cloud, Open-Source, Security
PDF
MTLS in a Microservices World
PDF
NoSQL Injections in Node.js - The case of MongoDB
PPTX
Security best practices for kubernetes deployment
Bletchley
From 0 to 0xdeadbeef - security mistakes that will haunt your startup
Leveraging Honest Users: Stealth Command-and-Control of Botnets
PhD Thesis Diogo Mónica
An IDS for browser hijacking
WiFiHop - mitigating the Evil twin attack through multi-hop detection
Observable Non-Sybil Quorums Construction in One-Hop Wireless Ad Hoc Networks
MultiPath TCP - The path to multipath
Secure Software Distribution in an Adversarial World
ESORICS 2014: Local Password validation using Self-Organizing Maps
Web Summit 2015 - Enterprise stage - Cloud, Open-Source, Security
MTLS in a Microservices World
NoSQL Injections in Node.js - The case of MongoDB
Security best practices for kubernetes deployment
Ad

Similar to Application Security from the Inside - OWASP (20)

PDF
Api days 2018 - API Security by Sqreen
PDF
Rails Security
PDF
Web Application Security in Rails
ODP
Security on Rails
PDF
Securing Rails
PDF
Zane lackey. security at scale. web application security in a continuous depl...
PDF
4 andrii kudiurov - web application security 101
PDF
Protecting Your APIs Against Attack & Hijack
PPTX
Hackers versus Developers and Secure Web Programming
PDF
Defcon 20-zulla-improving-web-vulnerability-scanning
PDF
Defcon 20-zulla-improving-web-vulnerability-scanning
PPT
Security Tech Talk
PPTX
Application security [appsec]
PPTX
Prevoty NYC Java SIG 20150730
PPTX
Vulnerabilities in modern web applications
PDF
HES2011 - joernchen - Ruby on Rails from a Code Auditor Perspective
PDF
Workshop KrakYourNet2016 - Web applications hacking Ruby on Rails example
PDF
Mobile Application Pentest [Fast-Track]
PDF
RoR Workshop - Web applications hacking - Ruby on Rails example
PDF
Ruby on-rails-security
Api days 2018 - API Security by Sqreen
Rails Security
Web Application Security in Rails
Security on Rails
Securing Rails
Zane lackey. security at scale. web application security in a continuous depl...
4 andrii kudiurov - web application security 101
Protecting Your APIs Against Attack & Hijack
Hackers versus Developers and Secure Web Programming
Defcon 20-zulla-improving-web-vulnerability-scanning
Defcon 20-zulla-improving-web-vulnerability-scanning
Security Tech Talk
Application security [appsec]
Prevoty NYC Java SIG 20150730
Vulnerabilities in modern web applications
HES2011 - joernchen - Ruby on Rails from a Code Auditor Perspective
Workshop KrakYourNet2016 - Web applications hacking Ruby on Rails example
Mobile Application Pentest [Fast-Track]
RoR Workshop - Web applications hacking - Ruby on Rails example
Ruby on-rails-security

Recently uploaded (20)

PDF
cuic standard and advanced reporting.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Machine learning based COVID-19 study performance prediction
PPT
Teaching material agriculture food technology
PDF
Modernizing your data center with Dell and AMD
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Encapsulation theory and applications.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Cloud computing and distributed systems.
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPTX
Big Data Technologies - Introduction.pptx
PDF
Unlocking AI with Model Context Protocol (MCP)
cuic standard and advanced reporting.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
20250228 LYD VKU AI Blended-Learning.pptx
Chapter 3 Spatial Domain Image Processing.pdf
Machine learning based COVID-19 study performance prediction
Teaching material agriculture food technology
Modernizing your data center with Dell and AMD
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Encapsulation theory and applications.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
Understanding_Digital_Forensics_Presentation.pptx
Empathic Computing: Creating Shared Understanding
Cloud computing and distributed systems.
Encapsulation_ Review paper, used for researhc scholars
NewMind AI Weekly Chronicles - August'25 Week I
Per capita expenditure prediction using model stacking based on satellite ima...
Network Security Unit 5.pdf for BCA BBA.
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Big Data Technologies - Introduction.pptx
Unlocking AI with Model Context Protocol (MCP)

Application Security from the Inside - OWASP

  • 2. Agenda How to make apps more secure? 1. Triggering new vulnerabilities (bad guys) 2. Detecting/protecting found issues (good guys) 1. SQL injection 2. Cross Site Scripting (XSS) 3. Third party components vulnerabilities 4. Shell injection 2
  • 3. About Me Jean-Baptiste Aviat CTO at Sqreen (https://sqreen.io) We protect applications automatically Sqreen is hiring Former RedTeam security engineer at Apple
  • 4. The best place for app security • Where to gather accurate information for securing an application? • How to change the tires of a car running at 100 mph? • How to make the diagnosis continuous, as modern release cycles? 4
  • 5. App security: the place to be • Need to get closer to the runtime • Retrieve all required data, while the application processes it • Work with the deployed, running application • Obvious solution: instrumentation 5
  • 6. Debugging allows… • Devs & hackers method to inspect live apps • Access anything in it – CPU registers – Addressable memory of the whole process: functions, symbols… – Threads • And to modify anything in it – Modify return values 6
  • 7. 7 (byebug) thread list + 1 #<Thread:0x007fe41b0d1ae0@2.2.0/webrick/server.rb:283 run> ... 2 #<WEBrick::Utils::TimeoutHandler::Thread:0x007fe41b0d1220@2.2.0/webrick/ utils.rb:162 sleep> 2.2.0/webrick/utils.rb:173 3 #<Thread:0x007fe4140bc408 sleep> 2.2.0/webrick/server.rb:174 (byebug) thread switch 3 3 #<Thread:0x007fe4140bc408 sleep> 2.2.0/webrick/server.rb:174 (byebug) thread switch 3 [168, 177] in 2.2.0/webrick/server.rb 172: while @status == :Running 173: begin => 174: if svrs = IO.select([shutdown_pipe[0], *@listeners], nil, nil, 2.0) 175: if svrs[0].include? shutdown_pipe[0] 176: break At first sight
  • 8. Web application specifics • Relevant information in a web application: – User request (headers, cookies, parameters…) and server response – Any function call and its arguments • Database requests • File operations • External APIs calls • Syscalls… – All current threads 8
  • 9. 9 0 ActiveRecord::ConnectionAdapters::SQLite3Adapter.exec_query(sql#String, name#String…) … 7 PostsController.set_post … 23 ActionController::ParamsWrapper.process_action(action#NilClass, *args#Array) … 27 ActionController::Metal.dispatch(action#NilClass, request#ActionDispatch::Request) … 37 Rack::ETag.call(env#Hash) … 40 ActionDispatch::ParamsParser.call(env#Hash) … 44 ActionDispatch::Cookies.call(env#Hash) 45 ActiveRecord::QueryCache.call(env#Hash) … 74 WEBrick::HTTPServer.service(req#WEBrick::HTTPRequest, res#WEBrick::HTTPResponse) 75 WEBrick::HTTPServer.run(sock#TCPSocket) 76 block in WEBrick::GenericServer.start_thread(sock#TCPSocket, &block#NilClass) Looking closer…
  • 10. • Application instrumentation • Different ways to identify vulnerabilities • And many solutions to prevent them – Patch a function return value – Encode a function arguments – Raise an exception to prevent further execution 10
  • 11. 11 (byebug) break ActiveRecord::ConnectionAdapters::SQLite3Adapter.exec_query Successfully created breakpoint with id 1 (byebug) continue [283, 292] in …/active_record/connection_adapters/sqlite3_adapter.rb 287: => 288: def exec_query(sql, name = nil, binds = []) 289: type_casted_binds = binds.map { |col, val| 290: [col, type_cast(val, col)] 291: } 292: (byebug) var local binds = [] name = Post Load self = #<ActiveRecord::ConnectionAdapters::SQLite3Adapter:0x007fb1eb30df50> sql = SELECT * FROM posts WHERE id=3 (byebug) self.quote("it's a string") "'it''s a string'" Where the database is accessed
  • 12. SQL injection detection • Inside an app, full access to: – Raw SQL query just as the database receives it – Database system (Oracle, MySQL…) – Database configuration (encoding) – Untrusted parameters • Ability to parse the complete SQL query 12
  • 13. SQL injection • Untrusted entry used in a SQL request • Assume pwd is injectable • Injected query: • The SQL query has to be valid to trigger an injection • How to prove that an injection happened? 13 SELECT * FROM users WHERE pwd = ‘sun' LIMIT 1 SELECT * FROM users WHERE pwd = 'sun' OR 1=1--+’ LIMIT 1
  • 14. Request just before it leaves the app to the DB: Reminder: we know the database, its charset, encoding rules… 1 user entry, multiple SQL tokens: This is an injection. 14 SELECT * FROM users WHERE password = 'sun' OR 1=1-- ' SELECT * FROM users WHERE password = sun OR 1 = 1
  • 15. #0 ActionView::OutputBuffer.<<(value#NilClass) #1 ActionView::CompiledTemplates._app_views_posts_show_html_erb…(local_assigns, output_buffer) #2 block in ActionView::Template.render(view, locals#Hash, buffer#NilClass, &block#Proc) #3 #<Class:ActiveSupport::Notifications>.instrument(name#String, payload#Hash) […] #18 ActionView::Rendering._render_template(options#Hash) #19 ActionController::Streaming._render_template(options#Hash) #0 is string concatenation #1 is template insertion Rendering a template
  • 16. (byebug) break ActionView::OutputBuffer.<< [6, 15] in actionview-4.2.3/lib/action_view/buffers.rb … 10: def <<(value) => 11: return self if value.nil? 12: super(value.to_s) 13: end 14: alias :append= :<< 15: (byebug) var local value = "my <script>alert()</script> title" (byebug) value.html_safe? true String concatenation
  • 17. [6, 15] in app/views/posts/show.html.erb 8: 9: <p> 10: <strong>Title:</strong> => 11: <%= @post.title %> 12: </p> 13: In Template Insertion
  • 18. XSS detection • Inside an app, access to: – Template engine (JSF, ERB…) – Partially rendered page – Fully rendered page – Generated page type – HTML, CSS, JSON… – Untrusted parameters 18
  • 19. XSS detection • HTML can be parsed • Injection if: – User entry adds HTML to the rendered page • HTML node • HTML attribute • In such cases, we have an HTML injection 19 <div><script src=atta.ck/></script>Safari</div> <a href=‘#’ onclick=‘alert()’>Data</div>
  • 21. irb(main):001:0> Gem.loaded_specs.map do |k, v| puts "%20st%st%s " % [k, v.version, v.homepage] end rake 10.4.2 i18n 0.7.0 http://github.com/svenfuchs/i18n tzinfo 1.2.2 http://tzinfo.github.io activesupport 4.2.3 http://www.rubyonrails.org erubis 2.7.0 http://www.kuwata-lab.com/erubis/ nokogiri 1.6.6.2 http://nokogiri.org actionview 4.2.3 http://www.rubyonrails.org sqlite3 1.3.10 https://github.com/sparklemotion/sqlite3-ruby execjs 2.6.0 https://github.com/rails/execjs ... CVE-2015-1819 CVE-2015-7941 CVE-2015-7942 CVE-2015-8035 An application dependencies
  • 22. 3rd party components vuln. • Application knows its libraries – Version – Configuration – Dependencies • And OS libraries • Correlation with public security advisories • And restrict / correct the vulnerable paths 22
  • 24. • Inside an app, access to: – Command (before execution) – Shell • Type (Bash, ksh, PowerShell, cmd.exe…) • Version (ShellShock vulnerable?) – Environment – User parameters 24
  • 25. Shell injection • Similar to SQL injection • Ability to parse the executed command – Legitimate command: – Injected command: • Possible correlation with untrusted parameters 25 whois jbaviat.sqreen.io whois jbaviat.sqreen.io ; cat /etc/passwd
  • 27. Sqreen: you code, we protect • We protect applications automatically • Beta program available: Contact us to be part of it • Sqreen is hiring 27