2024年を振り返って…

2024年を振り返って…

こんにちは、私はユン·ソクチャンと申します。韓国で Offensive Security をしています。

皆様、2024年はどうでしたか?私は今年、韓国の男性だったら避けられない軍隊でいって、誰よりも長い一年を過ごしました。この文は、私が君隊の中で生活しながら達成した事を皆様にアピールするために作成されました。

ここで私のついてもっと詳しく読めます。

ch4n3.kr

一つ目、ホワイトハットコンテスト優勝

ホワイトハットコンテスト、兵士の部門で一位で、韓国の国防部長官賞をもらいました!

1位の記念写真ですー

たぶん日本の方たちはこの[ワイトハットコンテスト]という大会についてよく知らない方も多いと思っています。韓国の情報器官である国家情報院の説明に従うと、韓国の3大CTFは…

  • 科学技術情報通信部の主催の、CODEGATE CTF
  • 国防部の主催の、WHITEHAT CONTEST
  • 国家情報院の主催の、CCE(Cyber Conflict Excercise)

でございます。私が昨年に参加した「WHITEHAT CONTEST」とは、この三つの中で軍の焦点を合わせた大会であります。

本選では韓国式のCTFでよく出題されるJavaとPHPの基盤の問題が出って、解くのがちょっと大変でしたが、予選では私が上手と一番自信があるモダンウェブスタック(FlaskとDjango)の問題が出題されて1位でオールクリアやりました。

この大会で優勝して、国防部の長官賞を貰えました。

二つ目、Security Contribution to Django, CPython

私は軍隊に入る前から、ずっとDjangoで脆弱性を探したいと思いました。それで、日の日課が終わったら公共のパソコン部屋に行きてDjangoのコードを見ました。そのお陰でDjangoで四つの脆弱性を探せられました。

  • CVE-2024-24680: Potential denial-of-service in intcomma template filter
  • CVE-2024-27351: Potential regular expression denial-of-service in django.utils.text.Truncator.words()
  • CVE-2024-41991: Potential denial-of-service vulnerability in django.utils.html.urlize() and AdminURLFieldWidget
  • CVE-2024-53908: Potential SQL injection in HasKey(lhs, rhs) on Oracle

特に私がDjangoのソースコードを初めてみたときから目標だった SQL Injection 脆弱性を探して知らせて、とても嬉しかったです。(CVE-2024-53908)

また、Djangoで最もよく使われるREST APIライブラリであるdjango-rest-frameworkでも、潜在的なXSS脆弱性を発見し、報告しました。

この脆弱性は、発見から報告、パッチ作成、CVE番号の割り当てまで、すべて自分で行いました。その功績が認められ、Google VRPを通じて韓国で15人目のバウンティ受領者となりました。

  • CVE-2024-21520: Potential XSS vulnerability in break_long_headers template filter
Google VRP Leaderboard (country filtered; South Korea 🇰🇷)

Djangoのコードベースを分析している途中、偶然にCPythonの潜在的なDoS脆弱性を発見し、報告したこともあります。この脆弱性は、すべてのDjangoベースのサーバーに影響を与える可能性があるため、その影響力の大きさから興味深いものでした。

  • CVE-2024-7592: Quadratic complexity parsing cookies with backslashes
Pythonの脆弱性CVE-2024-7592とDjangoへの影響
こんにちは、ユンソクチャンと申します。最近、私がPythonチームに報告した脆弱性が公開されました。 この脆弱性は、CVSS 3.xの基準で10点中7.5点で、「高い」深刻度と評価されました。この問題を悪用すると、インターネット上のすべてのDjangoサーバーでDoS(サービス拒否)攻撃を引き起こす可能性がありました。 Pythonの正規表現とReDoS脆弱性 正規表現はテキスト処理でよく使われる強力なツールです。しかし、正規表現が複雑になると、解析や一致を見つける計算量が急激に増加することがあります。Pythonのreモジュールはバックトラッキングを使う方法で正規表現を処理します。こ…
CVE-2024-7592の説明は、ブログ記事で代替します。

三つめ、PyCon KR 発表

PyCon KR への写真!

韓国最大のPythonカンファレンスであるPyCon KR(パイコン韓国)で発表する機会を得ました。Django、CPython、Apache Airflowなど、Pythonベースの有名なオープンソースにセキュリティ貢献をした経験をもとに、「ハッカーの視点から見たDjango Framework」というテーマで発表しました。

特に、この場でCPythonへのコントリビュート経験をもとに、コアPython開発者であるナ・ドンヒさんと短い会話を交わしました。それが私にとって大きなモチベーションとなりました。後にドンヒさんがSteering Councilのメンバーに選出されたという知らせを聞き、自分のことのように嬉しかったのを覚えています。

