Secure Coding mailing list archives

Re: Agile (Scrum) best security practices and experiences?


From: Antti Vähä-Sipilä <avs () iki fi>
Date: Tue, 14 Sep 2010 16:58:51 +0300

Dave said:
I then did a reprise/updated version at OWASP AppSec US in NY in 2008.
The slides and a video of the presentation are available here:
http://www.owasp.org/index.php/OWASP_NYC_AppSec_2008_Conference 

I did see Dave's OWASP slides earlier, but for some reason I never found or watched the video previously, which really 
has much more information than just the slides. I should have! That's good stuff.

I agree with the security stories and 'abuser stories' (misuse cases) being very useful and how product management can 
come up with those was one of the things I also tried to discuss in the Stockholm OWASP presentation. I think that 
having a way for product managers to come up with security stories independently of security expert help is necessary 
especially in a large organisation where the requirements are being managed all the time (instead of a "sprint 0" , our 
requirements management is continuous).

About dedicated security sprints - I've never seen them done myself, but two of the agile gurus I've listened to 
advised against 'themed' sprints in general. This is because if you know you'll have a security sprint coming up (or a 
performance sprint, or any sort of other quality sprint), there's a tendency to push that kind of work forward into 
that sprint, thereby creating quality debt. Also one of the underlying ideas of Scrum is that the code should be 
shippable and 'done' from quality perspective after every sprint - this is also what Erlend had in his presentation 
about Definition of Done. Postponing this work to some upcoming sprint just seems to violate this principle. This is 
also the question I have with Microsoft's Agile SDL. I wonder if their bucket-based system creates this sort of quality 
debt. But perhaps a dedicated sprint would work for some, if it is frequent enough.

Related to the above, plus this Rohit's excellent comment:
* Threat modeling needs to be agile and done in a matter of hours
rather than days. The focus should generally be on important high/risk
use cases rather than attempting to be comprehensive


We've building much of our SDL on the notion of threat modelling (we call it security threat analysis). Instead of a 
special sprint or a dedicated modelling session, what we currently advocate is doing the design/implemantation level 
threat analysis on backlog item level. Threat modelling would be interleaved as small backlog items before the 
respective implementation backlog items. This seems to be called a 'spike' in some agile literature. We feel this 
retains the agility better, avoids the quality debt from accruing, avoids wasted analysis if the requirements change, 
and generally makes the security analysis work visible in task scheduling instead of being something "on the side".

The downside is that threat modelling on backlog item level may sometimes have a focus that is too narrow. Typically it 
will be team-wide anyway (because intelligent people take into account what they anticipate they'll be working on in 
the future), but sometimes you'd need more, like a cross-team view. This may be a problem, and could be alleviated by 
an increased investment in the higher-level abuser stories.

Dave also said:
I felt that my talks were kind of from the macro view of the problem
(i.e., top level down), where Erlend's talk was from the micro view
(bottom up)

I think the macro discussion is really essential here. I mean, most coding / testing level security engineering 
activities can be applied in waterfall just as in agile, and adding some specific coding or testing activity does not 
immediately break the agile work scheduling. But when it comes to risk management (threat analysis/modelling, and 
residual risk acceptance), security assessments or security committee mandated quality gates have, if done wrong, all 
the potential to destroy all the agility and lean-ness of the model.

Rohit also raised a number of other very good points. Some comments:

* As with all other types of SDLC, education is a critical
prerequisite to convince stakeholders of the importance of security

I would actually even go farther and say that in an agile development model, education (or at least awareness raising) 
is even more important than if you'd have a centralised security team that would guard a quality gate in a waterfall 
process. This is because a large agile project is by its nature decentralised, with some residual risk decisions taken 
to the engineer level (a Sprint Review's definition of 'done' is in a way a residual risk acceptance gate). Also, in a 
large project consisting of several teams, the sprints are often synchronised, with a number of teams doing their 
sprint planning and review at the same time. You'd need a lot of security experts at the same time to sit in the 
planning sessions.

* Documentation, such as secure coding guidelines / checklists,
should reside in dynamic platforms such as a wiki or web page rather
than static documents that don’t evolve

Also threat analysis results benefit from being in a wiki. Especially when threat modelling is frequent and iterative.

In the end, the threat information and residual risk information (i.e., what wasn't fixed) would accrue on a single 
wiki page from several sources: the teams would fill that in when doing design and implementation level analysis, the 
Product Owner would add more information when thinking about abuser stories and security stories.

Cheers,

Antti


_______________________________________________
Secure Coding mailing list (SC-L) SC-L () securecoding org
List information, subscriptions, etc - http://krvw.com/mailman/listinfo/sc-l
List charter available at - http://www.securecoding.org/list/charter.php
SC-L is hosted and moderated by KRvW Associates, LLC (http://www.KRvW.com)
as a free, non-commercial service to the software security community.
Follow KRvW Associates on Twitter at: http://twitter.com/KRvW_Associates
_______________________________________________


Current thread: