Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
log4shellの簡単な解説と Webエンジニアとして心がけたいこと / mild-web-...
Search
Hiroto YAMAKAWA
December 27, 2021
Programming
0
360
log4shellの簡単な解説と Webエンジニアとして心がけたいこと / mild-web-sap#16a
ゆるWeb勉強会@札幌 OnLine #16
https://mild-web-sap.connpass.com/event/229117/
Hiroto YAMAKAWA
December 27, 2021
Tweet
Share
More Decks by Hiroto YAMAKAWA
See All by Hiroto YAMAKAWA
Javaへの新たなHello, World / yuruchitose-04
gishi_yama
0
31
JSR381、知っていますか?Javaの画像認識APIのはなし / SC4Y23-05
gishi_yama
0
180
jPeekでのクラスの凝集度計測の試行 / mild-web-sapporo#24
gishi_yama
0
310
Github CopilotとChatGPTを使って感じた使い分けの糸口 / JavaDo #22
gishi_yama
1
1.3k
子ども向けプログラミング体験教室でのHololens2利用事例 / IoTLT#97
gishi_yama
0
87
AWS Serverless Java Container, Spring Bootで試してみた / javado22
gishi_yama
0
480
Hololens2と 小中高プログラミング教育の利用にむけた試行 / XRMTG 2023-1-18
gishi_yama
0
280
小学生がmicro:bitを用いて行える課題解決を意識した自由研究事例 /SC4Y '22#4
gishi_yama
0
380
あなたもこだわろう!Web開発環境 (物理編)'22 / mild-web-sapporo#22
gishi_yama
0
300
Other Decks in Programming
See All in Programming
受け取る人から提供する人になるということ
little_rubyist
0
230
EventSourcingの理想と現実
wenas
6
2.3k
役立つログに取り組もう
irof
28
9.6k
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
4
1.4k
聞き手から登壇者へ: RubyKaigi2024 LTでの初挑戦が 教えてくれた、可能性の星
mikik0
1
130
AWS IaCの注目アップデート 2024年10月版
konokenj
3
3.3k
Contemporary Test Cases
maaretp
0
130
Pinia Colada が実現するスマートな非同期処理
naokihaba
4
220
ピラミッド、アイスクリームコーン、SMURF: 自動テストの最適バランスを求めて / Pyramid Ice-Cream-Cone and SMURF
twada
PRO
10
1.3k
リアーキテクチャxDDD 1年間の取り組みと進化
hsawaji
1
220
CSC509 Lecture 09
javiergs
PRO
0
140
TypeScript Graph でコードレビューの心理的障壁を乗り越える
ysk8hori
2
1.1k
Featured
See All Featured
Become a Pro
speakerdeck
PRO
25
5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
The Language of Interfaces
destraynor
154
24k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Done Done
chrislema
181
16k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Teambox: Starting and Learning
jrom
133
8.8k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Transcript
#ゆるWeb札幌 !"#$%&'!!()*+,-./ 0'123456.789:;<=>. 山川 広人(@gishi_yama) 公立千歳科学技術大学 情報システム工学科 1
#ゆるWeb札幌 公立千歳科学技術大学 情報システム工学科 専任講師 R&D: Experimental Development of ICT Services (ex:
City-Bus Tacking System) Computer in Education, Programming & Programmer's Learning ?@ABCDEFGFHFIFJK&"L"MNO&PL"%'NFONQKR 2 千歳市バスロケーションシステム「ちーなび」の開発 適応型学習支援システムの開発、活用 レポート内の話ことば診断システムの開発 大学・小学校・地域でのプログラミング教育の実践
#ゆるWeb札幌 !"#$%&'!!STUVWXYXZW$$XX[ 3 JPCERT/CC Apache Log4jの任意のコード実行の脆弱性(CVE-2021-44228)に関する注意喚起 より抜粋(2021-12-13確認) JNDI は、Java Naming
and Directory Interface API の略語です。API を呼び出すことに より、アプリケーションはリソースとほかのプログラムオブジェクトを検出します。リソースとは、データ ベースサーバーやメッセージングシステムなどのシステムへの接続を提供するプログラムオブジェクト です。 https://docs.oracle.com/cd/E19823-01/819-1551/jndi.html より抜粋(2021-12-26確認)
#ゆるWeb札幌 \]^_D`ab3cab3def 4 12/10 午前 Google Trends "log4j" "すべての国" "2021/12/5-12/26"
で検索(2021-12-26確認) ようこそJava裏パークへ だいぶ落ち着いてきた? (収束したとは言ってない) 週明けにピーク
#ゆるWeb札幌 g_h0'1i_jklm8=nop.q"Thrs=8tD !"#$%&'!!hu=8)*h-v7wgD xyz_({|}~(-v_g/ •€•‚ƒ`„…†‡ˆ‰ˆmnop„q"TŠ/ ‹Œgn>.•Ž•h•„‘’“l= 5
#ゆるWeb札幌 6 画像引用:https://www.govcert.admin.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/
#ゆるWeb札幌 7 画像引用:https://news.sophos.com/en-us/2021/12/12/log4shell-hell-anatomy-of-an-exploit-outbreak/
#ゆるWeb札幌 ”•–—(˜™„•š–—Š›œg•’t/ žŸ ¡¢£_¤¥Š¦+§< 8
#ゆるWeb札幌 žŸ ¡qT_(¤¥¨•©(›œŒ¢£ 9 攻撃用のclassファイルをおいたHTTPサーバー 攻撃用サーバーのアドレス、classファイルの場所を 返答する攻撃用LDAPサーバー 脆弱性のあるlog4j を用いたログ表示コード ①JNDI
lookupで 攻撃用LDAPサーバーを参照する 文字列を入力 ②本来、文字列をログ表示だけすべきところ、攻撃用LDAPにアクセスしてしまう(攻撃コードのURLを返答) ③攻撃コードのURLの リソースを取得・実行 してしまう (攻撃コードを返答) ② ③
#ゆるWeb札幌 10 ”•(¤¥ªC«¬(-Ÿ`˜¦R 攻撃用文字列を入力すると、 ログは表示されず、攻撃用LDAPサーバーにアクセス発生 返答されたURLの攻撃用classファイルを取得し、 実行してしまう(電卓が表示される) 電卓起動 コード
#ゆるWeb札幌 たとえば、Javaのマイナーバージョン最新版(この場合は1.8.0_312)を使った場合は、 外部サーバーへの問合せは発生するが、Classファイルの実行は行われない (※解決したわけではなく、内部パラメータを外部サーバーに送信しうるなどの問題が残る) •©(›œª® 11 攻撃用文字列を入力すると、 攻撃用LDAPサーバーにアクセス発生 返答されたURLの読み込みは実行しない (ダミーのクラス名
foo を表示して終了)
#ゆるWeb札幌 たとえば、ライブラリ自体を更新した場合は、外部サーバーへの問合せ自体が発生しない (※サーバー側でプロセス実行はできなくなったが、内部パラメータなどは送信する可能性がある) •©(›œª¯ 12 攻撃用文字列を入力しても、 攻撃用LDAPサーバーにアクセスせず、 そのまま文字列表示 再現・検証を行うことで、自分たちが自サービス等に行なった対応方法が十分か、だけではなく、 脆弱性発覚後のさまざまな(一部憶測も含めた)情報の検証、それに基づく判断にも役立つ
#ゆるWeb札幌 根本対策 :ライブラリやJDK(JRE)を最新版に更新(かつ、診断や更新しやすい環境を作る) 軽減策 :サーバーのアクセス可能先を見直す、アクセス経路で弾く(WAF)、etc... 心がけたいこと: 上記を迅速に進めるためにも、日頃からCERTの情報にアンテナをたてておくことや、 攻撃や脆弱性の原理などを時には試行・確認し、勘所を増やすことも重要 ---------- 特に若い世代のみなさんには...既知ではあるものの起こりうる脆弱性の勘所も沢山ある 例えば:
SQLインジェクションには PreparedStatementを使う CSRFにはSessionトークンなどを利用する etc ... 上記のような対策が必要だということは理解していても、一部は意識せずにフレームワークが守ってくれる時代でも あるけど、実際にSQLインジェクションやCSRFを自分の環境で再現・対策方法を検証してみたことはありますか? ⇒ 攻撃やその防御手法を再現・検証することでより深い理解を得られる機会になる ※もちろん、再現はローカル環境に限り、他者の環境への実行や悪用は絶対ダメ •©(w.‘.t9:;<=>. 13