四つ目、Security Contribution to Apache Airflow

Airflowは、Apache財団が管理するPythonベースのデータパイプラインおよびワークフロー管理プロジェクトです。このオープンソースプロジェクトで、2つのPost-authenticated RCEと1つのStored XSSの脆弱性を発見し、報告しました。

  • CVE-2024-39877: (Apache Airflow) DAG Author Code Execution possibility in airflow-scheduler
  • CVE-2024-45034: (Apache Airflow) Authenticated DAG authors could execute code on scheduler nodes
  • CVE-2024-39863: (Apache Airflow) Potential XSS Vulnerability

個人的には、オープンソースプロジェクトで初めてhigh-severityの脆弱性を発見し、報告できたことがとても意味深い経験となりました。また、Apache財団の迅速かつ専門的な脆弱性管理プロセスにも驚かされたことを覚えています。

五つ目、Ruby, Rails, and GitHub finally

私の長年の憧れであるOrange Tsaiさんのブログ記事がきっかけとなり、7月からGitHubやGitLabのソースコードの分析を始めました。GitHubはRailsフレームワークで構築されており、そのためRailsのソースコードを見ていたところ、いくつかの脆弱性を発見しました。

  • CVE-2024-41128: Possible ReDoS vulnerability in query parameter filtering in Action Dispatch
  • CVE-2024-47887: Possible ReDoS vulnerability in HTTP Token authentication in Action Controller

Railsのソースコードを分析しているうちに、「Rubyはどのように実装されているのだろう?」と気になり、Rubyのコードも見てみました。運よく、ビルトインのXMLパーシングライブラリにも小さな脆弱性を発見し、報告しました。

  • CVE-2024-41123: DoS vulnerabilities in REXML

上記3つの脆弱性以外にもいくつかの脆弱性を発見しましたが、まだ解決されていないため、この文章では公開しないことにします。

ただし、未公開の脆弱性の中には、インターネットに接続された任意のGitHub Enterpriseサーバーをダウンさせる可能性のあるものがありました。GitHub側でもこの懸念をセキュリティ上の脆弱性として認め、小さな報酬(GitHub Swag)を受け取りました。

Github Bounty Swag!

ちなみに、GitHubに有効なセキュリティ脆弱性を報告すると、GitHub Proの永久利用権を獲得できます!

六つ目、Security Contribution to Java Spring

Javaの大規模なWebフレームワークであるSpringで作成されたプログラムを分析しながら、動作を確認するためにソースコードを時々読んでいました。すると、運よくE-Tag機能を使用する際に発生する可能性のあるサービス停止の脆弱性を発見し、報告しました。

  • CVE-2024-38809: Spring Framework DoS via conditional HTTP request

七つ目、その他の主要な脆弱性の発見

これ以外にも、お話しするのが少し難しい脆弱性をいくつか発見しました。その中には、世界中で使われているサービスで見つけたものもありました。おそらく、オフェンシブセキュリティの分野で働いている方なら、誰でも知っているようなサービスだと思います。

2023年の私なら想像もできなかったような脆弱性だったので、この一連の経験を通じて、自分の能力に対して大きな自信がつきました。

また、Microsoftが所有するリポジトリでもhigh-severityの脆弱性を発見し、報告しましたが、まだ公開されていません。

八つ目、JLPT 取得

日本で活動しているオルタナティブ系や渋谷系のバンド音楽にハマったことがきっかけで、自然と日本語を学ぶようになりました。勉強を続けるうちに負けず嫌いな気持ちが芽生え、JLPT N5から始めて、N3の資格まで取得しました。

N2は本当に惜しく、あと5点足りずに不合格でしたが、現在は電話で日本語の授業を受けたり、継続的に勉強を続けています。その結果、今では自信を持って日本語を話せるレベルに達しました。

九つ目、2025年の決意

入隊前は、オフェンシブセキュリティの分野で自分がうまくやっていけるのか、とても不安でした。しかし、昨年は目立った成果を出すことができ、大きな自信がつきました。今年はオフェンシブセキュリティの分野に全力を注ぎ、真剣に取り組みたいと思います。

2025年には、以下の目標を達成したいと考えています。

  • ZDIに認められる脆弱性を発見する
  • GitHubやGitLabなどの開発・管理ソリューションの脆弱性を発見する
  • DjangoやRailsの脆弱性を発見し、パッチに貢献する
  • JLPT N1に合格する

軍隊では、自分の人生を振り返り、多くの人と関わる中でさまざまなことを学びました。特に、大きく気づいたことは、「継続」と「誠実さ」は必ず自分に返ってくるということです。これからも、コツコツと誠実に努力していきます。