
ゼロトラストのアンチフォレンジックHTTPクライアント。機密情報を消去。痕跡を断つ。ステルスタンクの中のCPR。👻
ゼロトラスト、アンチフォレンジックHTTPクライアント。秘密を消去し、痕跡を断つ。ステルスタンクのCPR。👻
BurnerNetはC++20のアンチフォレンジックHTTPクライアントです。ローカルマシンを完全には信頼できないアプリケーション向けに、流暢なCPRライクなAPIを提供します。RAMから秘密を物理的に消去し、実行痕跡を断ち切ることで、スキャナやデバッガからロジックを隠します。
通常のHTTP向けには慣れたホスト互換のデフォルトを、敵対的な環境向けには明示的なHardenedプロファイルを提供します。どちらのパスも短命なクライアントを推奨し、高度な信頼はアプリケーションが所有します。
BurnerNetでダウンロードしたペイロードを保護したい場合は、RipStop Codec をチェックしてください。インメモリアセットのスクランブル解除に役立ちます。
Principles • Getting Started • Integration Paths • Security Reality
| 領域 | BurnerNet |
|---|---|
| 言語 | C++20 |
| プラットフォーム | Windows x64/x86(第一級)、Linux(確認済み) |
| トランスポート | libcurlベースのHTTP(S) |
| メモリ衛生 | 安全な消去ユーティリティと消去アロケータ |
| フォレンジック衛生 | BurnerNet管理のトランスポート状態全体での自動ヒープ/スタックスクラビング |
| 動的解析 | コールスタック分離により、コンシューマとトランスポートの間のリンクを断つことができます |
| ビルド強化 | 診断文字列削除(オプション)、難読化リテラル、強化ビルドでのC++ランタイムメタデータ削減 |
| ランタイム強化 | DoHサポート、プロバイダベースのシークレット、より厳格な信頼制御 |
| 統合 | CMakeまたはVisual Studioソースドロップ |
通常のHTTPクライアントが環境に対して信頼しすぎている場合にBurnerNetを使用します。
次の場合に役立ちます:
BurnerNetは次のようなプロジェクトに適しています:
libcurlおよびOpenSSLバックエンドのフローの内部メモリ割り当てパスをフックします。機密性の高いトランスポートバッファは、BurnerNet管理のライフタイムを離れる際に消去されます。この衛生状態は、ドキュメントに記載された監査済み構成において、WindowsとLinuxの両方で検証されています。WithResponseVerifier(...) を介してコード内に残ります。BURNERNET_DIAGNOSTIC_STRINGS=0 を設定できるため、ErrorCodeToString(...) はシンボリックなエラー名を埋め込まずに安定した E<番号> 値を返します。BURNERNET_HARDEN_IMPORTS=1 により、Windows上のBurnerNetの KernelResolver パスを使用して、インポートテーブルに直接公開する代わりに、ランタイム依存関係を動的に解決できます。.WithStackIsolation(true) で有効にすると、ライブラリはトランスポートライフサイクルをデタッチされたワーカースレッドで実行します。これにより、呼び出し元のコールスタックを物理的に切断し、アプリケーションロジックの直接的なトップダウントレースを減らすことができます。BurnerNetは、インポート軽量な強化モードを主張するだけでなく、特定のテスト構成に関する監査ノートも同梱しています。Windows x64 Releaseで BURNERNET_HARDEN_IMPORTS=ON の監査において:
libcurl.dll、ws2_32.dll、bcrypt.dll、crypt32.dll のエントリは観測されませんでした。監査の詳細と方法論:
最速のパス:
<burner/net.h> をインクルードします。最小限の例:
#include <iostream>
#include <burner/net.h>
int main() {
burner::net::Client client;
if (!client.IsReady()) {
std::cerr << burner::net::ErrorCodeToString(client.InitError()) << '\n';
return 1;
}
const auto response = client
.Get("https://example.com")
.WithHeader("Accept", "text/html")
.WithTimeoutSeconds(10)
.Send();
if (!response.TransportOk()) {
std::cerr << burner::net::ErrorCodeToString(response.transport_error) << '\n';
return 1;
}
std::cout << "HTTP " << response.status_code << '\n';
return 0;
}
Client はStandardデフォルトを使用します:システムCA、DNS、プロキシ、TLSピアおよびホスト名検証が有効です。WithCasualDefaults() はStandard互換性エイリアスとして引き続き利用可能です。
セキュリティ重視のトラフィックには、Hardenedプロファイルを使用します。Build() はリクエスト前に不足している制御を拒否します:
auto secure = burner::net::ClientBuilder(burner::net::ClientProfile::Hardened)
.WithMtlsProvider(ProvideMtlsCredentials)
.WithSecurityPolicy(AppSecurityPolicy{})
.WithDnsFallback(burner::net::DnsMode::Doh,
"https://resolver.example/dns-query",
"Primary DoH")
.AllowSystemDns(true) // explicit fallback, after DoH
.WithResponseVerifier(VerifySignedResponse)
.Build();
Hardenedでは、ピアおよびホスト名検証、スタック分離、DoHファーストルーティング、アプリレスポンス検証、アプリ所有のトラストマウントが必要です。永続的な WithMtls(...) 資格情報は拒否されます。WithMtlsProvider(...) を使用してください。
下流のプロジェクトが既にCMakeを使用していて、最もクリーンな依存関係管理パスを希望する場合に使用します。
ドキュメント:
環境がMSBuildファーストであるか、BurnerNetを .vcxproj 内で直接コンパイルしたい場合に使用します。
ドキュメント:
ランタイム依存関係の露出を減らし、ブートストラップローディングを明示的に管理する準備ができている場合に使用します。
有効化:
BURNERNET_HARDEN_IMPORTS=1KernelResolver パスを使用して、よりインポート軽量なランタイムフットプリントをサポート参考:
Linuxサポート: BurnerNetはLinux上で完全なフォレンジックパリティ(メモリ消去とスタック分離)を提供します。ビルド手順については docs/LINUX_USAGE.md を参照してください。
推奨されるデフォルト:
例:
ドキュメント:
libcurl 7.87.0+ および OpenSSL ヘッダBurnerNetは、攻撃コストをプロフェッショナルレベルに引き上げるために設計された強化レイヤーです。私たちは、ステルスは表面的なものではなく、アーキテクチャに基づくべきであるという原則に基づいています。
攻撃者がソースコードを持っていれば、BurnerNetを迂回できるのでしょうか? BurnerNetのソースコードを知っていることは、それだけで全てのダウンストリームアプリケーションへのマスターキーにはなりません。BurnerNetはKerckhoffsの原理に従っています。ライブラリは、アプリ固有のトラストアンカー(HMACシークレット、ピン留めキー、UIロジック、ポリシーフック)がアプリケーションによって所有されたままになるように設計されています。トランスポート層を知っていても、特定のセキュリティフローを自動的に普遍的に迂回できるわけではありません。
| 項目 | 典型的なHTTPスタック | BurnerNet |
|---|
| クライアントの寿命 | 共有され、長寿命であることが多い | 使い捨てクライアントとバーストスコープでの使用向けに設計 |
| 機密値 | 秘密が設定やメモリに必要以上に留まることが多い | プロバイダコールバックが使用直前に秘密を取得 |
| DNSと信頼 | 通常、ローカルリゾルバとホストデフォルトを継承 | DoHフォールバックやピン留めキーを含む、より厳格な信頼制御をサポート |
| 検証 | アプリ固有の整合性チェックは後付けされることが多い | プリフライト、トランスポート、レスポンス検証フックと連携するよう設計 |