Developer une API REST Sécurisée

Les APIs REST sont actuellement parmis les plus développées par les entreprises. Ces APIs, bien qu’elles reposent en partie sur des concepts connus et anciens sont néanmoins souvent mal sécurisées. A tel point que le OWASP a sorti un Top10 specifique a ces dernières.

AppSecFR vous propose une formation dédiée a ce theme, en prenant en compte de manière large le spectre des problèmes autour des APIs.

Lors de cette formation nous abordons les thèmes classiques de la securite WEB et nous appliquons spécifiquement ces elements au développement API.

La pédagogie est axée sur 50% de pratique minimun. Une application spécifique est fournie pour s’entraîner a la sécuriser.

La formation est réalisable en intra-entreprise ou inter-entreprises (dates a confirmer en fonction du nombre de participants

Contenu de la formation

Introduction aux concepts liés à la sécurité

  • Identification et méthodes d’authentification.
  • Autorisations et permissions.
  • Confidentialité, non-répudiation, cryptage, clés publiques/privées, autorités de certification.
  • Pare-feu et DMZ, rupture de protocole.
  • Rappels sur la securite WEB :
    • HTTP
    • HTTPS
    • OWASP Top10 Web.

Quelques rappels sur REST

  • Protocole / vs Architecture
  • REST et la securite
  • JavaScript Object Notation (JSON)
  • Jason Web Token (JWT)

Attaques des APIs et Sécurisation

  • Découvertes des elements / donnes
  • Contournement des mécanismes d’authentification / autorisation
  • Injections Serveurs
  • Stockage des elements de secret
  • Elements annexes de securisation (Reseaux, systeme,…)
  • L’OWASP Top10 API

Prix :

Prix : 1042 Euros pour 2j par personne.

Valider et non pas juste parser !

La plus importante manière d’eviter une injection est de valider une donnée ! et non pas juste la parser! 

 

Meme si vous pensez que le parser doit générer une Exception.

Exemple sur une question venue ce matin et utilisant la classe suivante : 

https://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html#parse(java.lang.String)

Et oui, le code suivant ne génère pas d’exception : 

 

import java.lang.String;
import java.text.*;
import java.util.Calendar;
import java.util.Date;

public class Main {

publicstaticvoid main(String[] args) {
DateFormat DFormat
= new SimpleDateFormat("dd/ mm/ yy");
try {
Calendar cal = Calendar.getInstance();

// Use of parse() method to parse
// Date From String
String dt = "10/ 27/ 16 <script>alert(1);</script>";
System.out.println("The unparsed"
+ " string is: " + dt);
// Parse string. if exception this is not a date
DFormat.parse(dt);

System.out.println ("Date parse and no exception, so use the string: " + dt);

} catch (ParseException excpt) {
excpt.printStackTrace();
}
}
}

Ce code produit : 

The unparsed string is: 10/ 27/ 16 <script>alert(1);</script>
Date parse and no exception, so use the string: 10/ 27/ 16 <script>alert(1);</script>

 

Toujours vérifier et/ou utiliser la valeur de retour d’une méthode si il y en a une ! 

#appsec #appsecfr #securecoding #java 

Formation Sécurité du Développement web en Java sur Niort

AppSecFR vous propose une formation de 3J sur le sujet de la Sécurité du Développement Web en Java

Cette formation aura lieu sur NIORT (79)  :

  • 26-27-28 Aout 2019 (pour bien recommencer a la rentrée 2019 !)
  • 7-8-9 Octobre 2019

Le contenu de la formation vous permettra de prendre en compte les problématiques de sécurité de Java et d’appliquer les bonnes pratiques dans le cadre d’exercices proche des technologies que vous pouvez utiliser.

Cette formation entre dans le cadre de l’obligation PCI-DSS 6.5 

A l’issu de la formation, le stagiaire recevra

  • Le certificat de formation AppSecFR(r) Secure DevWeb Java basic
  • Une feuille des contrôles de sécurité à effectuer sur son application Web.
  • Goodies 🙂

Le nombre de place est limité à 10 personnes par session.

Le prix : 1542 €HT pour 3j par stagiaire

Pour s’inscrire contactez AppSecFR en précisant la date, nous vous recontactons rapidement

Nous pouvons aussi réaliser la formation en intra-entreprise au besoin sur d’autres dates. Nous contacter pour plus d’informations

Certifications AppSecFR

AppSecfr(r) lance ses certifications a destination des développeurs. Fort de 10 annees de formation et de plusieurs milliers de personnes formées , AppSecFR lance les formations certifiantes en sécurité Web.

3 niveaux sont disponibles :

  • AppSec basic ; témoigne d’une capacité à détecter les failles du Top10 Owasp  et de proposer des remediations associees
  • AppSec spécialiste ; témoigne d’une capacité AppSec basic + de la capacité à maîtriser les concepts de l’ASVS et d’en decliner des exigences et remediations eventuelles
  • AppSec expert ; témoigne de la capacité d’un AppSec spécialiste plus de la capacité a mener un Threat Modeling sur une application Web.

AppSecFR(r) est prestataire de formation reference auprès de la DIRECTTE, prestataire reference auprès de Cybermalveillance.gouv.fr .

Contactez nous pour plus d’informations

Recrudescence des attaques de SPAM a la Sextortion

Depuis quelques semaines , il semble que cela revienne a la mode. La fameuse vidéo vous demandant des bitcoins est de retour en force. La remontée du cours du BitCoin y-est-elle pour quelque chose  ? 

 

En tout cas une fois encore les conseils de  CyberMalveillance.gouv.fr sont a utiliser : 

 

Que faut-il faire si on reçoit ce type de message ?

1. Ne paniquez pas !

2. Ne répondez pas !

3. Ne payez pas !

4 – Conservez les preuves !

5. Changez votre mot de passe

6. Déposez plainte !

 

Joli Code …..

Trouvé il y a qq semaines lors d’un audit de code sur un projet contenant du JSP :

<%@ page import=" java.util.*,java.lang.*" %>
<%@ page import="java.io.* » %>
<%@ page import="java.net.* " %>
<%@ page import="java.xml.* " %>
<%@ page import="java.time.* " %>

J’aime bien ce type de développeur. J’auras peut etre une suggestion a leur faire comme celle la :

<%@ page import="java.* " %>

 

Comme ca, c’est plus simple 🙂

La trouvaille du jour

Un petit code tout simple trouvé dans une application dont je revoyais le code….

<%

// Should we display the stacktrace directly ?

Cookie[] cookies = request.getCookies();

boolean showStackTrace = false;

for(int i = 0; i < cookies.length; i++) {

Cookie c = cookies[i];

if( "showStackTrace".equals( c.getName() ) ) pageContext.setAttribute("showStackTrace", Boolean.TRUE);

}

 

J’ai conclu en mettant les éléments suivants  :

  1. Joli code qui respecte les standards de développements internes et les bonnes pratiques de code sécurisé
  2. Portion de code ne comportant aucune vulnérabilité technique connue a la date de la revue
  3. Code correctement commenté
  4. Remarque : Est-ce bien nécessaire d’avoir une vulnérabilité logique aussi importante dans le code de l’application XXXX ?
  5. Peut-on en parler a Maitre Yoda  ?

Liens collectés 02/24/2018