JTF2016: Linux,FreeBSD脆弱性検知ツールVulsを開発したらServerspecを超えるGitHubスターを獲得するほどバズった話

1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...

July Tech Festa 2016
Linux,FreeBSD脆弱性検知ツールVulsを開発したらServerspecを超えるGitHubスターを獲得するほどバズった話 の発表資料です

vuls_logo.png


 前半目次: Vuls紹介

  • 開発の動機
  • デモ
  • Vuls概要、詳細
  • 外部ツール

 後半目次:OSSの話

  • なぜ公開したか
  • バズり
  • OSSにしてよかった
  • コミュ二ティ

自己紹介

名前 : 神戸康多 @[email protected]
所属 : フューチャーアーキテクト株式会社
趣味 : 週2のサウナ
jtf-self-intrro.jpg


発表タイトル煽りすぎ(( ;゚Д゚))

jtf-serverspec.jpg

  • あの世界的に有名なソフトウェアに!!

ソフトウェアアップデートの重要性


アンチウィルスだけで本当に大丈夫?

  • 新種マルウェアの数は 数十万種類/day
  • 中高生でもカジュアルに作れる時代
  • シグニチャベースのアンチウィルスだけでは不十分

専門家曰く、一番重要なセキュリティ対策はソフトウェアアップデート
security_google.png

Google Japanブログより引用


脆弱性の放置は危ない

攻撃の大半は、数カ月もしくは数年にわたって利用可能なセキュリティパッチが一度も適用されていない既知の脆弱性を悪用している。実際に、成功したサイバー攻撃の85%は、最も良く知られた脆弱性の上位10件を悪用したものである


ソフトウェアアップデートって大変ですよね?


サーバ運用時に感じたこと

  • Linuxサーバ100台(OS, アプリケーション混在)規模の本番環境を運用していた
  • 自動アップデートによるサービス停止が怖いので手動アップデートで運用
  • 新着脆弱性をJVNなどのRSSや、SNSで情報取集
  • 日々発見される脆弱性多すぎ…
  • Flash脆弱性など必要ない情報が多い…

 Q. 過去2年間の脆弱性の合計数は?

  1. 〜500
  2. 500〜1000
  3. 1000〜2000
  4. 2000〜4000
  5. 4000〜5000

 正解: 14,600


 深刻度Criticalのものは 522件


深刻な脆弱性が見つかった場合

  • 影響調査が大変
    • おまえは100台に入っているソフトウェアと、バージョンを覚えているのか!?
    • プログラミング言語のライブラリ、バージョンまで覚えているわけがないだろう?
  • まじめにやろうとすると、年間で数千発見される脆弱性を人が情報収集し、対応しなければならない

enkan.png


やってられっかーい ( ゚Д゚)


そんな方にはvuls_logo.png


vuls.jpg
どのサーバに、どんな脆弱性(CVE)があるかを通知


管理するサーバに新着の脆弱性が発見された場合に通知してくれる

vuls-slack-ja.png


特徴

  • Linux/FreeBSDの脆弱性を動的スキャン
    • Ubuntu, Debian, CentOS, Amazon, RHEL
    • クラウド、オンプレミス、Docker
  • OSパッケージ以外の脆弱性も検知可能
    • プログラミング言語のライブラリやFWなど
    • CPEに登録されているソフトウェアが対象
  • セットアップは1台でよい
  • エージェントレス
    • Vulsから各サーバにSSHで接続してスキャン
  • 初期設定が簡単(基本SSH接続情報のみ)
  • 日本語レポート
  • 分析用のWebUIがある

分析用Web UIのデモ

usiusi360/vulsrepo


Vuls詳細

詳細はREADME.jaをベースに説明


特に難しかったところ

  • バージョンの比較でやればできそうだし簡単じゃんと思ってた
  • Ubuntu, Debian, CentOSのバージョニング

