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/
0002キャプチュード(愛知県) [US]
垢版 |
2021/11/17(水) 19:01:05.09ID:4POqGyID0?PLT(20003)

>>1の続き
https://cdn-xtech.nikkei.com/atcl/nxt/column/18/00676/111300092/c1.png
C言語によるTrojan Sourceの例。これは実際のソースコード。色が付いているのが制御文字。
制御文字はすべてコメントに収められている。
https://cdn-xtech.nikkei.com/atcl/nxt/column/18/00676/111300092/c2.png
上のソースコードをテキストエディターなどで表示した例。制御文字により、実際には
コメント中にある条件文「if ( isAdmin )」がコードに含まれているように見える。
0007ナガタロックII(静岡県) [AU]
垢版 |
2021/11/17(水) 19:04:17.17ID:a6ZZCx/D0
10 INPUT A
20 INPUT B
30 C=A+B
40 END
0009ニーリフト(長野県) [US]
垢版 |
2021/11/17(水) 19:06:14.72ID:CtFTldoJ0
>>7
Cの出番がなくてかわいそう(小並感
0010ダイビングフットスタンプ(光) [US]
垢版 |
2021/11/17(水) 19:06:17.76ID:Pt/TACfV0
>>6
それ書こうと思ったのに!
0011セントーン(ジパング) [JP]
垢版 |
2021/11/17(水) 19:06:17.85ID:lA86SYO60
Ken ThompsonのReflections on Trusting Trustを読め
日本語の解説も多い
0012アルゼンチンバックブリーカー(茸) [ニダ]
垢版 |
2021/11/17(水) 19:07:11.39ID:dB/XweRw0
コンパイルダーオン
0014毒霧(香川県) [ニダ]
垢版 |
2021/11/17(水) 19:07:58.89ID:2EDgJOHz0
エスケープシーケンス!
0016閃光妖術(茸) [US]
垢版 |
2021/11/17(水) 19:09:34.39ID:z1r7pLrF0
スレタイの接続詞からしっかりしろw
0019セントーン(神奈川県) [US]
垢版 |
2021/11/17(水) 19:13:48.00ID:ctbXP0260
ソースコードにトロイやマルウェアを入れるなんて開発者ぐらいしか出来んと思うけどw
0020クロイツラス(茸) [CN]
垢版 |
2021/11/17(水) 19:14:38.29ID:t1tjaAF/0
バレても饅頭で揉み消すってこと?
0021閃光妖術(兵庫県) [GB]
垢版 |
2021/11/17(水) 19:18:44.43ID:kgXj6AJt0
ロシア製のクラック版とかにつかわれてるんだろうな
つまり割るなってことだ
0022フランケンシュタイナー(静岡県) [VN]
垢版 |
2021/11/17(水) 19:26:56.07ID:YC+2SH/J0
逆アセンブラして読むに決まってるだろ。
ナメちゃいかんよw
0023毒霧(ジパング) [ニダ]
垢版 |
2021/11/17(水) 19:27:33.32ID:qlalKW6C0
>>21
昔はWinのクラックバージョンとかに仕込まれまくってたんだろうな
0026腕ひしぎ十字固め(東京都) [ニダ]
垢版 |
2021/11/17(水) 19:33:04.06ID:f4XaFiiw0
昔、RMS尊師がCのコンパイラに入れとけば誰にもバレないとドヤ顔で言ってたぞ
0028カーフブランディング(光) [US]
垢版 |
2021/11/17(水) 19:37:50.70ID:u0VVnRX70
>>7
10 INPUT A
20 INPUT B
30 PRINT C
40 END
0029張り手(ジパング) [CN]
垢版 |
2021/11/17(水) 19:39:33.00ID:8TIqg+/A0
>>25
有名な話だけど
昔、客の口座の計算されて消滅する端数を
全部自分の口座に送金するプログラム仕込んだ奴が居た
0034ハイキック(日本のどこか) [JP]
垢版 |
2021/11/17(水) 19:44:10.07ID:vCD2aTyQ0
脳みそこねこね
0035ダブルニードロップ(神奈川県) [US]
垢版 |
2021/11/17(水) 19:46:44.56ID:CPkK+KoO0
逆アセすればいいじゃん。そのプログラムで使わない
ような関数呼んでたり、ファイルパスの文字列あったり
したら怪しいわけで(´・ω・`)
0037リキラリアット(SB-iPhone) [SE]
垢版 |
2021/11/17(水) 19:50:53.96ID:OFtkXEmi0
>>35
アセンブラ読める人材どれだけいるんだよ
0039キャプチュード(SB-Android) [CN]
垢版 |
2021/11/17(水) 19:55:22.25ID:BeE8eQoS0
いまどきはGithubから怪しいコード引っ張ってきて
動いたー、とかやってるビギナーがほとんどだろ。
いくらでも混入のリスクはある。
0040エルボードロップ(SB-Android) [ニダ]
垢版 |
2021/11/17(水) 20:03:39.98ID:xaxmVFYm0
テキストエディタが制御文字に対応し過ぎなのがまずいんかね
プログラミング用のエディタなら制御文字なんてその機能は無視して絵や記号で表示するだけにすればいいのに
0041アトミックドロップ(光) [ニダ]
垢版 |
2021/11/17(水) 20:10:48.47ID:Do1xU65b0
0043フェイスクラッシャー(愛知県) [EU]
垢版 |
2021/11/17(水) 20:12:26.96ID:ZQjocbHd0
結局ソースの解析しないとわからんのよ。
うだうだ言う前に怪しいソフトは使わないのが吉。
0045エルボーバット(群馬県) [ID]
垢版 |
2021/11/17(水) 20:13:24.68ID:nW53XIKt0
色気で魔物を騙す!
0047フェイスクラッシャー(愛知県) [EU]
垢版 |
2021/11/17(水) 20:13:58.97ID:ZQjocbHd0
>>37
俺読めるけど絶対に読みたくない。東京から
伊豆までチャリで行けって言われてるようなもん。
0048フェイスクラッシャー(愛知県) [EU]
垢版 |
2021/11/17(水) 20:15:06.59ID:ZQjocbHd0
>>32
それは無い。ウィルスだからそれww
0050魔神風車固め(岐阜県) [US]
垢版 |
2021/11/17(水) 20:15:35.00ID:4jC3Q8Eq0
のーみそこねこねコンパイル
0051アイアンクロー(東京都) [IT]
垢版 |
2021/11/17(水) 20:16:36.92ID:A4B7fPe+0
確かにコメントなら楽に仕込めるね
>>31
そんななら笑って許せる
怖いのは情報の流出
安全にかかわる
0052アンクルホールド(茸) [JP]
垢版 |
2021/11/17(水) 20:18:38.06ID:NpObp4Jy0
第2リール停止後にレバー逆押し3回やってからマックスベット叩いて第3リール叩くと有利区間ランプ消えるで
0053張り手(東京都) [ヌコ]
垢版 |
2021/11/17(水) 20:19:53.55ID:Zxq/zByp0
組み込みのitronとか
ほぼブラックボックス的に使うミドルウェア
この辺りに仕込まれてたらIoT関連死亡だな
0055ビッグブーツ(茸) [ニダ]
垢版 |
2021/11/17(水) 20:23:43.44ID:1UJy3Hyx0
ガチでこういうセキュリティ仕事にしてたが
今のアセンブラってもう読めねえ
ebxまでで限界
rbxにxmmだのもうアセンブラを生で読むの無理ゲーすぎ
AIのパターンマッチでバイナリから怪しいバイト列とかを検出するのがあるから最近じゃそういうので検出するしかないと思うわ
そもそも制御コード入れてもcui系のエディタだと^[[何とかにエスケープされるとおもうが設定次第なんかな
最近のelectronベースのエディタは騙せそうね
0057張り手(ジパング) [CN]
垢版 |
2021/11/17(水) 20:42:36.54ID:8TIqg+/A0
>>56
OSやBIOSに組み込まれてる
某国製PC…
0058ストマッククロー(千葉県) [GB]
垢版 |
2021/11/17(水) 20:47:36.94ID:9uurjlQn0
だからビルドしないで動くパイロンとかに移行しようとしてるのに
今のシステムにこだわる奴多いんだよな
0059イス攻撃(東京都) [US]
垢版 |
2021/11/17(水) 20:50:23.80ID:QI25lp3E0
バイナリでデータ列として埋め込む
0061フェイスクラッシャー(茸) [ニダ]
垢版 |
2021/11/17(水) 21:22:55.39ID:TJL9QGOB0
>>37
常識的に考えてやる意味がないw
苦行マゾの類いでも手を出さない
0062ミッドナイトエクスプレス(茸) [CN]
垢版 |
2021/11/17(水) 21:24:55.82ID:3TdN9Iz40
中国に外注するとやられそう
0064ニーリフト(長野県) [US]
垢版 |
2021/11/17(水) 21:37:05.66ID:CtFTldoJ0
>>58
事故ってて草
0065ファイヤーバードスプラッシュ(静岡県) [US]
垢版 |
2021/11/17(水) 21:38:08.72ID:OiMi9R3U0
>>58
インタープリタでも関係ねーわ
0068膝十字固め(北海道) [US]
垢版 |
2021/11/17(水) 22:00:00.11ID:iVsPWgsv0
>>60
1枚目の画像みたく制御文字も表示すれば解決
0070テキサスクローバーホールド(神奈川県) [US]
垢版 |
2021/11/17(水) 22:05:51.75ID:og5GnNae0
「トロイの木馬が仕込む」

素で日本語文法分かってなさそうな誤字なのが怖い
0071アトミックドロップ(茸) [ニダ]
垢版 |
2021/11/17(水) 23:21:33.78ID:aKSmpRYG0
機械語を話せるサイボーグプログラマなら判別できるんじゃねえか?
0072ビッグブーツ(北海道) [ニダ]
垢版 |
2021/11/18(木) 00:06:12.66ID:8MiruR0t0
>>32
コンパイラに仕込むのは大昔からあるよ
0077ウエスタンラリアット(山梨県) [GB]
垢版 |
2021/11/18(木) 08:05:03.93ID:My+8xCpp0
ミネソタ大が実験で意図的に、脆弱性含んだパッチをlinuxカーネルコミュニティに送付したらバレて
コミュニティからbanとか今年あったからなぁ。

composerやらnpmやらupdateで降ってきたパッケージに難読化したコード仕込まれてても
こんなん気付かんよなぁと毎度思う。
0078クロイツラス(大阪府) [US]
垢版 |
2021/11/18(木) 08:08:03.58ID:KtlVp7o80
>>37
昔読んだ小説にアセンブラで直接プログラミングするキャラいたな
大天才って設定だったから普通の人間には無理だろな
0080ファルコンアロー(静岡県) [KR]
垢版 |
2021/11/18(木) 08:23:32.56ID:m89lfs9a0
>>78
組み込み制御だけど、今でも初期化モジュールはアセンブラだよ。

マイコンが立ち上がった直後はC言語がまだ使えないんで、アセンブラで書くしかない。
クロックやデバイスやスタックなどを一通り設定すると、コンパイラメーカーが提供してるC言語の初期化モジュールをコールできるんで、その後はCで書ける。
昨今はCで書いた方が速度的に早いんで、割り込み処理であってもCで書いてる。

アセンブラと言っても初期化処理では凝った処理は無いし、過去資産を修正するだけだけどね。
0081ファルコンアロー(静岡県) [KR]
垢版 |
2021/11/18(木) 08:37:21.29ID:m89lfs9a0
>>77
コードレビューもそうだけど、よくわからないコードを「わからないけどいいや」で通すことは無いし、ベテランであるレビュアー(レビューする人)が理解できないコードは将来的なメンテを考慮してNGにする。

あとアセンブラが必要な処理はアセンブラでちゃんと書く。>>80
その方が異なるマイコンに移植する時が「これは使えんな」とわかりやすいw

少なくても>>2のコードがレビユーを通ることは無い。
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みたいなものだったんだな
■ このスレッドは過去ログ倉庫に格納されています

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