1:キャプチュード(愛知県) [US]:2021/11/17(水) 19:00:49.95 ID:4POqGyID0 BE:896590257-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/

 

2:キャプチュード(愛知県) [US]:2021/11/17(水) 19:01:05.09 ID:4POqGyID0 BE:896590257-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 )」がコードに含まれているように見える。

 

33:ときめきメモリアル(神奈川県) [KR]:2021/11/17(水) 19:43:27.70 ID:rClr5po/0

>>2
こんな怪しいコメントレビューとおんねえわw
どんだけ低レベルな現場だよ


13:ハイキック(茸) [DE]:2021/11/17(水) 19:07:37.13 ID:kIo48R930


プログラム自身を書き換えればいい

 

18:ミドルキック(京都府) [TW]:2021/11/17(水) 19:13:25.21 ID:7+34hBAB0


怪しいと思ったら逆コンパイルせんの

 

19:セントーン(神奈川県) [US]:2021/11/17(水) 19:13:48.00 ID:ctbXP0260


ソースコードにトロイやマルウェアを入れるなんて開発者ぐらいしか出来んと思うけどw

 

25:マシンガンチョップ(茸) [KR]:2021/11/17(水) 19:32:53.23 ID:C/CYvufO0

>>19
パチンコとか銀行関係に仕込めりゃ儲かるやん


29:張り手(ジパング) [CN]:2021/11/17(水) 19:39:33.00 ID:8TIqg+/A0

>>25
有名な話だけど
昔、客の口座の計算されて消滅する端数を
全部自分の口座に送金するプログラム仕込んだ奴が居た


22:フランケンシュタイナー(静岡県) [VN]:2021/11/17(水) 19:26:56.07 ID:YC+2SH/J0


逆アセンブラして読むに決まってるだろ。
ナメちゃいかんよw

 

21:閃光妖術(兵庫県) [GB]:2021/11/17(水) 19:18:44.43 ID:kgXj6AJt0


ロシア製のクラック版とかにつかわれてるんだろうな
つまり割るなってことだ

 

23:毒霧(ジパング) [ニダ]:2021/11/17(水) 19:27:33.32 ID:qlalKW6C0

>>21
昔はWinのクラックバージョンとかに仕込まれまくってたんだろうな


30:チキンウィングフェースロック(東京都) [CO]:2021/11/17(水) 19:40:46.56 ID:VsDX+3Pr0


複雑なことする必要はなくてちょっとセキュリティホールを作っとけばいいんだろうな。

 

31:リバースネックブリーカー(やわらか銀行) [US]:2021/11/17(水) 19:42:14.66 ID:eJW2g+Fl0


裏でマイニングさせられるらしいな

 

51:アイアンクロー(東京都) [IT]:2021/11/17(水) 20:16:36.92 ID:A4B7fPe+0

確かにコメントなら楽に仕込めるね
>>31
そんななら笑って許せる
怖いのは情報の流出
安全にかかわる


39:キャプチュード(SB-Android) [CN]:2021/11/17(水) 19:55:22.25 ID:BeE8eQoS0


いまどきはGithubから怪しいコード引っ張ってきて
動いたー、とかやってるビギナーがほとんどだろ。
いくらでも混入のリスクはある。

 

35:ダブルニードロップ(神奈川県) [US]:2021/11/17(水) 19:46:44.56 ID:CPkK+KoO0


逆アセすればいいじゃん。そのプログラムで使わない
ような関数呼んでたり、ファイルパスの文字列あったり
したら怪しいわけで(´・ω・`)

 

37:リキラリアット(SB-iPhone) [SE]:2021/11/17(水) 19:50:53.96 ID:OFtkXEmi0

>>35
アセンブラ読める人材どれだけいるんだよ


47:フェイスクラッシャー(愛知県) [EU]:2021/11/17(水) 20:13:58.97 ID:ZQjocbHd0

>>37
俺読めるけど絶対に読みたくない。東京から
伊豆までチャリで行けって言われてるようなもん。


61:フェイスクラッシャー(茸) [ニダ]:2021/11/17(水) 21:22:55.39 ID:TJL9QGOB0

>>37
常識的に考えてやる意味がないw
苦行マゾの類いでも手を出さない


53:張り手(東京都) [ヌコ]:2021/11/17(水) 20:19:53.55 ID:Zxq/zByp0


組み込みのitronとか
ほぼブラックボックス的に使うミドルウェア
この辺りに仕込まれてたらIoT関連死亡だな

 

55:ビッグブーツ(茸) [ニダ]:2021/11/17(水) 20:23:43.44 ID:1UJy3Hyx0


ガチでこういうセキュリティ仕事にしてたが
今のアセンブラってもう読めねえ
ebxまでで限界
rbxにxmmだのもうアセンブラを生で読むの無理ゲーすぎ
AIのパターンマッチでバイナリから怪しいバイト列とかを検出するのがあるから最近じゃそういうので検出するしかないと思うわ
そもそも制御コード入れてもcui系のエディタだと^[[何とかにエスケープされるとおもうが設定次第なんかな
最近のelectronベースのエディタは騙せそうね

 

56:フルネルソンスープレックス(神奈川県) [AU]:2021/11/17(水) 20:33:12.59 ID:hg7k9u1W0

>>55
そこまで行くとOSやBIOSに組み込まない限りOSが起動時にクリアしてしまうから出来んのじゃないかな、今は。


57:張り手(ジパング) [CN]:2021/11/17(水) 20:42:36.54 ID:8TIqg+/A0

>>56
OSやBIOSに組み込まれてる
某国製PC…


43:フェイスクラッシャー(愛知県) [EU]:2021/11/17(水) 20:12:26.96 ID:ZQjocbHd0


結局ソースの解析しないとわからんのよ。
うだうだ言う前に怪しいソフトは使わないのが吉。