locales            2.13+git20120306-21  
login              1:4.1.5.1-1.1ubuntu7  
lsb-base           9.20160110
make               4.1-6
mawk               1.3.3-17ubuntu2
mime-support       3.59ubuntu1
multiarch-support  2.21-0ubuntu5

  • バージョンをパースして比較なんて無理
  • 1週間試行錯誤
  • changelogに解決されたCVE IDが書かれていることに気づく

外部ツールとの連携


今後

  • Windows対応
  • 危険度の判定精度向上
    • IPA/JPCERTなどの注意喚起情報などの、CVSS以外の情報との組み合わせ
  • ネットワーク機器

後半: OSSの話


 後半目次:OSSの話

  • なぜOSSにしたか
  • バズり
  • コミュニティ
  • OSSにしてよかったこと

なぜOSSにしたか その1

  • コツコツ勉強して腕を磨く日々
  • 昨日の自分とのDiffを意識しろ
  • レベルアップしてる感
  • それなりに満足していた
  • パイセン「いつまで筋トレしてるの?子供用プールでバシャバシャやってるだけじゃん」
  • (゚o゚;) ハッ! 大海原に出たい!エンジニアとして名刺となるものが欲しい

なぜOSSにしたか その2

  • これまでの自分
    • ソース汚いとか言われたらどうしよう
    • 宣伝が面倒
    • 流行らなかったら格好悪い
  • これは人の役に立つ、という自信作ができると、そんなの関係なくなる
  • できるだけたくさんの人に使って欲しい
  • 自分が考えて作ったツールが世の中の人の助けになるなんて、そんなに素晴らしいことはない

なぜOSSにしたか その3

  • 入社10年目の長期休暇制度で1ヶ月間インド・ネパールにバックパック一人旅
  • ブッダの生まれ故郷(ルンビニ)にて

nepal-temple1.jpg


nepal-temple2.jpg


india-1.jpg


india-2.jpg


india-3.jpg


india-4.jpg


india-5.jpg


india-6.jpg


なぜOSSにしたか その4

  • クローズドな脆弱性スキャナを使いたい人はいないだろう
    • 怖くないですか!?
    • 自分なら使わない…
  • 会社に頼んで公開することに
    • 脆弱性対策で困っている人は沢山いる
    • 会社のPRになる
    • まずバズらせてそのあとマネタイズは考えます

バズり


日本と英語圏のSNSの人数

SNS 日本 海外
FBGroup 2,000 40,000
Twitter 3,000 60,000
Reddit 200,000

分母が違う。。日本だけではなく、海外も攻めてみよう


README英語版を用意

  • GitHubを普段から見ていて思ったこと
    • READMEの最初を読む。数分で自分に関係あるかどうか、深く見るべきかを判断する
  • 最初が重要
    • 概要、何を解決するのか、の部分は社内の英語いける人に翻訳を依頼
  • インパクト重要
    • 画像と、TUI部分のアスキーシネマ

実際にやった宣伝


英語Facebook Groupに投稿

Facebook-Linux_administrators.png


英語Facebook Group反響


合計約6万人中「8いいね!」獲得


日本語Facebook Groupに投稿

fb-group-ja.png


日本語Facebook Groupの反響


Reddit

name members point
golang 2万人 6
netsec 16万人 40
linux 21万人  124

reddit.png
README褒められる


Twitter


Binni Shah 25,000フォロワー
twitter1.png


nixCraft 60,000フォロワー
twitter2.png


Twitterは拡散力がずば抜けてる

英語圏の人はReddit/Hacker NewsのHot Topics経由でTwitterで呟いてる(予想)
フォロワー数万人がつぶやいたら一気に広がる
そして、その結果GitHub Starが溜まっていく


GitHub Trending(Go)週間1位

github-treindign-go-week.png


GitHub Trending全体で4位

GItHubTrending.png


娘に自慢

  • 小学2年の娘に「パパは世界4位になったよ」
  • 「パパすごーい」
  • 娘から見直される
  • OSSのおかげです

いろんな言語に翻訳された


ドイツ語

german.png


ドイツ語2

german2.png


フランス語

README.fr.mdのプルリクくれた


中国語

23万ビュー
chinese.png


