Learning secure coding – the most effective way of doing security

I am sometimes surprised to see how even those working in the software industry tend to forget about the fact that the burden of the security incidents we experience today are stemming from defects in the code – actually bugs – committed by software engineers designing, implementing and integrating all those systems. But on the other hand, this is not that surprising, given that software security is usually not included in standard educational programmes.

Let’s face the reality: constrained by resources, many software developers ignore security entirely until they face an incident, or are tackling security by just focusing on the options they think to be the cheapest – which usually means just going through a checklist for finding some of the most common problems. But is this really the cheapest option? Just think about it: How much does it cost if the news are full of your device being broken or website being hacked again?


To date the software development community has learned the lesson: security started to be interwoven in the whole of the product development lifecycle. But do not forget: while – in theory – engineers have to be vigilant, eliminating every single bug in the code to make a product secure, for an intelligent attacker it is enough to find a single remaining vulnerability in a rarely-used module to use it as a vehicle for committing cyber-crime.

During the 2000’s the software industry started to realize the fact that in the long run, investing in their own employees is the most effective way of doing security. Training became the key initial phase in the Microsoft Security Development Lifecycle, and is also a standard practice within the Building Security in Maturity Model followed by many. Companies started to reserve more and more from their security budget to educate their employees, as education tackles the problem of security right at its source: the engineer.

But, just as we can’t put a policeman on every corner, assigning a dedicated security expert to a development group is not enough (still better though than not doing anything at all). Usually a single small mistake committed by one of the engineers is the root cause of a complete system compromise, and so the overall average preparedness of all involved software architects, programmers and testers is the one that actually counts.

From project management point of view, it is an easy formula: your engineers work hard each day, and produce vulnerable code, resulting in hundreds of security bugs yearly…

…to test
…to find
…and to correct.
OR
You can send those programmers to a secure coding training, and they’ll start to write secure code from their next working day. The choice is yours.

A special prudence is needed however to teach security practices to software engineers: the trainer should not only be an experienced software developer, but also has to have strong security expertise. The courses should be practical but still go into enough theoretical details; shown problems should be supported by exercises giving hands-on experience, otherwise developers will forget most of the issues the next day; and classes should be intensive so they don’t pull away people from their everyday work for too long.

Our Secure Coding courses were formed based on a decade long expertise in product security and security research. In this sense with our courses we teach what we do. With a track record of thousands of attendees worldwide, the trainings in our portfolio are specifically prepared to serve diverse development groups of large companies developing any kind of software.


About Ernő Jeges - Instructor at Informator

Ernő has been a software developer ever since his childhood, working in the area of product security and security research for nearly fifteen years now. He has actively taken part in the elaboration of all course materials of SCADEMY Secure Coding Academy, and is the leading trainer with several years of teaching experience in both academic and industrial domain; he has held numerous secure coding courses for leading software developing companies all over North America, Europe, Africa and Asia.

Java - ett osäkert språk?


Javaspecialisten om varför utvecklingsspråket lämnat sin Vilda västern-tid bakom sig.
Javaplattformen återfinns idag i 97 procent av världens alla datorer, och numera även i mer än tre miljarder mobiler. Men då och då publiceras uppgifter om att Java skulle lida av allvarliga säkerhetsproblem. Vi ringde upp Hamid Samadi för att ta pulsen på en av landets mest erfarna Javaspecialister.



Hej Hamid. Helt kort, vad skiljer Java från andra plattformar?

– Den stora skillnaden jämfört med t ex Microsoft.NET är att Java kan köras med olika operativsystem på alla typer av utrustning. Och att Java-användarna inte behöver betala några användarlicenser – där finns miljarder att spara varje år, enbart i Sverige. Om vi frågar Microsoft om skillnaden skulle de kanske säga att Java är mer vilda västern och att .NET har en fastare struktur. Själv vill jag snarare hävda att Java är mer flexibelt, och enklare för utvecklarna att jobba med. De årliga besparingarna med ”Open Source” väger förstås oerhört tungt för användarna. Dessutom har Java flera fördelar ur säkerhetssynpunkt. I övrigt är de ganska lika, och slutanvändarna märker i princip ingen skillnad alls. 

Fördelar ur säkerhetssynpunkt, säger du? Hur då?
– Idag kan man utveckla applikationer med Java med minst lika hög säkerhet som andra plattformar. När det gäller applikationssäkerhet måste man ta hänsyn till flera faktorer och säkerheten i Javaprogram kan bl. a. optimeras med hjälp av säkerhet i själva språket och Javas virtuella minne (s.k. JVM). Det sistnämnda är en inbyggd säkerhetsmekanism (Security manager) som hindrar exekvering av otillförlitliga koder från resten av operativsystemet. Det finns även en hel svit av säkerhets-API:er som Java-utvecklare kan använda för att höja och optimera säkerheten. 

– Utöver detta finns mängder av Open Source säkerhetsramverk som kan användas inom säkerhetskänsliga verksamheter. Det är en av de stora fördelarna med Java Open Source för systemutveckling. Som exempel kan man nämna Apache Shiro eller Spring Security som idag används inom olika branscher med särskilt höga säkerhetskrav, inte minst inom bank och finans. Eventuella problem beror till hundra procent på den som programmerar. 

En del har ju ifrågasatt Javas säkerhet under åren?
– Att diskussionen om Javas säkerhet över huvud taget uppstod beror på de s.k. ”applets” som Sun utvecklade för att integrera java i webbläsarna, i Javas tidiga barndom. Men det där har absolut ingenting att göra med dagens plattform, eller seriösa utvecklare och användare. 

Och hur ser framtiden ut?
Den är ljus – väldigt ljus, om du frågar mig. Java är idag det mest använda språket för programutveckling, och det är ingen tillfällighet. Dessutom backas Java upp av otaliga användare över hela världen, inklusive tungviktare som IBM och Google. Hela Android-systemet bygger också på den mobila versionen av Java. Med över nio miljoner aktiva Java-utvecklare världen över kan vad som helst hända. Vi lever i en oerhört spännande tid. Vi kommer att se att flera företag och myndigheter kommer att använda Java plattformen fram över och i större utsträckning. Det är bara början på ett långt äventyr!

---

Hamid Samadi leder kurser i Java hos Informator Utbildning och ansvarar för den årliga Java-konferensen www.jdays.se i Göteborg där Informator självklart även i år medverkar som utställare!