Slide 1

Slide 1 text

Django のセキュリティリリー スを見る 2022/10/26 nyk510

Slide 2

Slide 2 text

Djangoはすごい! が頼り過ぎてる…? ● Djangoはフルスタックフレームワークでセキュリティについては心配ない、と思っている ● ただ実際にはたまにセキュリティインシデントが見つかってパッチが配布されている ● 具体的な中身とかどうやって開発されているとか知らない…おんぶにだっこ

Slide 3

Slide 3 text

今日の目的 ● 今も残っている不具合を知る ● どういう方法で配布されているかの仕組みをしる

Slide 4

Slide 4 text

Djangoのバージョン管理方法 ● githubで管理されている ● 新しいバージョンができるとリリースのための tag が切られ公式サイトで通知される ● リリース一覧は https://docs.djangoproject.com/en/4.1/releases/ から見ることができる

Slide 5

Slide 5 text

最近のセキュリティ系のリリース Django 4.0.8 release notes https://docs.djangoproject.com/en/4.1/releases/4.0.8/ から拝借 (2022-10-16)

Slide 6

Slide 6 text

最近のセキュリティ系のリリース Django 4.0.8 release notes https://docs.djangoproject.com/en/4.1/releases/4.0.8/ から拝借 (2022-10-16) リリースページにセキュリティ issue であることがそのレベルと共に表記され る - 高: リモートコード実行・ SQLインジェクション - 中: XSS・CSRFなどの攻撃系 - 低: レアケースな設定の問題・未検証のリダイレクト問題等 名前はCVE + わかりやすい説明と共に表記される。 (国際化された URL における潜在的なサービス拒否の脆弱性 )

Slide 7

Slide 7 text

CVEとは? 情報セキュリティのおける脆弱性やインシデントに ついて固有の名前をつけて管理するデータベース 昔は各種の団体やベンダーが独自報告して散逸して いることを問題視して作られた に作成せずCVEに統一されることで脆弱性の比較検 討が容易になった(トノコト) https://www.cve.org/

Slide 8

Slide 8 text

Django 4.0.8 に該当するページを調べるには? CVE から始まるIDで調べると出てくる ● https://www.cve.org/CVERecord?id=CVE -2022-41323 先程よりも包括的な内容が記載されている ● django4.0.8以外でも修正されたことがわか る 内容と参照すべきリンクが記載されている ● 今回の場合だとリリースがどこに影響があっ たかや、どこで修正がされたか (commit) な ども記載がある。

Slide 9

Slide 9 text

どういう内容だった? CVEのページに当該修正の commit log がある: https://github.com/django/django/commit/5 b6b257fa7ec37ff27965358800c67e2dd11c9 24 修正内容は1行 (というより10文字ぐらい)・ re.escape を追加するところ

Slide 10

Slide 10 text

どういう内容だった? ● 言語指定に正規表現が受け付けられていた ● 内部に正規表現で意味がある単語が利用さ れるとクラッシュする ○ 例えば `e(` などをリクエストされたと き [re.error: missing ), unterminated subpattern at position 1] となる ● これによりDDos攻撃などに弱くなる

Slide 11

Slide 11 text

番外編: もしセキュリティ関連のミスを見つけたら? ● Djangoのissueを作らずメールせよとのこと ● 公にセキュリティの不備が知られるとまずいのでそうなってる