Le podcast Java en Français

Les Cast Codeurs est un podcast en français de, par et pour les développeurs.

Prenez connaissance des dernières nouvelles de la sphère Java et du développement en général. Plongez sur un sujet précis avec les épisodes interview.

Supportez les radotages de vos hôtes : Emmanuel Bernard (JBoss, Hibernate), Arnaud Héritier (CloudBees, Jenkins), Guillaume Laforge (Google, Groovy), Antonio Goncalves (Microsoft, auteur), Vincent Massol (XWiki, Maven), Audrey Neveu (Reactor/Spring, Devoxx4Kids).

LCC 280 - Leçon de géographie

Posté le 13/06/2022

Cet épisode une fois n’est pas coutume parle beaucoup de nouvelles dans la rubrique langage et beaucoup de Java, wouhou ! On parle aussi de sigstore, http/3, Micronaut et de VMWare.

Enregistré le 10 juin 2022

Téléchargement de l’épisode LesCastCodeurs-Episode-280.mp3

News

Langages

Sept raisons pour lesquelles Java a encore du sens après 26 ans

  • communauté (dans toutes les grandes villes)
  • force du langage et de la plateforme
  • plus de problèmes résolus que non résolus (librairies)
  • stabilité
  • Innovation (Java 9 accélère l’innovation)
  • outillage
  • opportunité d’emploi

Les débuts du projet Leyden

  • Mark Reinhold lance le projet Leyden, pour résoudre les problèmes de temps de démarrage lent de Java, de lenteur du temps jusqu’à la performance max, et d’empreinte un peu lourde
  • à l’aide d’une image statique de votre application
  • une image statique ne fait tourner qu’une seule et unique application sur son JDK, et est un “monde fermé” (ne peut pas charger de classes externes)
  • mais les ingés de la JVM vont travailler sur une approche assez souple et voir quelles contraintes peuvent être allégées par rapport à un monde complètement fermé d’une image statique
  • en espérant avoir des améliorations à différents niveaux, pour un max d’appli et de use cases différents
  • Le close world c’est ce qui amène la valeur de GraalVM native image et les avantages pour Micronaut, Quarkus et les autres
  • donc pas de closed world : c’est encore un projet de recherche pour l’équipe de la JVM

JFR plus facile à configurer dans Java 17

  • un wizard en UI ou CLI pour générer le fichier .jfc

Proposition de structured concurrency via le projet Loom

  • Targeted status for JDK 19.
  • This incubating JEP, under the auspices of Project Loom,
  • proposes to simplify multithreaded programming by introducing a library to treat multiple tasks running in different threads as a single unit of work.
  • This can streamline error handling and cancellation, improve reliability, and enhance observability

RedMonk analyse l’apparition du langage Dart, grâce à Flutter, dans leur top 20 des langages de programmation les plus populaires

  • JavaScript, Python, Java, toujours en tête
  • Mais Rust et Dart sont rentrés récemment
  • L’arrivée de Dart coïncide surtout avec l’émergence de Flutter comme framework d’interface graphique, que ce soit pour Android/iOS, que pour le desktop et le web
  • Sur les applis mobiles, il y a toujours eu beaucoup de développement natif, mais est aussi arrivé React Native, mais aussi Flutter
  • Des applis de Google comme Google Pay et Google Ads sont développées en Flutter, mais aussi le récent SNCF Connect ou des entreprises telles que BMW ou Alibaba (modifié)
  • (cf. le talk sur le REX par les développeurs de SNCF Connect à Devoxx France)
  • les investissements initiaux de Dart vs Kotlin ou Ceylon qui ont démarrés en meme temps étaient colossaux
  • Dart en natif pour faire des applis iOS… qui tournent aussi sous Android

Kotlin 1.7 est sorti

  • Kotlin K2 compiler pour la JVM em Alpha (les plugins ne fonctionnent pas)
  • amélioration des perfs de Kotlin et du compilo pour la JVM
  • build incremental Gradle
  • annotation OptIn et inférence de Builder stabilisés
  • classes implémentées par delegation automatique sans consommation mémoire (via inlining)

Librairies

Sortie de Micronaut 3.5

  • Passage à GRAALVM 22.1.0
  • Compilation incrémentale lors des builds, en particulier intéressant pour les métadonnées pour GraalVM, ce qui permet d’éviter de faire tourner les processeurs d’annotation inutilement
  • Inclusion de Micronaut Data 3.4, avec support des enums Postgres pour JDBC, la pagination pour les Reactive Repositories
  • Intégration avec Turbo pour la vue (Turbo Frame et Turbo Views)
  • Nouveau module pour MicroStream (un moteur de graphe d’objet natif Java, intégré à Helidon)
  • Mise à jour de nombreux plugins et extensions (y compris plugins de build)

Infrastructure

Kubernetes signals massive adoption of Sigstore for protecting open source ecosystem

  • Kubernetes 1.24 (sorti en mai) est la première version utilisant officiellement Sigstore, permettant une vérification transparente des signatures pour protéger contre les attaques de la chaîne d’approvisionnement
  • Sigstore est une nouvelle norme pour la signature, la vérification et la protection des logiciels. Elle se veut être un remplaçant pour GPG par exemple.
  • Sigstore offre une variété d’avantages à la communauté Kubernetes comme :
    • Sigstore’s keyless signing donne une grande expérience de développeur et supprime le besoin de la gestion de clé douloureuse.
    • Le journal public et transparent de Sigstore (Rekor) avec ses API permettent aux consommateurs Kubernetes de vérifier les signatures.

