Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/jepsen-io/duckdb
脆弱性分析論文と研究学習と教育データベースセキュリティ異常検知
GitHubjepsen-io/duckdb

duckdb

DuckDB向けのJepsenベースのトランザクション正確性テストフレームワーク。ランダム化ワークロードとElleチェッカーを使用して、G2-itemやSSI違反などの分離異常を検出します。

リポジトリを見る
5255ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Jepsen DuckDB テスト

DucKDBデータベース向けのJepsenテストです。リモートクラスタではなくローカルで実行されます。テストはローカルのDuckDBファイルを開く一連のローカルプロセスを生成し、STDIN/STDOUTを介してそれらと対話します。

これは初期のプロトタイプです。起動してトランザクションを実行し、正しさをチェックしてバグを報告しますが、それらのバグが本物かどうかは確かではありません。

インストール

JDK(21以降)、Git、Gnuplot、Graphviz、およびLeiningenが必要です。ほとんどのJepsenテストとは異なり、これは完全にローカルで実行されます。マシンのクラスタやSSHキーなどは必要ありません。

Debian

root@kitploit:~
sudo apt install openjdk leiningen gnuplot graphviz

OS X

root@kitploit:~
brew install openjdk leiningen gnuplot graphviz

使用法

テストを実行するには、次のコマンドを試してください:

root@kitploit:~
lein run test

DuckDBは(私の推測では)デフォルトでStrong SIを提供しており、テストはそれをチェックします。ただし、Repeatable Read違反であるG2-itemは許可されています。これを示すには、次のコマンドを試してください:

root@kitploit:~
lein run test --time-limit 10 --expected-consistency-model serializable --max-writes-per-key 8

テストを10秒間実行し、Serializability違反を探し、(小さく読みやすい例を生成するために)キーあたり8要素のみ書き込むように指定しています。G2-itemの例は store/latest/elle/G2-item で確認できるはずです。

いくつかの調整オプションが利用可能です。各種オプションのヘルプは lein run test --help で確認できます。

テスト結果は store/<test-name>/<date>/ に書き込まれ、store/latest としてシンボリックリンクされます。これらのテストディレクトリはそれぞれ自己完結しており、コピー、tarアーカイブ、後で分析、削除などが可能です。結果を閲覧するためにWebサーバーを実行することもできます。

root@kitploit:~
lein run serve

REPLが利用可能です。lein repl を参照してください。

構造

テストハーネスはこのディレクトリにあります。プロジェクトファイルは project.clj、ソースは src/ などにあります。

テストハーネスは、DuckDBライブラリを埋め込み、それに対してトランザクションを実行する別のプログラム「ローカルノード」を実行します。テストハーネスは、特定のワークロードに対してランダムなトランザクションを生成し、HTTP経由でローカルノードに送信し、それらのトランザクションの結果を記録し、最後にさまざまなトランザクション異常をチェックします。Elleチェッカー(https://github.com/jepsen-io/elle)を使用して、Strong Snapshot Isolationを探します。

ローカルノードには小さなHTTPサーバーがあり、テストハーネスから抽象トランザクション(例:「キーxを読み取って、yを5に設定」)を受け取り、DuckDB JDBCドライバーに対して実行されるトランザクションに変換します。

1種類の障害を注入できます:プロセスの強制終了です。

ワークロード

2つのワークロードがあります。

1つ目は append で、リストに一意の整数を追加し、そのリストの内容を読み取るトランザクションを実行します。各リストは単一の行に存在し、複数のテーブルに分散しています。リストは主キーまたはインデックスなしのセカンダリキーで識別されます。リストはテキストフィールドまたはDuckDBのINTEGER{ ] リストとしてエンコードされます。変更はINSERT ON CONFLICT UPDATEまたはMERGE INTOで行われます。

2つ目は fkey-register で、整数レジスタの読み取りと書き込みを行います。DuckDBでは、これらのレジスタを2つのテーブルに格納します。論理テーブルはキーを物理IDにマッピングし、外部キーを持ちます。物理テーブルは物理IDを値にマッピングします。読み取りは2つのテーブル間の単純なJOINを使用します。書き込みは、物理行を更新するか、新しい物理行を作成して論理ポインタを変更することによって実行されます。このワークロードは本日ようやく起動できました。動作はしますが、まだ洗練されていません。

ライセンス

Copyright © 2026 Jepens, LLC

このプログラムおよび付随する資料は、https://www.eclipse.org/legal/epl-2.0 で入手可能なEclipse Public License 2.0の条件に基づいて提供されます。

このソースコードは、Eclipse Public License v. 2.0に定められた利用可能性の条件が満たされた場合、以下のセカンダリライセンスの条件でも利用可能になる場合があります:フリーソフトウェア財団によって公開されたGNU General Public License、バージョン2、または(オプションで)それ以降のバージョン。ただし、https://www.gnu.org/software/classpath/license.html で入手可能なGNU Classpath Exceptionが適用されます。

ツールをダウンロード