X



【プログラム】コンパイルされたらもう分からん。ソースコードの中にトロイの木馬が仕込む方法とは [896590257]
■ このスレッドは過去ログ倉庫に格納されています
0001キャプチュード(愛知県) [US]
垢版 |
2021/11/17(水) 19:00:49.95ID:4POqGyID0●?PLT(21003)

見えない脆弱性をソースコードに埋め込む、プログラマーも欺く「トロイのソース」
2021.11.17 日経クロステック

プログラムに埋め込まれた脆弱性やマルウエア(コンピューターウイルス)などを見つける有効な手段の1つが、そのソースコードを丹念に調べること。
スキルのある開発者なら、ソースコードを調べることで異常に気づける。

だが、そういった開発者の目を欺く手法が発表された。ソースコードに細工を施せば、テキストエディターなどで表示されるソースコードの「見た目」を
変えられるというのだ。言い方を変えれば、目に見えない脆弱性を埋め込めるという。そんなことが可能なのだろうか。

■「トロイの木馬」のソースコード版
この新手法は、英ケンブリッジ大学の研究者らが2021年11月1日(現地時間)に発表した。「Trojan Source」と名付けられた。「Trojan Horse:トロイの木馬」にちなんだ命名だと考えられる。
ソースコードに仕込んだ脆弱性を、どのようにして開発者に気づかれないようにするのか。答えは単純。

■Unicodeを使う
「Unicodeの制御文字」を使ってソースコードの見た目を変えるのだ。Unicodeとは文字コードの一種。文字を扱うプログラムのほとんどが対応している。制御文字とは、ディスプレーやプリンター、
通信装置などに特別な動作をさせるための文字である。「文字」といっても、標準ではディスプレーなどには表示されない。そのほか1文字単位ではなくブロック単位で文字の表示を
入れ替える制御文字などもある。こういった制御文字をうまく組み合わせれば、脆弱性が埋め込まれたソースコードを、問題のないソースコードに見せかけることが可能になる。

■コメントや変数に忍ばせる
一般的なプログラミング言語では、ソースコードの任意の場所に制御文字を挿入できない。コンパイラーによる変換時(コンパイル時)にエラーが発生する。ただし、コメントと文字列は例外だ。
これらはコンパイラーによって解釈されないので、制御文字を含む任意の文字を入れられる。そこで、コメントや文字列に制御文字を入れることで、それらをソースコードの一部に見せかけたり、
ソースコードがコメントアウトされているように見せかけたりする。

https://xtech.nikkei.com/atcl/nxt/column/18/00676/111300092/
0082ドラゴンスクリュー(愛知県) [US]
垢版 |
2021/11/18(木) 08:39:12.40ID:c2G7YnD40
コンパイルしなくても動くPerl最高だよな
0084エルボーバット(東京都) [FR]
垢版 |
2021/11/18(木) 09:42:08.82ID:+qkBFUPB0
処理追い付かない時にインラインアセンブラで書く程度の知識しか持ってないけど、逆アセンブルされたヤツは意味不明すぎる
リコンパイルしてダンプリストのコンペア取る方が現実的
0085マスク剥ぎ(東京都) [CN]
垢版 |
2021/11/18(木) 09:43:24.32ID:78nEI0Ag0
>>こういった制御文字をうまく組み合わせれば

それが難しいんだよ
0086ファルコンアロー(静岡県) [KR]
垢版 |
2021/11/18(木) 09:45:51.19ID:m89lfs9a0
>>84
例えデバッグコンパイルしても、レジスタフル動員して効率の良い命令選択を行い、マルチパイプラインを考慮した命令配置に入れ替えられるんで、ヒトには理解しにくいコードになりますね。
最適化レベル上げるともうわからないw
0091アイアンクロー(SB-iPhone) [KR]
垢版 |
2021/11/19(金) 04:38:42.54ID:lTPiTd6u0
>>90
もうゼッパチの時代じゃないですよ、おじいちゃん
0092魔神風車固め(福島県) [US]
垢版 |
2021/11/19(金) 04:49:57.97ID:f6HS3Riw0
どんな管理してたら仕込まれるんだよアホか
0093頭突き(ジパング) [CZ]
垢版 |
2021/11/19(金) 11:09:46.75ID:d/OFOt3X0
もう全部のアプリをGithubで自前ビルドさせりゃええわ
ちょうどVisualStudio2022も出たしな
0094フェイスクラッシャー(静岡県) [KR]
垢版 |
2021/11/19(金) 11:42:50.10ID:ai3dSJfI0
>>92
レビユーないなら堂々と仕込めばいいワケで、レビユーはやるけど「わかるコードは指摘するけど、わからないコードはまあいいや、オッケー」で通る会社だろなwww
0097サッカーボールキック(ジパング) [DE]
垢版 |
2021/11/19(金) 12:53:35.42ID:eCMSuswC0
>>96
大正モダンっぽくてすき
0098膝十字固め(千葉県) [AU]
垢版 |
2021/11/19(金) 13:13:01.31ID:8ImWTDz50
>>19
日経だぞw
あのwilltyですら騙されて記事にする程度の技術知識しかない無能系が記者やってんだぞ
0102ニールキック(茸) [IR]
垢版 |
2021/11/19(金) 15:16:30.31ID:bd86nuky0
何のライブラリ呼び出してるかで結構わかるもんだよ
0105キドクラッチ(東京都) [FR]
垢版 |
2021/11/19(金) 15:22:11.20ID:EZL1gn3F0
ソースコードにいれんの??
0107アイアンフィンガーフロムヘル(ジパング) [HU]
垢版 |
2021/11/19(金) 15:30:05.12ID:r5HScxAX0
>>105
昔の環境しか知らんけどソースは呼び出す一行だけで
ウイルスのオブジェをメイクでリンクするくらいだよね
0108ローリングソバット(大阪府) [CH]
垢版 |
2021/11/19(金) 16:09:14.55ID:ADadLUdn0
言うても人間のやる事やからソースに違和感出るって
0110逆落とし(千葉県) [US]
垢版 |
2021/11/19(金) 16:22:15.66ID:NQIees9r0
>>29
それのソースは見たことないけど、自分の口座番号が書いてあるはずだからそれを発見されたら逮捕されると
わかってたはず。それを隠す特殊な方法使ったとしたらけっこう賢い。
0111逆落とし(千葉県) [US]
垢版 |
2021/11/19(金) 16:28:44.12ID:NQIees9r0
>>78
えーとね、アセンブラで書くと言っても当然書きやすいように工夫するんだよ。
マクロ使って書くとアセンブラでもCみたいな制御構文が書けるし、代入もMOVじゃなくて = で書けるようにして、
一見すると高級言語みたいなソースにすることができる。
0112スターダストプレス(香川県) [US]
垢版 |
2021/11/19(金) 16:43:47.96ID:KMS7GpsF0
>>105
データセクションに