Web

RFC 9114 - HTTP/3 est validée (+ RFC 9204 - QPACK: Field Compression for HTTP/3 et RFC 9218 - Extensible Prioritization Scheme for HTTP)

  • Basé sur le protocole de transport QUIC qui possède plusieurs fonctionnalités intéressantes telles que le multiplexage de flux, le contrôle de flux par flux et l’établissement de connexion à faible latence.
  • QPACK : un format de compression pour représenter efficacement les champs HTTP à utiliser en HTTP/3. Il s’agit d’une variation de la compression HPACK qui vise à réduire la taille des headers.
  • Extensible Prioritization Scheme for HTTP : schéma qui permet à un client HTTP de communiquer ses préférences quant à la façon dont le serveur en amont priorise les réponses à ses demandes et permet également à un serveur d’indiquer à un intermédiaire en aval comment ses réponses devraient être priorisées lorsqu’elles sont transmises.

Outillage

VSCode Java 1.5 est sorti

  • Java 18 support, inlay hints for method parameters, and improvements to class declaration navigation are just a few of the enhancements to expect.

Architecture

L’architecture Netflix

  • Pas fou fou dans les infos, mais ça fait longtemps qu’on n’a pas eu d’archi
  • analyze the system design in terms of availability, latency, scalability and resilience to network failure
  • basé sur AWS
  • clients via un SDK est intelligent, contrôle le backend utilisé et la bande passante en temps réel
  • Open Connect CDN : là où les vidéos sont stockées
  • le reste du bon vieux microservice en backend
  • ramène les dix meilleurs points d’accès et le client choisi, voire change
  • API Gateway via Zuul: dynamic routing, traffic monitoring and security, resilience to failures at the edge of the cloud deployment
  • etc

Loi, société et organisation

VMWare racheté par Broadcom

  • 61 milliards de dollars
  • Avec un objectif de passer de 3,5 à 8,5 milliard d’EBITDA par an
    • Bouger dans la division cloud avec Symantec
  • VMWare était content de sa liberté retrouvée après le spin-off de Dell
  • Apparemment pas d’alignement de tech
  • une expansion de portefeuille dans le software pour broadcom
  • VMWare a beaucoup changé de mains ces dernières années
  • La stratégie d’investissement de broadcom : acheter des franchises avec une bonne position de marcher et un potentiel de profitabilité augmenté sans gros investissements
  • La rumeur
  • un ex de VMWare qui pense que c’est la mort de VMWare

Outils de l’épisode

GitHub Copilot quand le code s’écrit tout seul … (en fait non, les développeurs ont encore des beaux jours devant eux)

Rubrique débutant

Conférences

Source: Developers Conferences Agenda/List by Aurélie Vache et contributeurs

June

September

October

November

December

Nous contacter

Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/


LCC 279 - URL ceteris paribus sic stantibus

Posté le 23/05/2022

Guillaume et Emmanuel discutent de l’état des versions de Java utilisées, de Java String template, et de beaucoup de failles de sécurité. On pourra presque se renommer Les Cast Sécu ;P On y ressuscite aussi la rubrique débutant et discutons du piège de la classe URL.

Enregistré le 20 mai 2022

Téléchargement de l’épisode LesCastCodeurs-Episode-279.mp3

News

Langages

L’état de Java selon newrelic

  • Java 11 commence enfin à être utilisé plus que Java 8 en prod (48% vs 46%)
  • Dans les versions non LTS, c’est Java 14 qui a l’air d’avoir le plus de succès
  • non LTS en prod est 2,7%
  • Après Oracle, c’est la distrib de AWS qui est pas mal utilisée suivi par adoptium
  • Beaucoup d’utilisation de Java dans des containeurs (70%) avec 1 seul core, donc aussi moins de bénéfices dans l’utilisation de G1 pour le GC
  • Toujours dans les containeurs, les applis Java tournent souvent avec moins de 512MB de RAM (45%)

String templates en Java

  • les string template c’est ce qui a fournit log4shell donc attention
  • Replace certains usages de stringbuilder , stringfromat et messageformat
  • Beaucoup de langages offrent ça (bash ahah)
  • Exemple d’usage html, json, yaml etc
  • Ils veulent permettre des règles de transformations et de validation (escape caractère)
  • Peut même éviter le,passage par l’étape du passeur
  • Objet template a le template et la policy
  • Embedded expressions: chaînes de caractères, arithmétique, invoque méthodes ou champs, pas besoin d’échapper les double guillemets.
  • Lignes multiples
  • Quid capture des variables locales sans l’avis du développeur. Pas d’exemple meta où le template est importé ou construit.

Un article détaillé sur ce qui est nouveau niveau GC dans Java 18

Librairies

Quarkus 2.8 et 2.9

  • WebAuthN
  • Confluent Schema Registry
  • Kotlin Scala
  • RESTEasy Reactive est la couche par défaut
  • GraalVM 22
  • Elasticsearch Dev Services

Outillage

