ghsa-9w4w-cpc8-h2fq
Vulnerability from github
Published
2022-03-07 23:44
Modified
2024-09-23 17:02
Summary
Exposure of Sensitive Information to an Unauthorized Actor in httpie
Details

Impact

HTTPie have the practical concept of sessions, which help users to persistently store some of the state that belongs to the outgoing requests and incoming responses on the disk for further usage. As an example, we can make an authenticated request and save it to a named session called api:

bash $ http --session api -a user:pass pie.dev/basic-auth/user/pass

json { "authenticated": true, "user": "user" }

Since we have now saved the authentication data to that session, we won‘t have to enter it again and again on every invocation. We can simply reference the session, and HTTPie will use the saved state directly from it:

bash $ http --session api pie.dev/basic-auth/user/pass

json { "authenticated": true, "user": "user" }

One particular use case of these sessions is storing cookies (commonly referred to as a Cookie Jar). If a response has a Set-Cookie header, HTTPie will parse it and store the actual cookie in the session. And from that point on, all outgoing requests will attach that cookie (in the form of a Cookie header).

This is extremely useful, especially when you are dealing with websites which manage their own state on the client-side through cookies.

bash $ http -F --session jar pie.dev/cookies/set/x/y

json { "cookies": { "x": "y" } }

Before 3.1.0, HTTPie didn‘t distinguish between cookies and hosts they belonged. This behavior resulted in the exposure of some cookies when there are redirects originating from the actual host to a third party website, e.g:

bash $ http -F --session jar pie.dev/redirect-to url==https://httpbin.org/cookies

(Pre 3.1.0) json { "cookies": { "x": "y" } }

(Post 3.1.0) json { "cookies": {} }

This behavior has been corrected in this release (with taking RFC 6265 — HTTP State Management Mechanism into the consideration).

A huge credit goes to @Glyph for disclosing the original vulnerability to us (through huntr.dev).

Patches

We suggest users to upgrade their HTTPie version to 3.1.0 or higher, and run httpie cli sessions upgrade command on their sessions.

For more information

If you have any questions or comments about this advisory: * Email us: security@httpie.io

Please note that this entry is covered by both CVE-2022-24737 and CVE-2022-0430.

Show details on source website


{
  "affected": [
    {
      "package": {
        "ecosystem": "PyPI",
        "name": "httpie"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "3.1.0"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "aliases": [
    "CVE-2022-24737"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-200"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2022-03-07T23:44:28Z",
    "nvd_published_at": "2022-03-07T23:15:00Z",
    "severity": "MODERATE"
  },
  "details": "### Impact\nHTTPie have the practical concept of [sessions](https://httpie.io/docs/cli/sessions), which help users to persistently store some of the state that belongs to the outgoing requests and incoming responses on the disk for further usage. As an example, we can make an authenticated request and save it to a [named session](https://httpie.io/docs/cli/named-sessions) called `api`:\n\n```bash\n$ http --session api -a user:pass pie.dev/basic-auth/user/pass\n```\n\n```json\n{\n    \"authenticated\": true,\n    \"user\": \"user\"\n}\n```\n\nSince we have now saved the authentication data to that session, we won\u2018t have to enter it again and again on every invocation. We can simply reference the session, and HTTPie will use the saved state directly from it:\n\n```bash\n$ http --session api pie.dev/basic-auth/user/pass\n```\n\n```json\n{\n    \"authenticated\": true,\n    \"user\": \"user\"\n}\n```\n\nOne particular use case of these sessions is storing cookies (commonly referred to as a `Cookie Jar`). If a response has a `Set-Cookie`\nheader, HTTPie will parse it and store the actual cookie in the session. And from that point on, all outgoing requests will attach that cookie (in the form of a `Cookie` header).\n\nThis is extremely useful, especially when you are dealing with websites which manage their own state on the client-side through cookies.\n\n```bash\n$ http -F --session jar pie.dev/cookies/set/x/y\n```\n\n```json\n{\n    \"cookies\": {\n        \"x\": \"y\"\n    }\n}\n```\n\nBefore `3.1.0`, HTTPie didn\u2018t distinguish between cookies and hosts they belonged. This behavior resulted in the exposure of some cookies when there are redirects originating from the actual host to a third party website, e.g:\n\n```bash\n$ http -F --session jar pie.dev/redirect-to url==https://httpbin.org/cookies\n```\n\n(Pre 3.1.0)\n```json\n{\n    \"cookies\": {\n        \"x\": \"y\"\n    }\n}\n```\n\n(Post 3.1.0)\n```json\n{\n    \"cookies\": {}\n}\n```\n\nThis behavior has been corrected in this release (with taking [RFC 6265 \u2014 HTTP State Management Mechanism](https://datatracker.ietf.org/doc/html/rfc6265) into the consideration).\n\nA huge credit goes to [@Glyph](https://github.com/glyph) for disclosing the original vulnerability to us (through [huntr.dev](http://huntr.dev/)).\n\n### Patches\nWe suggest users to upgrade their HTTPie version to `3.1.0` or higher, and run `httpie cli sessions upgrade` command on their sessions.\n\n### For more information\nIf you have any questions or comments about this advisory:\n* Email us: [`security@httpie.io`](mailto:security@httpie.io)\n\n\u003e Please note that this entry is covered by both [CVE-2022-24737](https://www.cvedetails.com/cve/CVE-2022-24737) and [CVE-2022-0430](https://nvd.nist.gov/vuln/detail/CVE-2022-0430).\n",
  "id": "GHSA-9w4w-cpc8-h2fq",
  "modified": "2024-09-23T17:02:49Z",
  "published": "2022-03-07T23:44:28Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/httpie/httpie/security/advisories/GHSA-9w4w-cpc8-h2fq"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2022-24737"
    },
    {
      "type": "WEB",
      "url": "https://github.com/httpie/httpie/commit/65ab7d5caaaf2f95e61f9dd65441801c2ddee38b"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/httpie/httpie"
    },
    {
      "type": "WEB",
      "url": "https://github.com/httpie/httpie/releases/tag/3.1.0"
    },
    {
      "type": "WEB",
      "url": "https://github.com/pypa/advisory-database/tree/main/vulns/httpie/PYSEC-2022-34.yaml"
    },
    {
      "type": "WEB",
      "url": "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/4QZD2AZOL7XLNZVAV6GDNXYU6MFRU5RS"
    },
    {
      "type": "WEB",
      "url": "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/R5VYSYKEKVZEVEBIWAADGDXG4Y3EWCQ3"
    },
    {
      "type": "WEB",
      "url": "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/TXFCHGTW3V32GD6GXXJZE5QAOSDT3RTY"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N",
      "type": "CVSS_V3"
    },
    {
      "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N",
      "type": "CVSS_V4"
    }
  ],
  "summary": "Exposure of Sensitive Information to an Unauthorized Actor in httpie"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…