cURLコマンドは、コマンドラインからHTTPリクエストを送信するために利用されるオープンソースのライブラリやツールのことです。cURLはデータ転送ライブラリとして、PC、スマートフォンや家電などの領域幅広く利用されていますが、深刻な問題につながる脆弱性が存在することが指摘されています。そこで本文では、cURLの脆弱性の概要をみなさんに説明した上、これらの脆弱性に対する役立つ対処法を皆さんに紹介していきます。
cURLの脆弱性を回避するために、cURLの代わりにApidogを使って、APIとのデータ転送を行うことがおすすめです。
cURLとは
CURLはCross-platform URL transfer library、クロスプラットフォームURL転送ライブラリの略で、ファイルやデータの転送を行うためのオープンソースのライブラリです。CURLはコマンドラインツールとしてのcurlと、libcurlというライブラリコンポーネントの2つから構成されています。libcurlはC/C++やPHP、Perl、Pythonなどの多くのプログラミング言語から利用できるため、WebブラウザやDBMS、CDN等の幅広いアプリケーションで利用されています。
また、スマートフォンやタブレット、IoTデバイスに加え、自動車等の組み込みシステムでもlibcurlが採用されているケースが多く、非常に幅広いプラットフォームで利用されている重要なライブラリです。
cURLの脆弱性の概要
長年に渡って、Curlに脆弱性が存在することがユーザーの間で広く知られています。cURLの代表的な脆弱性といえば、主に次のようなものがあります。
- 認証情報の漏洩: CurlはデフォルトでHTTPの認証情報をファイルに保存する機能がありますが、過去にこのファイルのパーミッションに問題があり、認証情報が漏洩する脆弱性が報告されています。
- バッファオーバーフロー: 過去にCurlの複数のバージョンでバッファオーバーフローの脆弱性が報告されており、これを悪用したコード実行が可能な場合がありました。
- 証明書の検証バイパス: SSL証明書の検証に問題がある脆弱性も過去に複数報告されており、これにより中間者攻撃などに悪用される可能性がありました。
- HTTPリクエストの分割: HTTPリクエストのパースに問題がある脆弱性では、特殊なリクエストを送信することでHTTPヘッダの改ざんや情報漏洩が可能でした。
以上のように、Curlには認証情報やメモリ、プロトコルのパースなど、様々なレイヤーで脆弱性が報告されています。定期的なアップデートが必要なツールといえます。
CVE-2023-38545が注目
cURLの脆弱性の中、共通脆弱性識別子のCVE-2023-38545が非常に注目されています。curlのリード開発者であるDaniel Stenberg氏は「curlの長い歴史の中で最悪とも言えるセキュリティ上の問題だ」と自身のブログに記載しています。それでは、これらの脆弱性の詳細を紹介します。
- CVE-2023-38545はSOCKS5プロトコルを使用する際に悪用可能なメモリーヒープオーバーフローの脆弱性で、遠隔からのコード実行が可能
- 概念実証コードが公開されており、攻撃方法が示されている
- libcurlのバージョン7.69.0~8.3.0に存在し、2020年2月に作り込まれた古い脆弱性
またそのほかに、CVE-2023-38546でクッキーインジェクションの脆弱性もかなり指摘されています。CVE-2023-38546は、libcurl 7.9.1以降に影響あり、深刻度はそれほど高くてもありません。
参照元:
https://japan.zdnet.com/article/35210166/
https://forest.watch.impress.co.jp/docs/news/1538153.html
対処法:cURLの脆弱性に対応する方法
それでは、上記で紹介したcURLの脆弱性を解消するために、どうしたらいいですか?次は、cURLの脆弱性の対処法を皆さんに紹介しますので、ご参照ください。
対処法⒈ バージョン8.4.0へのアップデート
cURL自体が非常に幅広く利用されていますので、影響範囲の大きさから重大なセキュリティリスクがあるとされています。そこで、可能な限り早期にバージョン8.4.0へのアップデートを強く推奨されています。CURLをバージョン8.4.0へアップデートする方法は以下の通りです。
ステップ⒈使用しているCURLの現在のバージョンを確認します。
curl --version
ステップ⒉最新版のCURLをソースコードからインストールします。
curl -O https://curl.se/download/curl-8.4.0.tar.gz
tar -zxvf curl-8.4.0.tar.gz
cd curl-8.4.0
./configure
make
make install
ステップ⒊インストールが完了したらバージョンを再度確認します。
curl --version
8.4.0と表示されればアップデートは成功です。
また、Linuxディストリビューションのパッケージマネージャーを利用してインストールすることもできます。ディストリビューションによってコマンドは異なりますので、それぞれのマニュアルをご確認ください。
対処法⒉ cURLの代替ツールを利用する
Apidogは完全に日本語化されたAPI管理ツールとして、APIの設計、仕様書生成、テスト自動化などのことも実現できます。1クリックだけで、CURLリクエストを簡単にApidogにインポートして利用できますし、Apidogに保存しているAPIをもCURLに逆生成することもできますので、非常に便利なツールです。
次のステップを参照して、cURLの代わりにApidogを使ってデータ転送を行うと、cURLの脆弱性を回避できます。
ステップ⒈Apidogを開き、左上にある「+」ボタンにガーソルを置き、「cURLをインポート」をクリックします。

ステップ⒉cURLを入力ボックスに貼り付けると、「OK」ボタンをクリックします。

ステップ⒊Apidogは一瞬でcURLを解析でき、各タブでcURLで定義したものを確認することができます。間違いがない場合は、「送信」をクリックして簡単にリクエストを送信できるようになります。

上記のように、Apidogが簡単にcURLを解析することができます。そして、cURLの代わりにApidogを使用してリクエストを送信すると、cURLの脆弱性を回避でき、セキュリティが保証されます。
まとめ
Curlは、Webブラウザやスマートフォン、IoTデバイスなど、非常に幅広い製品で採用されている一方で、複数のセキュリティ上の欠陥が指摘されています。特に2020年に発見されたCVE-2023-38545という脆弱性は、遠隔から任意のコード実行を可能にする重大なものではあります。
この深刻な状況を受け、Curlのセキュアな代替ツールとして、API管理サービスのApidogを利用することがおすすめです。Apidogを利用することで、1クリックだけでCurlのリクエストをインポートし、安全にデータ転送を実行できるので安心になるのでしょう。