LCC 269 - Log4J devient Turing-complet

Published: Dec. 23, 2021, 10:38 a.m.

b'

Antonio et Guillaume discutent de nouvelle cr\\xe8merie, des f\\xeates de fin d\\u2019ann\\xe9es, des cadeaux du p\\xe8re No\\xebl, et\\u2026 de log4j, le feuilleton de fin d\\u2019ann\\xe9e !

Enregistr\\xe9 le 20 d\\xe9cembre 2021

T\\xe9l\\xe9chargement de l\\u2019\\xe9pisode LesCastCodeurs-Episode\\u2013269.mp3

News

D\\xe9c\\xe8s de St\\xe9phane Maldini (14 Dec 2021)

  • Une triste nouvelle pour commencer l\\u2019\\xe9pisode avec l\\u2019annonce du d\\xe9c\\xe8s soudain de St\\xe9phane Maldini
  • Un acteur de l\\u2019\\xe9cosyst\\xe8me Grails \\xe0 la fin des ann\\xe9es 2000, gr\\xe0ce \\xe0 de nombreux plugins
  • Mais plus connu pour avoir co-fond\\xe9 le project Reactor, et popularis\\xe9 le Reactive Programming au sein de la communaut\\xe9 Java
  • Egalement \\xe0 l\\u2019origine de R2DBC pour rendre l\\u2019acc\\xe8s aux bases de donn\\xe9es plus r\\xe9actif
  • Apr\\xe8s de nombreuses ann\\xe9es chez Pivotal, il avait rejoint plus r\\xe9cemment Netflix, et c\\u2019est peut-\\xeatre en partie gr\\xe2ce \\xe0 lui que vous pouviez matter plein de s\\xe9ries !

CloudBees clot un tour de table de 150 millions de dollars valorisant l\\u2019entreprise \\xe0 1 milliards de dollars

Le feuilleton Log4J2 (9 Dec 2021)

  • Grosse faille de s\\xe9curit\\xe9 li\\xe9e \\xe0 l\\u2019utilisation des versions <2.15 de Log4J2
  • D\\xe9couverte par un chercheur en s\\xe9curit\\xe9 d\\u2019Alibaba Cloud
  • D\\xe9tails publi\\xe9s par LunaSec
    • Log4J2 permet de faire de l\\u2019interpollation de texte en rempla\\xe7ant des parties variables d\\u2019un message \\xe0 logguer
    • Hors il est possible d\\u2019ajouter des appels \\xe0 des informations JNDI provenant d\\u2019un serveur LDAP
    • Un serveur LDAP peut retourner une classe compil\\xe9e que JNDI va executer en local lorsque Log4J2 va vouloir ins\\xe9rer l\\u2019information JNDI
    • Donc potentiellement, la classe distante execut\\xe9e localement pourra exfiltrer des donn\\xe9es, avoir acc\\xe8s aux processus qui tournent, etc.
  • Log4J2 a \\xe9t\\xe9 patch\\xe9 rapidement, mais d\\u2019autres failles sont apparues
  • Diff\\xe9rentes strat\\xe9gies de mitigations ont \\xe9t\\xe9 publi\\xe9es
  • Snyk a publi\\xe9 une \\u201ccheat sheet\\u201d pour rem\\xe9dier \\xe0 la faille

Langages

Kotlin \\xe0 l\\u2019assaut du K2 avec son nouveau compilo (11 Nov 2021)

  • Lors de sa conf\\xe9rence Kotlin 2021 Premier annoncent des nouveaut\\xe9s autour du langage
  • Le nouveau compilateur plus rapide K2
    • qui sert dor\\xe9navant de base pour toutes les plateformes cibles support\\xe9es
    • qui apporte une nouvelle API pour cr\\xe9er des extensions au compilateur
    • utilise un langage intermediaire (IR) au lieu de compiler directement en natif
    • avec un nouveau frontal avec sa propre repr\\xe9sentation interm\\xe9diaire qui permet de simplifier la compr\\xe9hension du langage dans les IDEs, pour d\\xe9sugariser le sucre syntaxique
    • rapidit\\xe9 accrue potentiellement jusqu\\u2019\\xe0 2 fois
  • Le support de WebAssembly avec Kotlin/WASM
    • Kotlin/JS continue d\\u2019exister, pour des applis Web, pour l\\u2019int\\xe9gration JavaScript
    • mais Kotlin/WASM apporte le support natif de WebAssmbly
  • Kover, un nouveau plugin de couverture de code pour Kotlin/JVM, utilisable avec un plugin Gradle, compatible avec JaCoCo
  • Le Kotlin Symbol Processor, KSP, driv\\xe9 par Google, est maintenant stable, plus rapide, plus ergonomique d\\u2019utilisation (remplace Kapt)

