SSL: MITM attack on cipher suites which are not authenticated;
Rails: fixed in 1.2.4, 1.2.5; URL Session ids; JSON XSS: faulty escaping for JSON;
http://directwebremoting.org/blog/joe/2007/01/01/csrf_attacks_or_how_to_avoid_exposing_your_gmail_contacts.html
Thus: Monitor your app stack for relevant security announcements
Damage, Probability: e.g. Magnitudes; Probability, Losses: High, Medium, Low
Risk Assessment
consider vulnerabliities
Risk Assessment
App integrity;
propagation: helps on AND edges (social engineering)
Problem: Damage, Probability, Risk are dependent on lots of attributes such as security measures
(e.g. User error: complexity? usability, undo?);
Application Security Policy
Authentication
Validate identity of users
Authorization
Guests
Attendees
Administrators
Application side; countermeasures
Design Time vs. Agile Development
Agile Security Engineering?
Missed anything?
Security aspect? Completeness?
Scope/mission creep
Next iteration: Conference workflow
Change in functional requirement: unpublished, unannounced conference
Also: Process Confabulation
Parts of threat analysis and risk assessment resuable
Testing! Problem: how to integrate non-functional reqs in test?
Programmatic authorization rule definition: not DRY;
Rules repeating through-out code;
Evolution of security policies? E.g.: no more editing of conferences through conference organizers
Not even object-specific? Dynamic?
Raises exception if not allowed according to rules
Authorization Rules: DSL
role :guestdo
has_permission_on :conferences, :to => :readend
role :attendeedo
includes :guestend
role :conference_organizerdo
has_permission_on :conferences, :to => :manageend
Marked in red: concepts provided by the plugin;
Constraints: what happens when we'd like to allow access based on attributes of an instance of the context: describe which one it applies to
Attribute Constraints
role :attendeedo
includes :guest
has_permission_on :conference_attendees,
:to => :deletedo
if_attribute :attendee => is { user }
endend
aka. Authorization Constraints; context constraint;
needs structure to enable query rewriting etc.
Attribute Constraints
role :attendeedo
includes :guest
has_permission_on :conference_attendees,
:to => :deletedo
if_attribute :attendee => is { user }
end
has_permission_on :talk_attendees, :to => :createdo
if_attribute :talk => {
:conference => {
:attendees => contains {user} }}
endend
conditions may be nested; OR-combination of multiple condition statements; AND in one statement
Not the Panacea, though: Scope: Authorization for non-trivial cases
Demo
Short: Showing login with different roles; Unpublished one to be seen by everyone
Integrate Conference workflow:
- guests, attendees seeing only published conferences;
Security check page: Dotty-Graph; Display Rules (syntax highlighting, simplified); XACML-Export
- auth rules helpful way of communicating with business owner
Outlook
End-user development of authorization rules
Graphical representation
User Interface
Rules development workflow
Testing authorization
TDD of authorization rules
Authorization Test DSL
What to test?
Test security requirements: e.g. Integration tests
Self-service Authorization
It is much easier to apologize than to get permission.Grace Hopper
role :secretarydo
has_permission_on :projects, :to => :read
may_extend_to :project_managerend
Flexibility, especially needed in SME if authorization is introduced as part of a enterprise web application
for the first time, hindering familiar and efficient workflows;
Integrity and availability often with higher priority than confidentiality;
Needs specific measures
agile security engineering - declarative_authorization to the help with a declarative, dry approach and context constraints;
not the silver bullet, for simplest cases might be unnecessary; still for enterprise applications a helpful way to
communicate with the business owner. Check it out, fork it at github and tell us what you think about it.