wolfMQTT 開発アップデート:2.1.0 以降の取り組み

7 月の wolfMQTT 2.1.0 リリース以降、開発チームはいくつかの大きな改良に取り組んできました。クライアントとブローカーのどちらをお使いの方にも、GitHub の master ブランチには注目していただきたい変更が数多く入っています。開発者体験の向上とプロトコル準拠の厳密化に加え、何より本格的なセキュリティ強化に注力しました。

主な変更点は次のとおりです。

  • キープアライブの自動化:コアクライアントが PINGREQ を自動で処理するようにしたため、ping を手動でスケジュールする必要はなくなりました。ご要望をいただいていた機能で、設定内容に従って動作するようにしています(GitHub issue #501 を参照)
  • MQTT v5 のフロー制御の改善:フロー制御の処理を大きく改善しました。クライアントが Receive Maximum の上限をより確実に守るようになったため、QoS 2 メッセージの重複を防げます。Topic Alias Maximum と Maximum Packet Size にもより厳密に準拠するようにしました
  • ブローカーのセッション処理の強化:ブローカーを MQTT v5 仕様に完全準拠させました。Session Expiry、Will Delay Interval、Retain Handling を含むセッションの挙動を全面的に見直し、期待どおりに動作するようにしました
  • 永続化の信頼性向上:セッション永続化レイヤーのいくつかの不具合に対処しました。有効期限切れのメッセージを確実に削除するようにしたほか、WebSocket のクローズ後に永続セッションが正しく維持されない問題を修正しました
  • セキュリティ強化:今回の大きな取り組みのひとつです。社内の Fenrir アナライザーと Coverity が検出した 170 件以上のセキュリティ上の指摘に対応しました。主な内容としては、認証情報やペイロードの消去処理の改善、デコーダーの境界チェック、WebSocket Origin 許可リストの修正などがあります

アップグレード時の注意点

最新の master ブランチを取り込む場合は、次の動作変更にご注意ください。

  • デフォルト設定:Receive Maximum のデフォルト値を 16 に変更しました。別の値が必要な場合は、設定でこの値を上書きしてください
  • エラー処理の厳格化:不正な形式のデータやプロトコル上無効なデータを無視せず、接続を閉じるように変更しました
  • ブロッキングモード:ブロッキングモードでビルドした場合、ping に応答がないときに MQTT_CODE_ERROR_NETWORK を明示的に返すように変更しました

これらの変更はすべて、GitHub の master ブランチで今すぐご利用いただけます。リポジトリをクローンし、autotools または CMake でビルドしてお試しください。ご感想もぜひお聞かせください。

wolfMQTT はポータブルな C で書かれた、組み込み用途向けのフットプリントの小さい MQTT 実装で、MQTT v3.1.1、MQTT v5、MQTT-SN に対応しています。ベアメタルのマイコンから Linux サーバーまで幅広い環境で動作します。TLS 1.3 は wolfSSL が提供し、wolfCrypt を通じて FIPS 140-3 認証取得済みの暗号も利用できます。wolfSSL 製品は GPLv3 と商用ライセンスのデュアルライセンスで提供しており、wolfSSL のサポートチームによる支援も受けられます。

今すぐ wolfSSL をダウンロード

もし弊社製品についてご質問があれば、お問い合わせ窓口info@wolfssl.jpまでご連絡をお願い致します。

原文:https://www.wolfssl.com/what-weve-been-building-a-wolfmqtt-update/