Groovy 4, on y est presque !

  • Sortie de la release candidate de Groovy 4, la finale est proche !
  • Changement des coordonn\\xe9es Maven pour passer \\xe0 org.apache.groovy (bye bye Codehaus)
  • Suppression de vieilles coordonn\\xe9es de packages ou classes mal-situ\\xe9es, \\xe0 cause des modules Java (XmlSlurper, XmlParser, AntBuilder, GroovyTestCase)
  • Le module groovy-yaml est rajout\\xe9 au pom groovy-all et le module groovy-testng devient optionel
  • Le vieux parseur bas\\xe9 sur Antlr2 est supprim\\xe9, et le parseur (\\u201cparrot\\u201d) introduit dans Groovy 3 reste le seul parseur
  • Le bytecode g\\xe9n\\xe9r\\xe9 n\\u2019utilise plus que l\\u2019instruction invokeDynamic partout o\\xf9 c\\u2019est possible
  • Support des expressions switch
  • Support des sealed types
  • Incubation du support des records
  • Inclusion de type-checkers, par exemple avec le premier pour valider les expressions r\\xe9guli\\xe8res \\xe0 la compilation
  • Inclusion de macro pour faciliter le d\\xe9buggage
  • Int\\xe9gration de JavaShell dans la console Groovy pour facilier les exp\\xe9rimentations cross language
  • Nouvelle annotation @POJO pour cr\\xe9er des POJO Java, sans la surchage de bytecode sp\\xe9cifique \\xe0 Groovy (pratique pour la compilation statique)
  • Incubation de design by contract avec l\\u2019int\\xe9gration de l\\u2019ancien module gcontracts
  • GINQ (Groovy Integrated Query) qui propose un langage proche de SQL, similaire \\xe0 LINQ en .Net, pour facilier le travail avec les collections
  • Incubation du support pour le langage de configuration TOML

Trisha Gee partage ses nouvelles Java annot\\xe9s pour le mois de D\\xe9cembre (3 Dec 2021)

Librairies

Nouvelle paire de bottes 2.6 pour Spring Boot (19 Nov 2021)

  • Support des attributs SameSite sur les cookies de session cookies pour les applications \\xe0 base de servlet
  • Support pour configurer les health groups sur le port principal ou de management
  • Am\\xe9lioration du endpoint /info avec des infos sur le runtime Java
  • Support pour tester les applis Spring MVC en utilisant WebTestClient
  • Auto-configuration de spring-rabbit-stream
  • Support pour des r\\xe8gles personnalis\\xe9es de nettoyage/filtrage des propri\\xe9t\\xe9s dans /env et configprops

Micronaut 3.2 (23 Nov 2021)

  • Nouvelle version de Micronaut
  • Passage de GraalVM \\xe0 la version 21.3 avec le support de JDK 17 (il faut maintenant d\\xe9velopper a minima avec la distribution GraalVM JDK 11 et non plus 8)
  • Version 3 du plugin GraalVM pour Gradle
  • Support de Kotlin 1.6
  • Fonctionnalit\\xe9s HTTP
    • Annotation @JsonView sur les param\\xe8tres annot\\xe9s @Body
    • Timeout configurable pour le handshake SSL
    • Support am\\xe9lior\\xe9 du server push HTTP/2 pour envoyer les resources en parall\\xe8le
    • Am\\xe9lioration WebSocket avec le param\\xe8tre WebSocketPongMessage pour l\\u2019annotation @OnMessage pour r\\xe9pondre au Ping des WebSockets
    • Support du protocole WS/WSS des WebSockets
  • Diff\\xe9rentes mises \\xe0 jour des modules fonctionnels (Data, Security, Reactive, OpenAPI, Kubernetes, ElasticSearch)

C\\xe9dric Champeau compare Gradle et Maven niveau composition et h\\xe9ritage (1 Dec 2021)

  • Gradle et Maven prennent l\\u2019approche de \\u201cconvention over configuration\\u201d
  • Couvre les approches diff\\xe9rentes entre Gradle et Maven : Maven prends une approche plut\\xf4t h\\xe9ritage, tandis que Gradle l\\u2019approche compisition
  • Les plugins Gradle sont plus faciles \\xe0 maintenir gr\\xe2ce \\xe0 la composition et permet de cr\\xe9er ses propres convetions

