Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
%sの話
Search
NV
September 15, 2018
Technology
1.4k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
%sの話
@IoTSecJP東京 Version4.0
NV
September 15, 2018
More Decks by NV
See All by NV
ゲームのボツデータを見てみよう
nvsofts
1
550
eMMCの話
nvsofts
2
2.4k
DOOMに関するあれこれ
nvsofts
0
530
よくあるバックドアの話(公開版)
nvsofts
2
570
IoTハックに使える買って良かったと思うもの
nvsofts
0
2.3k
BLEな()おもちゃを調べてみる
nvsofts
3
1.4k
Other Decks in Technology
See All in Technology
Codex を使った障害対応机上演習の実際
orgachem
PRO
0
280
Turning Repos into the Product Second Brain with an LLM Wiki
linedevth
0
140
小規模OSSモデルは サイバーセキュリティ業務に どこまで使えるか
bbrbbq
0
190
国際カードブランドルール変更に伴うクレジットカード決済取引仕様変更について
k1style
0
150
こんにちは!SORACOM です & IoT とは【SORACOM UG 東北 in 八戸】
soracom
PRO
0
170
How to teach your AI Agent with Agent skills
linedevth
0
110
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
210
古い指輪から広がった JAVA コミュニティ とのつながり
yamad
0
140
Optunaの最新リリースv5.0について
pfn
PRO
0
140
フィンテック養成勉強会#68
finengine
0
220
React改造してみた
tsukina_7mochi
0
150
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
380
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
Designing for Timeless Needs
cassininazir
1
530
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Curious Case for Waylosing
cassininazir
1
570
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
750
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
590
How to Talk to Developers About Accessibility
jct
2
590
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
640
Become a Pro
speakerdeck
PRO
31
6.3k
Transcript
%sの話 NV (@nvsofts)
自己紹介 名前:NV ◦ Twitter: @nvsofts 個人サークル「えぬえす工房」代表 ◦ https://www.ns-koubou.com/ ◦ 最近は市販機器をハックする同人誌を書いています
普段は都内にあるセキュリティ会社でIoTセキュリティなどをやっています
%s
お察しの通り 今回は、sprintf()などで使用する書式文字列である”%s”に関する話です
これ、IoT関係あるの??
これ、IoT関係あるの?? あります!
これ、IoT関係あるの?? あります! 実は特定の使われ方で見かけることがあるからです ◦ 何度も見かけているので、偶然ではないはずです
使われ方 1. どこかから入力を取ってくる 2. 入力と書式文字列を元にsprintf()系関数でコマンドを作成する 3. 作成したコマンドをsystem()関数で実行する
コード例 ARM Linuxで、以下のコードをコンパイルした際のアセンブリコードを見る int main(int argc, char *argv[]) { char
buf[1024]; if (argc != 2) { return 1; } snprintf(buf, sizeof(buf), "cp %s data", argv[1]); system(buf); return 0; }
アセンブリコード
アセンブリコード
アセンブリコード
プログラムの動作 引数に与えられたファイル名をdataというファイル名でコピーする 例:/etc/hoge.datをdataというファイル名でコピーする $ ./test /etc/hoge.dat
これって・・・ 脆弱性あるのでは?って思った人
これって・・・ 脆弱性あるのでは?って思った人 → 正解!
これって・・・ 脆弱性あるのでは?って思った人 → 正解! OSコマンドインジェクションの脆弱性があります
脆弱性を突く 例えば、こういうコマンドにしたら? $ ./test '; echo Hello!; /bin/true '
脆弱性を突く 例えば、こういうコマンドにしたら? $ ./test '; echo Hello!; /bin/true ' 実際に実行されるコマンドは
cp ; echo Hello!; /bin/true data となる
なんでこんなのがあるのか? (独断と偏見が多分に入っています)
なんでこんなのがあるのか? (独断と偏見が多分に入っています) → C言語を「すごいシェルスクリプト」として使っている可能性? ◦ 組み込みLinuxを「面倒なことをやってくれるやつ」的な扱いをしている? ◦ 単にコマンドを実行する用途にsystem()関数を使うあたり、そういう感じがする
なんでこんなのがあるのか? (独断と偏見が多分に入っています) → C言語を「すごいシェルスクリプト」として使っている可能性? ◦ 組み込みLinuxを「面倒なことをやってくれるやつ」的な扱いをしている? ◦ 単にコマンドを実行する用途にsystem()関数を使うあたり、そういう感じがする → sprintf()系関数は入門者でも知っているくらい有名
◦ とりあえずこれ使えばやりたいことを実現できる、的な考え?
対策 入力をサニタイズする ◦ 一般的な対策
対策 入力をサニタイズする ◦ 一般的な対策 そもそもsystem()関数を使わない ◦ system()関数はシェルを通すため、’;’などのシェルで意味を持つ文字が使える ◦ fork()してexec()するならそういうことはない ◦
もちろん、/bin/sh –c ~をexec()したらダメ ◦ 加えて、想定外の文字種が入っていないかの検査もするべき
まとめ sprintf()系関数とsystem()関数の組み合わせは、脆弱性を生む可能性 が高い 実行ファイルの文字列を”%s”などで検索すると、脆弱性が見つかるかも? ◦ 今回はこれが言いたかった