スロバキア語

Slovakia.png


よしっ、GitHubスターが溜まった

公開後2週間でなんと1,000GitHubスター獲得
次は日本だ


日本で技術記事といえばQiita

会社の後輩が書いたVuls紹介Qiita記事がバズる
matsuno-qiita.png

matsuno-hatebu.png


バズり経験からわかったこと

  • GitHubスターは超重要
    • 開発のモチベーション
    • プロジェクトの人気度を示す
  • 英語圏の人はバンバンGitHubスターつけるが、日本人はそんなにつけない
    • Qiitaや、はてなブックマークがあるから?
  • まず海外でバズらせてGitHubスターを稼ぐ
  • その後日本はQiitaで広めるのが良さそう

バズらせFlowChart

how-to-bazuri.png


コミュニティ


Slack

  • 公開前にSlackチームを用意(参加フォーム
    • 全体:163名, #japanese:76名
  • アナウンスや機能拡張の議論、Q&Aなど
  • 公開当初はほとんど会話がなかった
  • だが、ある事件をきっかけに結束する…

slack-trouble1.png


slack-trouble2.png


その頃#japaneseチャネルでは

slack-trouble3.png


男前登場

slack-trouble4.png


 #japaneseに妙な連帯感が


そして彼はOpenVASをオススメして去っていった


おかげで#japaneseが活発に

  • 現在ではQ&Aや新機能の要望、議論が活発に
  • Vulsロゴの回転絵文字も登場!
    vuls_roll.gif

プルリクベースでの機能拡張

現在約100個のPR
– Windows対応 by mattn #33
– FreeBSD対応 by justyntemme #90
– Docker Composeで一発セットアップ by hikachan #121
– CentOSでのスキャン爆速化 by ti-ga #138


周辺ツールが続々と


OSSって素晴らしい

  • 普段見ているGitHub Trendingに載った!
  • 自分で考えて作ったものが人の役にたつ!
  • どんどん進化(バグ報告、プルリク、要望)
  • 色々な人と知り合える
  • そして何より、、、

娘に見直される!


後半 まとめ

  • バズらせフローチャート参考にしてね
  • GitHubスターつけたら開発者喜ぶよ
  • Slackチームぜひ参加してね
    • バグ報告、要望やプルリクウェルカムだよ
    • テストしてくれる人がいたらすごく助かるよ

Vulsミートアップやります

9月くらいに開催予定
ぜひご参加を!


事例教えてください


中途採用絶賛募集中

  • フューチャーアーキテクトでは中途採用を絶賛募集中
  • Vulsの開発したい人(Go言語)
  • 我こそはという方@kotakanbeまで連絡ください

懇親会も参加します

  • ぜひ話しかけてください
  • Vuls紹介用のA4のビラ印刷して用意してます
    bira.jpeg

おまけ Go言語の話


なぜGo言語を選んだの?

  • 最初は慣れたRubyでやろうとした
    • Ohai, specinfraに乗っかろうとした
  • 実装はRubyの方が早そうだけど、最近Go言語話題だしやってみるか
  • Goのキャッチアップ自体は苦労しなかった
    • シンプルな文法
    • 必要最低限なAPI
    • ネットの情報が豊富(英語)

実践したGo勉強方法


開発環境(mac)

  • エディタとの相性が素晴らしい
    • 文脈を考慮した賢いコード補完
    • 関数、変数にタグジャンプ
    • 保存時にコンパイルエラー表示、フォーマット、import、Lintが可能
  • APIリファレンスはDash

Goをやってみて思ったこと

  • Goroutine, channel気持ちいい link
  • エラー処理は最初面倒だったけど慣れる link
    • 今ではエラー処理を書かないと気持ち悪い
  • Ruby, Scala方面から来た人はGoの素朴さにビックリする
    • コレクション操作はfor文で回せ
    • Map.keysすらないのには笑った
  • やっぱりある程度の規模では型はありがたい
    • 保存時コンパイルエラーは便利

1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...
      この投稿は審査処理中  | 元のサイトへ