Infrastructure

GitHub collabore \\xe0 la s\\xe9curit\\xe9 des packages NPM (15 Nov 2021)

  • GitHub est un des stewards du registre des packages NPM
  • GitHub partage des d\\xe9tails sur les incidents de s\\xe9curit\\xe9s r\\xe9cents
    • malware inject\\xe9s r\\xe9cemment dans ua-parser-js, coa, et rc car un tiers avait r\\xe9ussit \\xe0 usurper le compte d\\u2019un contributeur
    • temporairement, les packages priv\\xe9es \\xe9taient potentiellement d\\xe9couvrables sur le r\\xe9plicats de npmjs.com
    • une faille qui a \\xe9t\\xe9 d\\xe9couverte gr\\xe2ce \\xe0 un bug bounty qui permettait de publier des versions de certains modules avec des comptes mal-s\\xe9curis\\xe9s
  • GitHub investit dans la s\\xe9curit\\xe9, en particulier en rendant obligatoire la 2-factor-authentication pour les administrateurs et admins des packages les plus populaires h\\xe9berg\\xe9s sur GitHub, en rajoutant de la d\\xe9tection de malware automatique

J\\xe9r\\xf4me Petazzoni et les anti-patterns Docker (30 Nov 2021)

  • J\\xe9r\\xf4me partage une liste d\\u2019anti-patterns qu\\u2019il voit fr\\xe9quemment quand il aide les gens \\xe0 construire leurs images de conteneur
  • Parmi les anti-patterns :
    • les trop grosses images, comment les optimiser, comment monter des voluments plut\\xf4t que d\\u2019inclure de gros dataset dans l\\u2019image
    • les trop petites images, mais attention car parfois on ne peut pas investiguer plus finement ce qui s\\u2019y passe
    • utilisation de zip et tar, mieux vaut \\xe9viter de compresser pour ne pas utiliser trop de CPU ou d\\u2019espace dans l\\u2019image
    • re-builder les bases communes : autant mettre l\\u2019image de base dans un registry, plut\\xf4t que de la re-construire \\xe0 chaque fois
    • construire l\\u2019image \\xe0 partir d\\u2019un monor\\xe9po g\\xe9ant et comment organiser ses sources et la localisation de son Dockerfile avec chaque projet
    • ne pas utiliser BuildKit
    • avoir besoin de rebuilder pour chaque changement minime
    • utiliser des scripts customs au lieu des outils existants comme Compose, Skaffold, Tilt et faire ses propres sh
    • obliger les gens \\xe0 faire tourner certaines choses dans des conteneurs alors que \\xe7a peut tr\\xe8s bien tourner en local sur la machine du d\\xe9veloppeur
    • utilisation d\\u2019outil trop complexes, autant utiliser des outils appropri\\xe9s
    • conflit de noms entre scripts et images
    • builder dans des Dockerfiles

Cloud

Le runtime Java pour Google App Engine en Open Source (16 Dec 2021)

  • Toujours dans un esprit d\\u2019ouverture pour \\xe9viter le lock-in, Ludovic Champenois qui dirige le runtime Java de Google App Engine Java a open sourc\\xe9 les sources du runtime, du SDK.

Azure : comment les d\\xe9veloppeurs migrent leurs applis Spring Boot dans le Cloud (2 Dec 2021)

  • Cible en majorit\\xe9 Kubernetes, 2x plus que sur des VMs
  • Challenges sp\\xe9cifiques Spring rencontr\\xe9s
    • Passer d\\u2019un monolith \\xe0 une version cloud-friendly
    • Migrer d\\u2019anciennes versions des composants Spring Cloud
    • Migrer d\\u2019anciennes versions de Spring Boot
    • Migrer de servelets vers Boot
  • Migration de Java vers Spring Boot
    • Java vers Boot
    • Java EE vers Boot
    • Spring Framework vers Spring Boot
    • Mainframe vers Spring
  • Challenges sp\\xe9cifiques au Cloud
    • Migration de base de donn\\xe9es
    • Monitoring end-to-end
  • Outils d\\u2019APM les plus fr\\xe9quents
    • Outils du provider cloud
    • Prometheus
    • Dynatrace
    • AppDynamics
  • End-to-End monitoring
    • Splunk
    • Elastic
    • Outil du provider cloud
  • Composants Spring les plus fr\\xe9quemment utilis\\xe9s
    • Spring Cloud Config Server
    • Spring Cloud Gateway
    • Spring Cloud Service Registry
    • Spring Cloud Load Balancer
    • Spring Cloud Circuit Breaker (Resilience4J)

