Successfully reported this slideshow.
Your SlideShare is downloading. ×

セキュアそうでセキュアじゃない少しセキュアな気分になれるmysql_config_editor

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 21 Ad

More Related Content

Viewers also liked (18)

Advertisement

More from do_aki (20)

Advertisement

セキュアそうでセキュアじゃない少しセキュアな気分になれるmysql_config_editor

  1. 1. セキュアそうでセキュア じゃない少しセキュアな 気分になれる mysql_config_editor 2013/04/17 MySQL Casual Talks vol.4 do_aki
  2. 2. do_aki (どぅーあき) |所属| > 株式会社もしも (ドロップシッピング・アフィリエイトASP) |仕事| > インフラ(サーバ管理)兼 Webアプリケーション開発 |出現| > 渋谷・山手線沿線 |特性| > PHPer http://do-aki.net/
  3. 3. mysql_config_editor
  4. 4. 使い方 $ mysql_config_editor set --login-path=path1 --host=127.0.0.1 --user=user1 --password Enter password: <- パスワード入力 $ mysql –login-path=path1 mysql>
  5. 5. バイナリで保存されてる $ hexdump -C ~/.mylogin.cnf 00000000 00 00 00 00 01 18 0d 0d 18 01 0b 0e 1a 15 0f 1b |................| 00000010 12 12 00 02 12 1e 1f 03 10 00 00 00 4a c8 d0 d9 |............J...| 00000020 f0 de 9a fa 7d f5 2f 0b 80 ef 20 58 10 00 00 00 |....}./... X....| 00000030 7e 36 64 73 58 b7 d0 1f 78 93 43 0d c2 db d8 0c |~6dsX...x.C.....| 00000040 20 00 00 00 4e a7 5d 18 3e 46 ba 33 8d fa 1f 57 | ...N.].>F.3...W| 00000050 89 e1 db b2 4d 87 4f da 4f f3 48 86 b7 e6 00 79 |....M.O.O.H....y| 00000060 8b 28 59 68 20 00 00 00 44 f2 5a 10 20 36 05 41 |.(Yh ...D.Z. 6.A| 00000070 99 30 99 65 f1 b5 b3 e3 60 71 a4 e2 ac 17 6b f2 |.0.e....`q....k.| 00000080 0d b2 e9 d1 60 74 7d 57 |....`t}W| 00000088
  6. 6. 明示的なパスワード指定無しで読める $ mysql_config_editor print --all user = user1 password = ***** host = 127.0.0.1
  7. 7. mysql_config_editor (MySQL 5.6 Reference Manual) • The mysql_config_editor utility (available as of MySQL 5.6.6) enables you to store authentication credentials in an encrypted login file named .mylogin.cnf. http://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html より抜粋
  8. 8. パスワード無しに 暗号化?
  9. 9. Code Reading!!
  10. 10. client/mysql_config_editor.cc • ほとんどこのファイルのみで構成 (一部、 mysys_ssl/my_aes.cc ) • 暗号化処理は TaoCrypt (extra/yassl 以下) もしくは OpenSSL が担当 • AES (鍵長 128bit) ECB
  11. 11. check_and_create_login_file login file を探す ●ファイルがある場合 ファイルパーミッションをチェック 鍵の読み込み (read_login_key) ●ファイルがない場合 鍵の生成 (generate_login_key) -> 実体は乱数生成してるだけ 鍵を含むヘッダの書き込み (add_header)
  12. 12. 鍵はファイルに埋め込まれてる
  13. 13. .mylogin.cnf のファイル構造
  14. 14. 予約領域 (4byte) 00 00 00 00 01 18 0d 0d 18 01 0b 0e 1a 15 0f 1b 12 12 00 02 12 1e 1f 03 10 00 00 00 4a c8 d0 d9 f0 de 9a fa 7d f5 2f 0b 80 ef 20 58 10 00 00 00 7e 36 64 73 58 b7 d0 1f 78 93 43 0d c2 db d8 0c 20 00 00 00 4e a7 5d 18 3e 46 ba 33 8d fa 1f 57 89 e1 db b2 4d 87 4f da 4f f3 48 86 b7 e6 00 79 8b 28 59 68 20 00 00 00 44 f2 5a 10 20 36 05 41 99 30 99 65 f1 b5 b3 e3 60 71 a4 e2 ac 17 6b f2 0d b2 e9 d1 60 74 7d 57
  15. 15. LOGIN_KEY (20byte) 20byte から鍵 (16byte) を構築 00 00 00 00 01 18 0d 0d 18 01 0b 0e 1a 15 0f 1b 12 12 00 02 12 1e 1f 03 10 00 00 00 4a c8 d0 d9 f0 de 9a fa 7d f5 2f 0b 80 ef 20 58 10 00 00 00 7e 36 64 73 58 b7 d0 1f 78 93 43 0d c2 db d8 0c 20 00 00 00 4e a7 5d 18 3e 46 ba 33 8d fa 1f 57 89 e1 db b2 4d 87 4f da 4f f3 48 86 b7 e6 00 79 8b 28 59 68 20 00 00 00 44 f2 5a 10 20 36 05 41 99 30 99 65 f1 b5 b3 e3 60 71 a4 e2 ac 17 6b f2 0d b2 e9 d1 60 74 7d 57
  16. 16. block size (4byte) block data (16*n byte) AES が 16byte block なので 00 00 00 00 01 18 0d 0d 18 01 0b 0e 1a 15 0f 1b 12 12 00 02 12 1e 1f 03 10 00 00 00 4a c8 d0 d9 f0 de 9a fa 7d f5 2f 0b 80 ef 20 58 10 00 00 00 7e 36 64 73 58 b7 d0 1f 78 93 43 0d c2 db d8 0c 20 00 00 00 4e a7 5d 18 3e 46 ba 33 8d fa 1f 57 89 e1 db b2 4d 87 4f da 4f f3 48 86 b7 e6 00 79 8b 28 59 68 20 00 00 00 44 f2 5a 10 20 36 05 41 99 30 99 65 f1 b5 b3 e3 60 71 a4 e2 ac 17 6b f2 0d b2 e9 d1 60 74 7d 57
  17. 17. • パスワードも含め、全て表示する perl script 組んでみた • https://gist.github.com/do-aki/5402830
  18. 18. 実は既に言及されてる http://mysqlblog.fivefarmers.com/2012/08/16/understanding- mysql_config_editors-security-aspects/
  19. 19. まとめ
  20. 20. • 暗号化と言うより難読化 • 安全性は平文ファイルと同程度 • 平文で書かれてるよりはまし? • うっかりgithub 等に公開しないように注意
  21. 21. ありがとうご ざいました

×