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
400
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
開発環境構築の共通要素:必要なものを手元に持ってきて使えるようにする/JavaDo28
gishi_yama
0
140
ドメイン層×日本語プログラミング/seb_sapporo_04
gishi_yama
1
170
Javaへの新たなHello, World / yuruchitose-04
gishi_yama
0
69
JSR381、知っていますか?Javaの画像認識APIのはなし / SC4Y23-05
gishi_yama
0
270
jPeekでのクラスの凝集度計測の試行 / mild-web-sapporo#24
gishi_yama
0
420
Github CopilotとChatGPTを使って感じた使い分けの糸口 / JavaDo #22
gishi_yama
1
1.7k
子ども向けプログラミング体験教室でのHololens2利用事例 / IoTLT#97
gishi_yama
0
130
AWS Serverless Java Container, Spring Bootで試してみた / javado22
gishi_yama
5
890
Hololens2と 小中高プログラミング教育の利用にむけた試行 / XRMTG 2023-1-18
gishi_yama
0
350
Other Decks in Programming
See All in Programming
お前も Gemini CLI extensions を作らないか?
satohjohn
0
110
AI駆動開発カンファレンスAutumn2025 _AI駆動開発にはAI駆動品質保証
autifyhq
0
130
三者三様 宣言的UI
kkagurazaka
0
360
React Nativeならぬ"Vue Native"が実現するかも?_新世代マルチプラットフォーム開発フレームワークのLynxとLynxのVue.js対応を追ってみよう_Vue Lynx
yut0naga1_fa
2
2.1k
予防に勝る防御なし(2025年版) - 堅牢なコードを導く様々な設計のヒント / Growing Reliable Code PHP Conference Fukuoka 2025
twada
PRO
33
10k
CSC509 Lecture 08
javiergs
PRO
0
280
AI駆動開発ライフサイクル(AI-DLC)のホワイトペーパーを解説
swxhariu5
0
230
AIのバカさ加減に怒る前にやっておくこと
blueeventhorizon
0
160
AI 時代だからこそ抑えたい「価値のある」PHP ユニットテストを書く技術 #phpconfuk / phpcon-fukuoka-2025
shogogg
1
340
歴史から学ぶ「Why PHP?」 PHPを書く理由を改めて理解する / Learning from History: “Why PHP?” Rediscovering the Reasons for Writing PHP
seike460
PRO
0
130
開発組織の戦略的な役割と 設計スキル向上の効果
masuda220
PRO
10
2.1k
Vue 3.6 時代のリアクティビティ最前線 〜Vapor/alien-signals の実践とパフォーマンス最適化〜
hiranuma
2
410
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
697
190k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Navigating Team Friction
lara
190
15k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
116
20k
GitHub's CSS Performance
jonrohan
1032
470k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
Embracing the Ebb and Flow
colly
88
4.9k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
Docker and Python
trallard
46
3.6k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.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