Kubernetes CNI plugin and network load balancer in Rust

こんにちは。

葬送のフリーレンのアニメが終了して途方に暮れています。 いいアニメでした。 続編に期待しています。

今回はしばらく趣味で開発している Kubernetes 用の CNI plugin とネットワークロードバランサ sart を紹介します。

リポジトリはこちらになります。 すべて Rust で実装しています。(e2e テストだけ Go 言語の Ginkgo を使っています。)

荒削りなソフトウェアですが、動かしてみたりスターをもらえると喜びます。(バグがたくさんありそう)

また、開発中のプロジェクトなので API の仕様が変更になる可能性は大いにあります。

[Read More]

RustのCNI Pluginライブラリを作った

こんにちは。 葬送のフリーレンが2クール連続で歓喜しています。

今回はRust用のCNI Pluginライブラリを作って公開したので紹介します。

リポジトリとCrates.io

rscniという名前でGithub及びCrates.ioに公開しています。 ご興味のある方は使ってみてください。 バグ報告お待ちしています。

[Read More]
network  cni  rust  oss 

XDP入門

こんにちは.閃光のハサウェイが配信開始されたので早速視聴しました.メッサーがいいですね.

前回もXDP関連の話題でしたが,今回はXDPに入門します. XDPを学習する際のロードマップやつまりどころの解消になればと思います.

2023-12-30 加筆

本記事を公開して約 2 年が経過しました. この加筆で古くなってしまった情報を修正しています. 差分は このブログの Github の PR を見てください.

この 2 年間で eBPF 及び XDP への注目はさらに高まったように感じます. 取得できる情報も充実してきました. 特に O’reilly より発売された 入門 eBPF(原書: Learning eBPF) は非常に充実した内容になっています. 日本語でこれらの情報に触れられるようになったことは大変ありがたいです.

2023 年は個人的にも XDP に関して新たに発展的なコンテンツを作成しました.

そちらも触っていただければと思います.

[Read More]

Goのcilium/ebpfでXdpcapを使う

こんにちは.学生生活も後少しとなってしまいました.悲しいです. 今回はxdpcapというツールについてです.xdpcapの使用に関する資料が日本語では非常に少なかったので使い方を紹介します.

[Read More]

Linux Network Namespaceを使用したネットワークシミュレータの紹介

こんにちは.12月に入り非常に寒い日々が続いています.個人的には10月から続いていたセキュリティキャンプが一段落して少し余裕が出てきました. また,この記事はSecHack365 Advent Calendar 2020の記事として書いています. 今回は趣味で開発しているツールを紹介します.

[Read More]

XDPが実行できるVagrantfileを探して

こんにちは.大学院の後期授業も開始され,さらに多数イベントが同時並行で開催されており非常に忙しい日々を過ごしています.最近は将棋の勉強にも精を出しています.弱いですが. 今回はXDPが実行できるVMをVagrantで作ります. 先日GMOペパボさんのeBPFインターンシップに参加させていただいて以降eBPF関連の技術に興味を持っておりXDPに手を出してみます.

[Read More]
xdp  ebpf  vagrant 

SoftEther VPN Server APIのGo版を作った

こんにちは.最近は学校の課題や事務手続きやらインターンどうしようかやらで非常に忙しいです.それに加えてSecHack365に参加することとなりこれはうれしい悲鳴ですがさらに忙しいです.(嬉しい) さて今回はSoftEtherについてです.学生などにはあまり馴染みがなさげなソフトですが,僕は研究でこのソフトに非常にお世話になっております.このソフトウェアはとてもすごいんですが,マネージャーソフトがwindows用しかなくてCUIベースの操作が大変なのでWebベースのマネージャーを作ろうと思い立ちました.そこでまずGo言語でAPIのラッパーを作成しました.

[Read More]

SECCON Beginners CTF 2020解けた問題 writeup

こんにちは.福岡では緊急事態宣言は解除されましたが授業もアルバイト,ゼミもリモートのため相変わらず外出しない生活を送っています.

ctf4b

ctf4bに大学の研究室のメンバーで参加してきました.昨年は全く手が出ませんでしたが今年は結構楽しくCTFができました.(解けたとは言ってない.) 得意分野と言える分野もないので雑食でいろいろな分野を覗いてました. 僕はreadme,beginner's stack,tweetstoreをときました.また,時間内にフラグは得られませんでしたが終了後に気づいたunzipも記載します. (その他の問題も解けたら追記しようかな) では,

https://www.seccon.jp/2019/seccon_beginners/seccon_beginners_ctf_2020_5_23_1400.html

追記

pwnのelementary stackについてポストしました.

readme

Miscの問題です.問題サーバで動いているコードが配布されます.

#!/usr/bin/env python3
import os

assert os.path.isfile('/home/ctf/flag') # readme

if __name__ == '__main__':
    path = input("File: ")
    if not os.path.exists(path):
        exit("[-] File not found")
    if not os.path.isfile(path):
        exit("[-] Not a file")
    if '/' != path[0]:
        exit("[-] Use absolute path")
    if 'ctf' in path:
        exit("[-] Path not allowed")
    try:
        print(open(path, 'r').read())
    except:
        exit("[-] Permission denied")

ncコマンドでサーバに接続するとFile: と出てきてパスを入力します./home/ctf/flagを開くことができればフラグが得られそうです. しかし.入力文字列にはいくつかの制限があります.

  • 指定したパスが存在する
  • 指定したパスがファイルである
  • 指定したパスが絶対パスである
  • 指定されたパスにctfという文字列が存在しない
  • 指定したファイルが開ける

条件は以上です. ctfが許されないので/home/ctf/flagは当然の如く失敗します. ctfという文字列を使用せずにどの様にしてパスを取得するかがポイントです. 現在のプロセスが動いているカレントディレクトリを取得することができれば良さげです. そこで登場するのが/procです. /procファイルシステムは特殊なディレクトリでシステムの情報や動作しているプロセスの情報を取得することができます. あるプロセスに関する情報が欲しい場合は/proc/[pid]を参照します.自身のプロセスの情報を得たい場合は/proc/selfです. /procは面白いのでぜひいろいろ覗いてみてください. さて,/proc/self/cwdがプロセス自身のカレントディレクトリへのシンボリックリンクとなっています.が,ここで/proc/self/cwdを入れてもファイルじゃないのでダメです.そこで,/proc/self/environを入力してみます.すると環境変数がいっぱい出てきます.その中にPWD=/home/ctf/serverが見つかりました. このプロセスは/home/ctf/serverで動いてそうですね.

[Read More]
ctf  ctf4b  seccon  pwn  web 

自作コンテナランタイムでつまずいてる話

こんにちは.緊急事態宣言がのびたので相変わらずの外出自粛中です.最近は外出自粛にも少し慣れましたがやはり退屈です.僕は作業中のBGMとして何度か見たことのあるアニメなどを流しているんですがそれらのストックも無くなってきています.ループしようかな.ちなみにおすすめはガンダムUCですね.音楽が素晴らしいですし,SFアニメはモチベが上がっていいです. さて,今回は自作コンテナランタイムに挑戦したという話です.前回のポストではruncを使ってみましたが,今回はruncを参考に挑戦してみました.

ちなみにコード書いて試してたときにrm -rfで書いてたコード全消去して萎えました.

gitで管理するのって大事ですね. リポジトリはこちら

タイトルについて

タイトルにつまずいているとつけましたが,つまずいてます.長い間同じ箇所でエラーがでて前に進めていません. 僕の魂の叫びがこちら.

[Read More]