
最近公開されたホモグリフ攻撃の脆弱性を利用して悪意のあるファイルを生成します。この脆弱性は、少なくとも C、C++、C#、Go、Python、Rust、JS などで発見されています。
cve.mitre.org より引用
Unicode仕様14.0までの文字定義に問題が発見されました。この仕様により、攻撃者はホモグリフを使って、視覚的には対象の識別子と同一に見える関数名などのソースコード識別子を生成できます。攻撃者はこれを利用して、下流ソフトウェアで欺瞞的に呼び出される上流ソフトウェア依存関係内の敵対的識別子定義を介してコードを注入できます。
ホモグリフの生データ(homoglyphs.txt)はこちらから取得し、イタリック体や類似しない文字を除外するようデータを整理しました。
ケンブリッジ大学のオリジナルソースを参照してください:
https://www.trojansource.codes/trojan-source.pdf
python3 codegen.py [-h] [-i INFILE] [-o OUTFILE] [-r] [-a]
| 引数 | 長い引数 | パラメータ | 説明 |
|---|---|---|---|
| -h | --help | なし | このヘルプメッセージを表示して終了 |
| -i | --infile | INFILE | ホモグリフのプレースホルダーを含む入力ファイル |
| -o | --outfile | OUTFILE | 最終コードを保存する出力ファイル |
| -r | --random | なし | ランダムなホモグリフを選択するフラグ。未設定の場合は最初のものを使用 |
| -a | --about | なし | 概要テキストを表示 |
例は私が作成したものか、参照PDFから引用したものです。これらの例を実行するには、必要な引数を指定して codegen.py を実行してください:
python3 codegen.py -i infile.xyz -o outfile.xyz を実行し、outfile.xyz を実行またはコンパイルしてください。
現在サポートされているのは数字 [0-9] と、小文字・大文字の英字 [a-zA-Z] のみです。テンプレート内のサポートされている文字を(ランダムな)ホモグリフに置き換えるには、その文字をドル記号 $ で囲むだけです。テンプレートのイメージを掴むには、例を参照してください。