.data
db ういるす
でコンパイルするって事かな
0113フェイスクラッシャー(静岡県) [KR]
垢版 |
2021/11/19(金) 16:45:35.35ID:ai3dSJfI0
>>110
>>29は結構有名な話だけど、その銀行のエンジニアである犯人は架空口座として特殊な名前(ZZZだったかな?)を作り、ここに、四捨五入で切り捨てられる額を振り込んでたんだけど、境界テストをしてたプログラマが毎回テストにかかる最終名称が「こんな名前の人いるんだ?」と不思議がったのが発端でバレた。
MMMならバレなかったかもしれないw
0115フェイスクラッシャー(静岡県) [KR]
垢版 |
2021/11/19(金) 17:37:12.14ID:ai3dSJfI0
>>114
アメリカの話で、名前欄が(適当に作ったんで)違和感あったのが発見の要因だったみたいだね。
0116キングコングニードロップ(京都府) [US]
垢版 |
2021/11/19(金) 17:44:08.45ID:9lx0FTRV0
よく分からんけどテキストエディターで開いたらコメント外になってるんなら
その時点で気がつくんじゃね?
0117ドラゴンスクリュー(東京都) [RU]
垢版 |
2021/11/19(金) 18:02:29.89ID:f7xSzHas0
「お金で買えるロシア人美女 一覧」がたまらん。これは注文したくなるわ

http://topi.tds7.net/iRvp/813005585.html
0118オリンピック予選スラム(茸) [CN]
垢版 |
2021/11/19(金) 18:59:51.99ID:gUmK0v4t0
8086 CPU のアセンブリ言語はニーモニック言語だった記憶

LB1
(処理コマンド)
LAD GR1,1,GR1
CPA GR1,N
JMI LB1

今のH8 CPU だとアセンブリ言語はC言語なんだっけな

main{}
{
int i:
for ( i=0: i<10: i++ ){
(処理コマンド)
}
}
0121フェイスクラッシャー(静岡県) [KR]
垢版 |
2021/11/19(金) 20:15:59.73ID:ai3dSJfI0
>>119
すっげえ昔に使っただけなので記憶の外なんだが、8086にLAD命令なんてあったっけ?

lbl:
 mov AX,10
 dec AX
 jnz lbl

なイメージ
0122ジャンピングカラテキック(京都府) [JP]
垢版 |
2021/11/19(金) 20:39:03.67ID:nM6DE/rt0
iniファイルを読み込むAPI関数があることを知らなかった人が
ご丁寧にiniファイルをOpenして引数で指定した項目を読み込むプログラムを自分で作ってるのを見たときはコーヒー吹いた。
0126フェイスクラッシャー(静岡県) [KR]
垢版 |
2021/11/19(金) 21:17:49.41ID:ai3dSJfI0
>>124
暗記モード。
CDがコール命令、FEが分岐かなんかw
覚えてるのはそんくらいかwww
0127フェイスクラッシャー(静岡県) [KR]
垢版 |
2021/11/19(金) 21:22:54.71ID:ai3dSJfI0
>>124
バグ見つけるとROMを外してROMライターに読み込ませた後に新しいROMを差し、ハンドアセンブルで修正して書き込んで再テスト。
取り外したROMは紫外線を当てて消去。

なんて時代は脳内がアセンブラだったけど、組み込みと言えど、いつしかICEに慣れ、それがJTAGになった頃にはハンドラも何もかもCだな。
(アセンブラ書くのは初期化処理位)
0128エクスプロイダー(ジパング) [DE]
垢版 |
2021/11/19(金) 21:26:58.45ID:vak46bXu0
00がnopだからROMでも取り敢えず潰せばnopになるのがパッチ当てるのに便利だった
0129メンマ(埼玉県) [ニダ]
垢版 |
2021/11/19(金) 21:59:45.58ID:Hn9h869d0
>>126
ブランクエリアの0FFhはRST 38hになるけど当時は意味がわからなかった
一種のソフトウェア割り込みでMS-DOSのint 21hみたいなものだったんだな
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況