TweetDeck をハックしたら予想以上に酷かった件
【拡散希望】twitterの新型ウイルスがヤバい URL踏んだだけでアウト - uinyan. com
Twitter で
TweetDeck
Tweetbot for iOS
HootSuite
iOSのデフォルトアプリ
ShootingStar/Pro
等のコンシューマキーが流出して、それを利用したウィルスが猛威を振るってたようです
ためしに、 Tweet Deck でコンシューマキーとコンシューマシークレットキーが抜き出せるか試してみました
まず、アプリケーションを起動して、 oauth_c でメモリ検索を行いました
すると簡単に コンシューマキーが検索に引っかかりました
次に、テキストエディタで TweetDeck.exe を開いて、コンシューマキー付近を捜してみたところ…
生のコンシューマシークレットキーらしきものが埋まってました。
要するに、暗号化すらせず、テキストでキーが実行ファイルに埋め込まれていたから、ハッキングされたのですね
コンシューマキー・シークレットキーが漏れるのは当たり前という意見がありますが、もともと、コンシューマシークレットキーはハッシュキーを作るときにだけ使うもので、送受信でも出てくるものではないので、ちょっと解析したくらいじゃ分からないもので、バイナリに埋め込むのはナンセンスです。テキストエディタで開けば見えてしまうわけですから、言ってみれば、PGPのメールの自分の秘密鍵を、ホームページに公開してるようなもんです。
ためしに、もふったーで、TweetDeck のキーを使ってみる実験(リミットを解除して実験)
認証しても、TweetDeck のページに飛ばされるのですが
&oauth_verifier= 以降の文字列をPINに入力すると使えてしまいます
認証できた様子。
少なくとも、 公式クライアントの TweetDeck のキーが流出したのは自業自得のようですね ・ω・
ちなみに、最新版 TweetDeck に OpenSSL v1.0.1c が含まれていますが、 CVE-2013-0169
などのセキュリティホールやDoSの脆弱性を含んでいるバージョンです。
1.0.1e にアップデートすることを強く勧めます
JVNDB-2013-001460 TLS プロトコルおよび DTLS プロトコルにおける識別攻撃およびプレーンテキストリカバリ攻撃を誘発される脆弱性
JVNDB-2013-001459 OpenSSL におけるサービス運用妨害 (DoS) の脆弱性
JVNDB-2013-001458 OpenSSL の TLS の実装におけるサービス運用妨害 (DoS) の脆弱性
15:00追記
用語が一部分かりにくいと思うので補足
ツイッターアプリごとに コンシューマーキー(CK)と コンシューマーシークレットキー(CSK)というのがあります。 ユーザーごとに持ってるのが トークンキー(TK)と トークンシークレットキー(TSK)です。 ツイッターで何かリクエストを送るときには 生の CK や TK を送信しますが、 CSK はそのまま送信されずに CSKとTSKをくっつけて かき混ぜた後、ある規則で一部を取り出したデータを送信する (専門用語で ハッシュっていう処理) なので 通信内容を見ただけでは TSKを知っていても、利用者は通常 CSKを特定することはできないのです。 CKとCSKの両方があるとアプリを偽装することができてしまいます このCSKを生のテキストで埋め込んでいたから、本家(買収された)アプリなのにこの実装はありえないだろってわけです |
19:45 追記
キーなんか漏れてあたりまえだから、難読化にコストかける必要はないって意見も結構 頂いたんですが、Twitter の開発フォーラムでは、結構まじめにコンシューマシークレットキーの保護方法について論じられてるのだけど、一般的な感覚では違うのだろうか?
Best practice for consumer secret and key in a Java application | Twitter Developers
How to protect my Consumer Key and Consumer Secret Key
Protecing consumer secret | Twitter Developers
でも、漏れたら新しく取得すべきって言ってるんだから、できるだけ漏れにくくしておくべきで、見本となるべき公式アプリが手抜きってのはまずいと思うんだな →振り出しに戻る
Twitter のタイムラインみてたら勘違いしてる人がやたら 多いので補足。
× Tweet Deckは危ないから使っちゃ駄目
◎ TweetDeck などのキーを抜いた悪質なソフトが公式クライアントを騙って認証を求めてくるケースがはやってるらしいのでうかつに 信じてはいけない & 安易な実装をして流出した TweetDeck にも責任があるんじゃないかい。
上ではなくて、下ってこと。
関連記事
【TweetDeck訃報】 Air版も、Chrome版も、あるんだよ→全部同じ鍵
もふったーがハッキングされたので、本気でプロテクトかけてみた
ttps://gist.github.com/mala/5062931
> 配布アプリでconsumer key/secretが漏れている →
> 想定範囲内です。問題ではないです。暗号化とか難読化とか言ってる奴は殴れ。
だそうです。
(通信内容を追えば視認できる) Consumer Key やToken Security Key が漏れることがあるのは想定内で問題ないというのは正解ですが、秘密鍵にあたる Consumer Secret Key は難読化するのは当たり前で、漏れるのは想定内だから平文で書いて当たり前とか言ってるのは、まさに殴れって感じです ・ω・
このことは既出では?
http://hitoriblog.com/?p=15560
>>既出
おそらく、その前の話になりますね
「Twitterクライアントの中に内蔵しておかなければならない」
とありますが、生で持ってる必要はないのでした
まさかgigazineからここへ来るとはw
ああ、なんか、アクセス数が多くてTwitterで言及されてると思ったら、
http://gigazine.net/news/20130311-headline/
GIGAZINE さんの11日のヘッドラインニュースに掲載されてたのですね・ω・
2回目だなぁ
これが今でも利用できるのであれば完全?なる実況等にうってつけクライアント(やるなら2chが一番だけども)も(ryという妄想を、たまたま別のwin向けクライアントを再導入した後で色々調べててやってきたこの記事を読みながらしてみる