Upgrade to Pro — share decks privately, control downloads, hide ads and more …

メールに関する小話 PHPMailer 5.2.2-rc2の騒動など / A short story about email.

メールに関する小話 PHPMailer 5.2.2-rc2の騒動など / A short story about email.

sapi_kawahara

June 26, 2019
Tweet

More Decks by sapi_kawahara

Other Decks in Business

Transcript

  1. メールに関する小話
    PHPMailer 5.2.2-rc2の騒動など
    @sapi_kawahara さっぴー川原
    2019年6月26日(水)第139回 PHP勉強会@東京 #PHPStudy
    1

    View Slide

  2. 自己紹介
    ● さっぴー川原 @sapi_kawahara
    ● 埼玉県川越市在中、五反田の中小企業で働いてます。
    ● エンジニア暦:30年目、最初はコンシューマーゲーム機
    の開発、のちにLAMPでの開発にジョブチェンジ、言語に
    こだわらない性格、最近はPythonをメインでやってま
    す。
    ● マネージメントばかりやっているけど、最近は趣味で開
    発とかする、Re:View執筆でWerkerしたり楽しい!
    2

    View Slide

  3. X-Mailer: PHPMailer 5.2.2-rc2
    3

    View Slide

  4. PHPMailerとは?
    ● PHP用のメール送信ライブラリです、簡単にメール送信のプログラムが書け
    ます、これをベースにお問い合わせフォームも書けたりします。
    ● 最近、このライブラリーを使ったフィッシングメールが私のメールアドレス
    に飛んできてます。
    ● https://github.com/PHPMailer/PHPMailer 2019/06/26現在、最新バー
    ジョンは6.0.7です。
    ● あれ????
    4

    View Slide

  5. そのバージョンは?!
    ● フィッシングメールがきたのはバージョン 5.2.2ってことは?
    ● はい!脆弱性あります!OSインジェクションあります!
    ● 徳丸先生のブログにて記載あり「PHPMailerの脆弱性CVE-2016-10033につ
    いて解析した」
    https://blog.tokumaru.org/2016/12/PHPMailer-Vulnerability-CVE-201
    6-10033.html
    ● PHPMailerにおける、リモートから任意のコードが実行可能な脆弱性
    (CVE-2016-10033およびCVE-2016-10045)に関する調査レポート
    ● https://www.softbanktech.co.jp/special/cve/2017/0001/
    5

    View Slide

  6. サーバー会社、プロバイダに問い合わせ中
    ● PHPMailerを置いているサーバーの会社にサーバーを止めてと問い合わせた
    ら、フィッシングメールを出している方を止めるのが先と言われた。
    ● フィッシングメールを出している方のプロバイダに問い合わせたら、サー
    バー会社の方が止めた方が良いと言われた・・・。
    ● まあ、どっちにも言ったので、そのうち対応するでしょう!
    ● 置き忘れWordPress脆弱性問題は有名ですが、置き忘れPHPMailerもあると
    は思いませんでした。
    ● セキュリティ対策はちゃんとやりましょう!
    6

    View Slide

  7. おまけ GMail APIを使った小話
    ● GMail APIを使ってメール送信をしようとすると、400エラーが出る。
    ○ Status code: 400 and status: Bad Request and response: { "error": { "errors": [ {
    "domain": "global", "reason": "invalid", "message": "Invalid value for ByteString
    ● 問題の箇所は以下の場所でした。
    ○ $data = base64_encode($data);
    ● 自分が過去にメール送信を自前で作ったときは、これでできたけど、なん
    で?と思いました。
    ● URLのGETでbase64_encodeを渡わたす場合は+/を変換しちゃダメみたい
    です、ググると以下の方法が多数見つかるので、これで解決しました。
    ○ $data = rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
    7

    View Slide

  8. メールの本を頒布します!
    ● 技術書同人誌博覧会にてメールの本を頒布す
    る予定です。
    ● サークル名:エンジニアの登壇を応援する会
    ● 頒布場所:B-15
    ● 頒布物:スパムにされないメール設定方法
    ● 頒布価格:500円(予定)
    https://gishohaku.dev/circles/WrqqMM9j
    4tsnrGxH3PpI/
    ● さきほどGMail APIを実装したPHPソースも
    公開しつつ本に書こうと思ってます。
    8

    View Slide

  9. 大田区産業プラザ 小展示ホール(京急蒲田)
    ★ 技術書オンリーの同人誌即売会
    ★ 70サークル参加 / 10,000冊頒布予定
    ★ 15:00以前の来場は無料チケット予約が必要です
    ★ 詳細は公式Webサイトをチェックしてください
    技術書同人誌博覧会
    2019-07-27 (土) 11:00-17:00
    一般来場参加受付中
    https://gishohaku.dev/
    9

    View Slide