Web

CSS d\\xe9fensif (7 Dec 2021)

  • Ahmad Shadeed partage de bonnes pratiques CSS, comment \\xe9crire du CSS propre, sans comportement bizarro\\xefde suivant les navigateurs, ou qui r\\xe9pond bien de mani\\xe8re responsive
  • Avec des exemples sur l\\u2019utilisation de Flexbox, de l\\u2019espacement, la gestion du contenu long (et donc du clipping), de l\\u2019apparence des images suivant la taille de la fen\\xeatre, les m\\xe9dia queries en vertical, le texte au-dessus des images, la gestion des scrollbars.

Le custom CSS Reset de Josh Comeau (23 Nov 2021)

  • Josh Comeau partage une nouvelle version de CSS Reset, non-opionated pour ce qui est design et cosm\\xe9tique, mais qui prends certains partis pris (par exemple de l\\u2019italique reste italique)
  • Couvre en d\\xe9tail chaque aspect : le box-sizing, les marges par d\\xe9faut, la hauteur de ligne, des hauteurs bas\\xe9es sur les pourcentages, rendre les polices antialias\\xe9es, le word wrapping pour la gestion du retour \\xe0 la ligne

Google Fonts propose des articles sur l\\u2019utilisation des polices de caract\\xe8res (7 Dec 2021)

  • Elliot Jay Stocks a particip\\xe9 \\xe0 la base de connaissance et d\\u2019articles du Google Fonts Knowledge
  • Introduction \\xe0 la typographie, comment choisir une bonne taille d\\u2019interligne, comprendre les mesures des caract\\xe8res et des lignes
  • Comment choisir une typographie et une police de caract\\xe8res
  • Un glossaire sur les termes relatifs aux polices de caract\\xe8res, \\xe0 la typographie

Outillage

JetBrains annonce Fleet un nouvel IDE (29 Nov 2021)

  • Developp\\xe9 from scratch
  • Bas\\xe9 sur l\\u2019experience de 20 ans \\xe0 developer des IDEs
  • Fleet utilise le code-processing d\\u2019IntelliJ (polyglot)
  • Nouvelle interface graphique
  • Bas\\xe9 sur la librairie graphique 2D Skia (utilis\\xe9e dans Chrome, Flutter, Android, Firefox\\u2026)
  • Rapide et l\\xe9ger (d\\xe9marre en quelques secondes)
  • Architecture distribu\\xe9e (tourne sur le PC, remote PC, dans le Cloud)
  • Early Preview, pas encore accessible publiquement \\xe0 tout le monde

Mac: display_manager et Rectangle (29 Nov 2021)

  • display_manager permet de scripter en ligne de commande la configuration des r\\xe9solutions des \\xe9crans (interne ou externe), de changer la luminositer, la densit\\xe9 de pixel, la fr\\xe9quence de raffraichissement
  • Rectangle : cette petite application propose des raccourcis clavier pour positionner et retailler les fen\\xeatres, pour les mettre rapidement en plein \\xe9cran, \\xe0 gauche/\\xe0 droite, en quart, en tiers
  • Hammerspoon qui permet d\\u2019automatiser mac OS, en rajoutant des raccourcis clavier, en r\\xe9agissant \\xe0 des \\xe9v\\xe9nements comme le branchement d\\u2019un appareil sur un port USB, le fait de rejoindre un r\\xe9seau Wifi

Loi, soci\\xe9t\\xe9 et organisation

Un document du FBI liste les donn\\xe9es des messageries chiffr\\xe9es pouvant \\xeatre r\\xe9cup\\xe9r\\xe9es (30 Nov 2021)

  • M\\xeame si le contenu des messages n\\u2019est pas r\\xe9cup\\xe9rable, des informations de type m\\xe9ta-donn\\xe9es peuvent l\\u2019\\xeatre (date de derni\\xe8re connection ou de cr\\xe9ation du compte, avatar, cl\\xe9 publique ou token, nombre de messages post\\xe9s)

Conf\\xe9rences

Devoxx France du 20 au 22 avril 2021
SunnyTech les 30 juin et 1er juillet 2022 \\xe0 Montpellier

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/

'