Un nouveau décompilateur avec du code plus lisible

  • Tous plus ou moins un fork de celui d’intellij maintenu par JetBrains, le fork d’avant est de Minecraft
  • Reconstruit des constructions de plus haut niveau et plus moderne.
  • Exemples

Sécurité

Une vulnérabilité dans struts 2

  • Un problème qui n’avait été que partiellement corrigé. Lié à OGNL’et une double évaluation via %{…} sur du contenu venant de l’utilisateur.

Le gros trou de sécu sur les signatures Java 15-18

  • attaque sur les approches ECDSA (elliptic curve digital signature algorithm), typiquement plus modernes cibles Java web start, Java applets, web services qui utilisent ECDSA (JWT, SAML, OIDC Id tokens, WebAuthN
  • version Oracle Java 7, 8, 11, 15, 16, 17, 18, OpenJDK 15, 17, 18 (backport Oracle)
  • Comme un psychic paper de dr who: peut signer numériquement un papier sans infos (paramètres de la courbe peuvent être à 0 ce qui permet de valider tous les messages (0)
  • L’interprétation pour un framework comme Quarkus

Spring4Shell avec risque de remote code execution (unfolding)

Personal Security Checklist

Google offre aux clients Google Cloud des libairies validées en sécurité
Une équipe de maintenance Open Source chez Google

Loi, société et organisation

Apple va supprimer au téléchargements les applis non mises a jour depuis 3 ans et peu téléchargées

  • ça a fait réagir et râler
  • Des applis finies
  • Mais surtout une résumassions c’est du taf (nouvelles règles, peut être mise à jour de framework)
  • Du cote de Apple c’est nettoyer un peu la longue queue d’applis
  • Et encourager les gens à rester au top (eg privacy infos)

Les duchesses ferment leur slack aux hommes

  • pas fait de gaité de cœur mais réaction aux événements
  • temps des Modérations plus passe sur les posts d’hommes que de femmes
  • Sensation de pas laisser la place aux femmes
  • Maladresses et manques de respect
  • Coupé dynamisme et la sécurité de parole
  • Et beaucoup d’hommes et du coup sentiment d’épier
  • Les duchess feront toujours des événements mixtes mais cet espace avait perdu son utilité première

Comment la guerre en Ukraine ébranle la tech russe

  • fragilisation
  • fuite des cerveaux (depuis 2014 et la crimée (cerveaux emprunts de plus de liberté) manque .5 à 1 millions de developpeurs
  • Karspersky et les doutes de ses clients (80% du chiffre d’affaire à l’étranger)
  • Yandex moteur de recherche protégé car marcher local mais démission du CEO
  • Default de paiement (endettement) e.g. VK 400 millions de dollars
  • Envisager de raid de disque dur pour consommation locale

Outils de l’épisode

Faire le la configuration conditionnelle dans git

  • includeIf permet de faire la condition
  • Utile pour changer l’email entre bureau et perso par exemple.
  • [aheritier] je le fais souvent avec des repertoires différents pour boulot vs oss/perso

Rubrique débutant

La comparaison des URL

  • Les URLs sont égales si les IP sont égales
  • donc DNS lookup
  • donc pas constant pour la vie de l’instance de JVM
  • vive les hash des Set et Map :)

Conférences

JavaDay au Paris JUG: Le futur de Java - le 22 juin 2022

Nous contacter

Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/


LCC 278 - En direct de Devoxx France 2022

Posté le 26/04/2022

Les Cast Codeurs font la clôture de Devoxx France 2022 en 🪑 et en 🦴.

Enregistré le 22 avril 2022

Téléchargement de l’épisode LesCastCodeurs-Episode-278.mp3

Interview

La vidéo du direct Devoxx France qui est plus facile à suivre :

Nous contacter

Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/


LCC 277 - L’interview des 10 ans de cast codeurs à Devoxx par la chaîne Devoxx France TV

Posté le 09/04/2022

Les Cast Codeurs passent au grill de Nicolas sur la chaîne TV Devoxx France. Nicolas nous rappelle des moments des 10 ans de Devoxx + Les Cast Codeurs.

Enregistré le 17 mars 2022

Téléchargement de l’épisode LesCastCodeurs-Episode-277.mp3

News

Nous contacter

Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/


LCC 276 - Il a coulé mon data center !

Posté le 28/03/2022

Emmanuel, Guillaume et Antonio se réunissent pour discuter des nouvelles de ce début de printemps. On y parle retour de JavaOne, revue de pull request, de développement cloud natif, de SLO, et de log.

Enregistré le 25 mars 2022

Téléchargement de l’épisode LesCastCodeurs-Episode-276.mp3

News

Langages

Remplacer vos APIs de logging avec System.Logger

  • Blog post rédigé suite à notre épisode 271 (où on avait cité System.Logger)
  • Rapide histoire des APIs de log en Java
  • Présentation de l’API System.Logger
  • Formatage des messages basé sur java.text.MessageFormat
  • Utilisation possible des ResourceBundle
  • Niveaux TRACE, DEBUG, INFO, WARNING, ERROR (et non FINE, FINER, FINEST comme JUL)
  • Le service System.LoggerFinder pour changer l’implémentation (JUG, Log4J, Logback, …)
  • Etude de perf : Logback est plus performant, suivit de JUG puis Log4J2

Une série de petites librairies Java légères. Librairies simples, avec chacune une tâche unique, dont :

  • parsing JSON
  • parsing HTML / CSS
  • client HTTP
  • client mail
  • résolveur de noms de paramètres de méthode
  • des Properties améliorés
  • un framework d’injection de dépendances léger

Java 18 est dans la place

  • 400: UTF-8 by Default
  • 408: Simple Web Server
  • 413: Code Snippets in Java API Documentation
    • un super guide sur l’utilisation des nouveaux javadoc code snippets
  • 416: Reimplement Core Reflection with Method Handles
  • 417: Vector API (Third Incubator)
  • 418: Internet-Address Resolution SPI
  • 419: Foreign Function & Memory API (Second Incubator)
  • 420: Pattern Matching for switch (Second Preview)
  • 421: Deprecate Finalization for Removal

Librairies

Micronaut 3.3 sorti, avec des nouveautés et Micronaut 3.4 aussi

  • graalVM 22
  • binding par valeur d’annotations (CDI)
  • Serialization (remplace Jackson, plus léger en mémoire, ne fait pas de désérialisation arbitraire, pas de réflexion)
  • module email qui permet d’envoyer avec MailJet, Amazon simple email service, SendGrid, Postmark
  • Opérateurs Kubernetes
  • possibilité de référencer des beans properties dans @Requires
  • injection de localized message sources
  • nouveau module Micronaut Data MongoDB
  • support de Maven pour Micronaut AOT

Hibernate 6: certains points clés

  • nouveau parseur HQL (langage plus riche)
  • API nettoyées (donc ça va peut-être demander des migrations)
  • DDL de meilleure qualité plus adaptée à la base de donnée cible
  • requêtes de type rapport (filter, rollup, cube, et les window functions arrivent bientôt)
  • arithmétique sur les dates
  • indexation des colonnes (SQL plus compact et rapide)

Kubernetes Service Discovery and Selection with Stork

Quarkus 2.7

  • Stork 1.0
  • Quarkus CLI dans homebrew et SDKman
  • extension pour le driver Oracle réactif
  • terminal interactif

Infrastructure

L’énergie utilisée dans les data centers est constante à 1 à 1,5% de l’énergie mondiale d’après l’agence internationale de l’énergie

  • hors cryptocurrency
  • l’augmentation a continué, mais les efforts d’économies d’énergie ont compensé la croissance de la demande
  • hors production du matériel je crois
  • les alertes ont fait bouger les lignes
  • études source Masanet et al - science et une autre de Malmodin 2020 dans science aussi

Cloud

Sondage annuel “The State Of Cloud Native Development”

  • Sondage créé par Slash Data et soutenu par la CNCF
  • Interroge 19 000 développeurs sur l’utilisation de Kubernetes, le edge computing, le cloud-native, les conteneurs et orchestrateurs
  • Le nombre mondial de développeurs cloud-native a augmenté au cours des 12 derniers mois de 0,3 million, pour atteindre 6,8 millions.
  • Dans le même temps, la proportion de développeurs backend impliqués dans les technologies cloud-native a diminué de 3 points de pourcentage, passant de 44 % à 41 %.
  • Dans toutes les régions, l’Amérique du Nord (47 %) et l’Europe occidentale (46 %) affichent les taux d’adoption les plus élevés.
  • Kubernetes est utilisé par 31% de tous les développeurs backend, ce qui représente une augmentation de 4 points de pourcentage au cours des 12 derniers mois. Actuellement, 5,6 millions de développeurs utilisent Kubernetes.
  • Dans tous les secteurs, le edge computing a connu une croissance rapide de l’adoption de Kubernetes et présente désormais les taux d’utilisation les plus élevés des conteneurs et de Kubernetes.
  • Parmi les développeurs spécialisés dans le edge computing, l’utilisation de Kubernetes a augmenté de 11 points au cours des 12 derniers mois, pour atteindre 63 %.
  • L’architecture Serverless est également attrayante pour les développeurs edge computing : 48 % de tous les développeurs edge utilisent serverless, contre seulement 33 % de tous les développeurs backend.
  • Parmi les outils serverless, AWS Lambda continue de jouer un rôle prépondérant. Cependant, Google Cloud Run a considérablement gagné du terrain au cours des 12 derniers mois.

SLO et dépendances de service

  • 99,99 en cible interne, au-dessus il y a tant de variables entre l’utilisateur et le service que c’est perdu dans le bruit (wifi, ISP etc)
  • 99,999 pour les infras globales
  • disponibilité est fonction du MTTF et MTBR = MTTF/(MTTF+MTTR)
  • si on veut offrir 99,99, toutes les dépendances critiques doivent offrir beaucoup plus, règle du 9 supplémentaire
  • sinon il faut des mitigations : cache, fail open, etc
  • la disponibilité dépend du temps de détection et du temps de récupération
  • donc forcer les clients (services dépendants) à baisser leur niveau ou architecturer pour compenser le bas niveau du service dont on est dépendant
  • faire des scénarios (p. ex. 1 outage majeur, 3 faibles - p. ex. un shard, 5 de dépendances)
  • considérer que la perte d’un shard du service veut dire SLO est 1 n-ième indisponible (n étant le nombre de shards)
  • donc il reste peu de temps pour réagir quand on compte le temps de detection, le temps de paging, etc.
  • error budget : 1-SLO, sur un mois et pouvant être une fenêtre glissante pour remonter graduellement. Si budget dépensé, on ne fait plus de mise en prod sauf critical security issues ou si c’est pour corriger les causes du problème qui a consommé le budget
  • rendre le plus de dépendances possibles non critiques (par exemple en éliminant les SPOF)
  • faire revue d’architecture pour identifier ces dépendances et leurs impacts
  • appels a trois pools de serveurs indépendants et prendre le premier résultat
  • les dépendances asynchrones peuvent réduire le nombre de dépendances critiques
  • retours arrière rapide et automatisés : en enlevant un humain de la boucle on raccourcit les temps de réponse
  • et bien d’autres choses encore.

Architecture

Les design patterns pour les systèmes distribués et donc les microservices

  • survol et définitions des patterns qu’il faut connaître dans les microservices
  • Pas trop dans le détail donc bon survol
  • Idempotence, asynchronicité, health-check, feature flag, fallback
  • Bulkhead: cloisonnement
  • Metrics, monitoring, alarmes
  • Rate limiting, backpressure, etc

Méthodologies

La pyramide des fondamentaux dans la revue de code

  • codifie les points sur lesquels se concentrer sur la revue de code et ceux avec une priorité plus basse
  • automatiser les points bas comment le style de code pour éviter de perdre du temps et de la frustration humaine

Sécurité

Removed unencrypted Git protocol and certain SSH keys

  • nettoyage de printemps
  • plus de git: qui est non sécurisé
  • plus ne nouvelles clés RSA SHA1
  • plus de DSA
  • de nouvelles courbes elliptiques

Samsung utilise incorrectement la crypto rendant son enclave sécurisée, pas sécurisée

  • l’article n’expose pas les détails techniques
  • 100 millions de téléphones
  • la même clé était réutilisée (et pas encapsulée)
  • le vecteur d’initialisation pouvait être configuré et réutilisé à valeur unique
  • n’importe quelle application pouvait essayer d’accéder aux secrets de l’enclave en essayant les combos parce que l’application avait accès à ces paramètres
  • quand on réutilise les vecteurs d’initialisation, on peut faire un 1-1 entre le message clair et chiffré, ce qui permet de revenir a message clair si on produit le même message chiffré.
  • https://knowledge-base.secureflag.com/vulnerabilities/broken_cryptography/reused_iv_key_pair_vulnerability.html

Loi, société et organisation

Alert: peacenotwar module sabotages npm developers in the node-ipc package to protest the invasion of Ukraine

Un développeur sabote son projet open source et paralyse des milliers d’applications

Violation de RGPD par utilisation de Google fonts

French privacy regulator rules against use of Google Analytics

VMWare, Red Hat et d’autres s’ajoutent aux sanctions contre le gouvernement Russe en arrêtant la vente et les services pour les entités russes et biélorusse

Une entrée en bourse pour Sonatype

Conférences

JavaOne à Las Vegas du 16 au 20 octobre 2022

  • Java language & platform, cloud-native development, database, microservices, DevOps, artificial intelligence & machine learning, security & application management, and more.

Nous contacter

Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/


LCC 275 - Interview sur le darwinisme numérique avec Didier Girard - partie 3

Posté le 21/03/2022

Cet épisode est un échange entre Guillaume, Antonio, Emmanuel et Didier Girard sur les réflexions de Didier autour du darwinisme numérique. Cette troisième et dernière partie nous emmène sur les chemins des choix organisationnels que ces natifs du numérique à succès emploient.

Enregistré le 17 février 2022

Téléchargement de l’épisode LesCastCodeurs-Episode-275.mp3

Interview

Ta vie ton œuvre

Twitter
SFEIR
Envision

Modèle organisationnel

Sociocratie
Holacratie

Deck Netflix

L’individu

Nous contacter

Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/


LCC 274 - Interview le darwinisme numérique avec Didier Girard - partie 2

Posté le 07/03/2022

Cet épisode est un échange entre Guillaume, Antonio, Emmanuel et Didier Girard sur les réflexions de Didier autour du darwinisme numérique. Cette deuxième partie se concentre sur ce que veut dire le darwinisme numérique pour les entreprises et analyse les entreprises qui ont embrassé ses nouvelles contraintes ces vingt dernières années. En particulier, nous discutons de leur capacité d’adaptation comme principe fondamental et en filigrane de l’impact sur l’individu. On y invente aussi la notion d’équipe raclette.

Comme souvent l’actualité nous a rattrapé. Cette interview a été enregistrée quelques jours avant l’invasion de l’Ukraine par la Russie ce qui donne une couleur plus intense à la partie 1 de cette interview.

Enregistré le 17 février 2022

Téléchargement de l’épisode LesCastCodeurs-Episode-274.mp3

Interview

Ta vie ton œuvre

Twitter
SFEIR
Envision

L’entreprise

Tech
Système organisationnel
Génération surdiplômée - les 20% qui transforment la France
Les BATX

L’individu

Nous contacter

Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/


LCC 273 - Interview sur le darwinisme numérique avec Didier Girard - partie 1

Posté le 24/02/2022

Cet épisode est un échange entre Guillaume, Antonio, Emmanuel et Didier Girard sur les réflexions de Didier autour du darwinisme numérique. Cette première partie discute des axiomes de ce concept et de ses impacts sur les nations. On y échange notamment sur la souveraineté et l’indépendance.

Enregistré le 17 février 2022

Téléchargement de l’épisode LesCastCodeurs-Episode-273.mp3

Interview

Ta vie ton œuvre

Twitter
SFEIR
Envision

Le darwinisme numérique

La nation

Souveraineté et indépendance sur les ressources critiques

Nous contacter

Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/


LCC 272 - Interview sur Log4Shell avec this

Posté le 12/02/2022

Emmanuel et Arnaud reviennent sur la fameuse faille #log4shell qui a fait travailler beaucoup d’équipes Java en décembre et janvier.

Enregistré le 11 février 2022

Téléchargement de l’épisode LesCastCodeurs-Episode-272.mp3

Interview

Quelle est cette vulnérabilité et pourquoi est-elle si dangereuse ?

CVE-2021-44228

Reportée chez Apache le 24 novembre, enregistrée en CVE le 26 novembre Probablement connue depuis au moins Mars 2021 : https://github.com/nice0e3/log4j_POC

  • fix 2.15.0 le 10 décembre
  • Apache Log4j2 JNDI features do not protect against attacker controlled LDAP and other JNDI related endpoints.
  • Severity CVSS de 10 sur 10
    • jamais vu
  • back to basics: C’est quoi JNDI ?
  • the JNDI features used in configurations, log messages, and parameters do not protect against attacker-controlled LDAP and other JNDI related endpoints
  • l’attaquant trouve une donnée utilisateur qui est loguée
    • Pas que HTTP
  • et injecte {JNDI:ldap pointant vers un ldap malicieux qui retour du code java sérialisé
  • Log4j désérialise et exécute ce que l’on veut
  • que log4j-core, pas log4j-api
  • détail de Lunasec log4j zero day
    • mitigations initiales

CVE-2021-45046

  • 2.16.0 (change des fonctionnalités) le 13 décembre
  • Apache Log4j2 Thread Context Lookup Pattern vulnerable to remote code execution in certain non-default configurations
  • When the logging configuration uses a non-default Pattern Layout with a Context Lookup
    • $${ctx:loginId})
  • attackers with control over Thread Context Map (MDC / Mapped Diagnostic Context) input data can craft malicious input data using a JNDI Lookup pattern
  • donc on peut encore injecter une chaine JNDI
  • mais on doit savoir comment de l’utilisateur on peut pousser dans une Thread Context Map référencée par la config
  • ou alors l’attaquant a accès à la config et c’est game over
  • Initialement on parlait de denial of services
    • via une reference infinie probablement
  • c’est un chemin qui n’était pas protégé des interpolations de messages et donc de l’accès JNDI

CVE-2021-45105

  • fix dans 2.17.0 le 18 décembre
  • recursion non contrôlée dans un lookup autoréférentiel
  • When the logging configuration uses a non-default Pattern Layout with a Context Lookup (for example, $${ctx:loginId})
  • Besoin que l’attaquant contrôle la Thread Context Map (peut être une donnée injectée par un framework à partir d’une entrée utilisateur)
  • changer la config Log4j locale ?

CVE-2021-44832

  • 2.17.1 le 27 décembre
  • Apache Log4j2 vulnerable to RCE via JDBC Appender when attacker controls configuration
    • malicious configuration using a JDBC Appender with a data source referencing a JNDI URI which can execute remote code.
  • attaquant accède et modifie la config
    • pas simple
    • sauf si la plateforme permet la reconfiguration par un utilisateur ???
  • log

Google package analysis

  • montre 8% de packages sur central affectés par Log4j2
  • niveau de dépendance transitive monte jusqu’à 9
    • du coup il y a neuf vendeurs qui doivent corriger leurs dépendances

Toujours plus de 40% de téléchargement sur Maven central des versions impactées

Log4j1 n’est pas en reste :

  • JMSAppender
    • JMS dit JNDI et paf on recommence
  • JDBCAppender
    • SQL injection FTW
  • Log4j1 n’est plus maintenue ah merde !
    • Apache Kafka

Reload4j de ceki

Des exploitations ?

Peu finalement Car chaque usage de Log4j est unique Entrée quoi est logué etc Donc trop dur pour les script kiddies

Mais dans les metasploits et autres toolkits d’attaque

VMware vSphere et Horizon Ubiquity SolarWinds etc

Quel process suivre

  • vérifier la véracité de la CVE et comprendre ses vecteurs d’attaque
  • identifier ses dépendances et donc ses soft impacté
  • identifier les éléments fournis par l’utilisateur qui sont logués
  • définir le risque par software et par service
  • appliquer le patch de sécurité et reconstruire le package
  • déployer ou livrer chez les clients
  • répéter pour les semaines à venir

  • shading ? :)

Impact de l’industrie dans le futur

La Chine a tapé sur les doigts Alibaba qui n’a pas donné cette faille d’abord au gouvernement chinois

The Gift of It’s Your Problem Now

  • Discussion sur le paiement et l’open source
    • Pour un individuel l’open source est un cadeau et donner de l’argent n’améliore pas le cadeau
    • Injecter de la compensation financière dans un cadeau casse le cadeau et ne change pas la motivation (ou la casse)
    • Pour une société, l’open source est un moyen de récupérer du feedback et du marketing, donc c’est une transaction et pas un cadeau
  • Un autre article similaire : The burden of an Open Source maintainer

Open source maintainer pulls the plug on npm packages colors and faker, now what?

Reflection on log4shell par diabolical developer

  • marathon pas un sprint, on fatigue après 5 ou 6 jours à fond, donc faites des rotations
  • comm sur le réseau, que regarder : Adding encryption, Auth/Auth, I sanitize data that goes over the wire, I sanitize input that could execute, DOS protection – backoff strategies and more.
  • supply chain sécurisation and component governance
  • OSS funding (hum ?)

Nous contacter

Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/


LCC 271 - UPX version Spinal Tap

Posté le 17/01/2022

Antonio, Guillaume et Emmanuel discutent 11, le 42 du rockeur, Quarkus, Java 17, limites de Kubernetes, #Y2k22, web3, Maven, Log4J, et et et cloud souverain.

Enregistré le 14 janvier 2022

Téléchargement de l’épisode LesCastCodeurs-Episode-271.mp3

News

Langages

Quoi de neuf dans Java 18 de Loïc Mathieu

  • Feature complete (mais encore des bugs)
  • UTF-8 par défaut
  • exemples de code dans la javadoc avec @snippet y compris des references a des fichiers extérieurs
  • Simple Web Server pour des resources statiques (comme d’autres plateformes comme Ruby ou Python je crois). En code ou via la commande jwebserver
  • le mécanisme de finalisation proposé à la suppression --finalization=disabled pour tester. Celui-là il ne nous manquera pas
  • ré-implementation de la reflection avec les MethodHandle

Le calendrier de l’Avent Java 2021 a plein d’articles très intéressants

Cinq choses que vous ne saviez pas sur la concurrence en Java

  • l’ordre du programme et l’ordre d’exécution n’est pas le même, mais il est sémantiquement similaire
  • le nombre de threads dans une JVM est limité (dépend de la machine)
  • plus de threads ne veut pas dire plus de perfs

Librairies

Quarkus 2.5 et 2.6 sont sortis :

  • API programmatique pour interagir avec le cache
  • Kotlin 1.6
  • Java 17 par défaut pour les nouveaux projets générés
  • des extensions ont bougé du core vers le quarkiverse hub, peut-être quelques impacts de migration
  • images container plus petites en natif et compression UPX possible
    • plus petit sur disque, mais plus gros en memoire (pour la décompression)
    • quarkus.native.compression.level de 1 à 10 dans le fichier de config
  • dev service pour Oracle DB

Utiliser Neo4J pour analyser le chemin de code et pourquoi un bout de code est inclus en natif

  • super utile pour les compilations natives
  • quarkus.native.enable-reports pour avoir le rapport exploitable par neo4j

SmallRye Stork

  • service discovery et client side load balancing
  • support pour Consul, Eureka, and Kubernetes
  • extensible notamment pour le load balancing
  • intégration avec Quarkus REST Client et gRPC
  • dans la config stork://hello-service

Infrastructure

Pourquoi et comment de la taille des containers Kubernetes

  • Quand on ne partage pas, inefficient mais sécurisé
  • Avec des VM, on peut overcommitter des resources sur l’hyperviseur, mais risque sur mésentente
  • Ne remplace pas le capacity planning
  • Les containers définissent des filtrages plus fins et tuent les process qui dépassent
  • Discussion cpu_share (proportion en balance), cpu_quota, cpu_period pour définir les limites basses et hautes
  • mais si ça reste statique par host ce n’est pas très pratique
  • Orchestration de container via Kubernetes (request = min, limit = max)
  • Kube donne au minimum request mais peut donner plus si le nœud n’est pas occupé à 100%
  • Attention, la partie libre n’est pas distribuée équitablement, mais en proportion du ratio de request demandé vs les autres. Donc les containers avec des grosses request sont privilégiés. Donc mettre limit est important
  • Donc jouer le jeu request et monitored pour ajuster à la baisse si nécessaire. Tous les workloads doivent jouer le jeu.
  • Kubernetes QoS (best effort, burstable et guaranteed) utilisé lorsqu’on tourne bas en mémoire (pas en cpu !)
  • Discussion de la sélection du nœud (selector, affinity, taints and tolerations ou isolation/ restriction) pour isoler des qualités de service ou prédictibilité, pour la sécurité etc
  • besoins mémoire : si utilisation max, pod killed. Besoins CPU : si utilisation max, on est throttled -> slow
  • Mettre mémoire request = limit sauf si le process peut rendre de la mémoire (pas fait avant java 11)
  • CPU request = limit si la prédictibilité de l’application est très important.
  • Étudier conso CPU de l’appli en percentile et targeted par exemple une garantie à 99% ou 90 ou moins si pas sensible
  • Article ne parle pas du scale out

Exchange 2016 et 2019 souffrent du bug de l’an 2022 Y2K22

  • Après Matrix et son opus Resurrections, Microsoft relance le bug de l’an 2000, 22 ans après, Y2k22
  • dans Exchange server 2016 et 2019 et d’autres systems non microsoft
  • pour Exchange c’est dû au système de scan d’antivirus qui ne reconnaissait pas les dates des signatures de virus 22010100001 parce que le software stocke les dates dans un entier signé 2^31-1=2147483647 et la date est stockée sur les deux premiers chiffres.
  • le workaround initial est assez marrant, le software considère qu’on est le 33 décembre 2021 2112330001

Web

Moxy de Signal (ex) discute web3

  • web1 était décentralisé, web2 est riche mais centralisé, web3 sera riche et décentralisé
  • problème: les gens n’aiment pas faire tourner leurs propres serveurs et ne l’aimeront jamais
  • même les entreprises ne font plus tourner leurs serveurs
  • un protocole (standard) bouge beaucoup plus lentement qu’une plateforme
    • exemple Spring, exemple Quarkus vs Microprofile ou Jakarta EE
  • puis discute blockchain et NFT
  • l’état et la logique / les permissions pour mettre a jour sont décentralisées, mais pas l’interface avec l’utilisateur
  • blockchain est une confiance entre serveurs plus qu’entre clients
  • avec le mobile, les clients ne peuvent pas acter en tant que server (voir Bitcoin)
  • donc des gens vendent des accès centralisés aux nœuds de la blockchain
  • et les clients de ses APIs ont une confiance implicite (et pas par le système)
  • et centralisation des accès et donc mining de ces informations
  • NFTs stockent l’URL de l’objet (sans hash) donc pas sécurisé sans parler du rachat de domaine
  • il a fait un NFT qui se change en émoji caca pour celui qui l’a acheté
  • et il s’est fait virer son NFT ET sa preuve de possession
  • mais c’est une blockchain ???
  • sauf que le wallet passe par des fournisseurs centralisés
  • pour faire web3, les gens se concentrent autour de plateformes, un comportement tres web2
  • donc la blockchain et NFT ont du succès non pas parce que c’est distribué, mais parce que c’est un gold rush
  • la dynamique rend les projets web3 successful mais fondamentalement les mêmes dynamiques vont les centraliser
  • propositions
    • accepter que les gens ne font pas tourner leur serveur et utiliser la crypto pour distribuer la confiance

Outillage

Maven 3 à 5 une explication

  • le POM est figé parce que c’est ce que publie maven central, donc maven 3 ne fera que des améliorations mineures
  • Maven 5 la proposition : avoir un POM de build (v5) et produire un POM de consommation en v4, comme les autres systèmes de builds font
  • Maven 4 va faire la même séparation, mais en faisant un POM v4 build to POM v4 consumer conversion en étape intermédiaire
  • maven 4 alpha 1 se rapproche, il attend juste des contributions de @aheritier
  • blog de Hervé Boutemy
  • Maven Wrapper (ex takari) est désormais un projet officiel apache maven : https://maven.apache.org/wrapper/maven-wrapper-plugin/
  • idem pour Maven Daemon https://github.com/apache/maven-mvnd
  • Le maven Build Cache arrive : https://github.com/apache/maven-build-cache-extension

Sécurité

Comme prévu, la saga log4j continue avec Log4j 2.17 et 2.17.1

  • avec l’augmentation de la visibilité, plus de problèmes vont être trouvés
  • Log4J 2.17 corrige un appel récursif infini exploitable en déni de service. Besoin d’avoir un pattern non standard dans la config (utilisant les context lookup) et un accès au Thread Context Map par l’attaquant (5.9) https://logging.apache.org/log4j/2.x/security.html#CVE-2021-45105
  • Log4J 2.17.1 fixe un abus du JDBCAppender qui peut référencer une URL JNDI et exécuter du code à distance, mais l’attaquant doit pouvoir modifier la configuration de log4j (6.6) https://logging.apache.org/log4j/2.x/security.html#CVE-2021-44832
  • doit-on quitter le navire ? équilibre entre fonctionnalités et sécurité
  • on fera un épisode spécial Log4Shell bientôt

H2 vulnérable à une attaque JNDI

  • fondamentalement comme Log4Shell
  • Mais exploitable pour ceux qui passent une url ou un login mot de passe via des infos utilisateur
  • Par exemple h2 console
  • Mais localhost par défaut
  • Sauf dans jhipster

Loi, société et organisation

Tribune de Didier Girard sur le cloud souverain

  • investissement de 1,8 milliard sur 4 ans dans le cloud français sur 4 ans. C’est moins que chaque grand cloud provider par an
  • consortiums européens, mais mauvaise histoire CloudWatt, Gaia-x et ses problèmes de gouvernance
  • initiative Soutenu par la dépense publique
  • Cloud de confiance est un moyen pour Didier du transfert technologique et de casser l’asymétrie de compétence et d’investissement
  • Ça ne répond pas aux problèmes clés levés par Quentin dans l’interview

La Maison Blanche demande à Oracle et Microsoft de réfléchir à la sécurisation des logiciels libres

Outils de l’épisode

Rambox

  • en general je préfère les applis natives pour chaque service
  • Mais avec les messageries instantanées, c’est la chienlit
  • Et il y a les apps qui sont des tabs dans le navigateur (Trello, Gmail, calendar etc)
  • Là tout est centralisé dans une seule app (notifications etc)
  • C’est comme un mini browser dédié avec des sites webs fixes
  • Et contre toute attente j’aime bien
  • Version gratuite et version pro.
  • Encore des limitations (vue de deux apps en parallèle) mais ils travaillent à une nouvelle version

Conférences

Sunny Tech à Montpellier le 30 juin et 1er juillet — CfP ouvert jusqu’au 28 février

Nous contacter

Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/