Skip to content

Conversation

ge0Aja
Copy link
Contributor

@ge0Aja ge0Aja commented Dec 18, 2024

What does this PR do?

Motivation

Testing Guidelines

Additional Notes

Types of changes

  • Bug fix
  • New feature
  • Breaking change
  • Misc (docs, refactoring, dependency upgrade, etc.)

Check all that apply

  • This PR's description is comprehensive
  • This PR contains breaking changes that are documented in the description
  • This PR introduces new APIs or parameters that are documented and unlikely to change in the foreseeable future
  • This PR impacts documentation, and it has been updated (or a ticket has been logged)
  • This PR's changes are covered by the automated tests
  • This PR collects user input/sensitive content into Datadog
  • This PR passes the integration tests (ask a Datadog member to run the tests)
  • This PR passes the unit tests
  • This PR passes the installation tests (ask a Datadog member to run the tests)

@github-actions github-actions bot added the aws label Dec 18, 2024
@ge0Aja ge0Aja force-pushed the georgi/py-3-12 branch 2 times, most recently from 3cf5100 to a3e4a52 Compare December 18, 2024 22:32
@ge0Aja ge0Aja changed the title [WIP][AWS logs forwarder] Support Py 3.12 [WIP][AWS logs forwarder] Support Python 3.12 Dec 19, 2024
@ge0Aja ge0Aja changed the title [WIP][AWS logs forwarder] Support Python 3.12 [AWS logs forwarder] Support Python 3.12 Dec 19, 2024
Comment on lines +57 to +58
if "x-datadog-trace-id" in event["headers"]:
event["headers"]["x-datadog-trace-id"] = "<redacted from snapshot>"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Code Quality Violation

too many nesting levels (...read more)

Avoid to nest too many loops together. Having too many loops make your code harder to understand.
Prefer to organize your code in functions and unit of code you can clearly understand.

Learn More

View in Datadog  Leave us feedback  Documentation

Comment on lines +61 to +62
if "traceparent" in event["headers"]:
event["headers"]["traceparent"] = "<redacted from snapshot>"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Code Quality Violation

too many nesting levels (...read more)

Avoid to nest too many loops together. Having too many loops make your code harder to understand.
Prefer to organize your code in functions and unit of code you can clearly understand.

Learn More

View in Datadog  Leave us feedback  Documentation

Comment on lines +63 to +64
if "tracestate" in event["headers"]:
event["headers"]["tracestate"] = "<redacted from snapshot>"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Code Quality Violation

too many nesting levels (...read more)

Avoid to nest too many loops together. Having too many loops make your code harder to understand.
Prefer to organize your code in functions and unit of code you can clearly understand.

Learn More

View in Datadog  Leave us feedback  Documentation

Comment on lines +59 to +60
if "x-datadog-tags" in event["headers"]:
event["headers"]["x-datadog-tags"] = "<redacted from snapshot>"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Code Quality Violation

too many nesting levels (...read more)

Avoid to nest too many loops together. Having too many loops make your code harder to understand.
Prefer to organize your code in functions and unit of code you can clearly understand.

Learn More

View in Datadog  Leave us feedback  Documentation

@ge0Aja ge0Aja marked this pull request as ready for review December 19, 2024 08:32
@ViBiOh ViBiOh self-assigned this Dec 19, 2024
wrapt==1.14.0
xmltodict
zipp
ujson

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Library Vulnerability

ujson

Incorrect handling of invalid surrogate pair characters (...read more)

Impact

What kind of vulnerability is it? Who is impacted?

Anyone parsing JSON from an untrusted source is vulnerable.

JSON strings that contain escaped surrogate characters not part of a proper surrogate pair were decoded incorrectly. Besides corrupting strings, this allowed for potential key confusion and value overwriting in dictionaries.

Examples:

# An unpaired high surrogate character is ignored.
>>> ujson.loads(r'"\uD800"')
''
>>> ujson.loads(r'"\uD800hello"')
'hello'

# An unpaired low surrogate character is preserved.
>>> ujson.loads(r'"\uDC00"')
'\udc00'

# A pair of surrogates with additional non surrogate characters pair up in spite of being invalid.
>>> ujson.loads(r'"\uD800foo bar\uDC00"')
'foo bar𐀀'

Patches

Has the problem been patched? What versions should users upgrade to?

Users should upgrade to UltraJSON 5.4.0.

From version 5.4.0, UltraJSON decodes lone surrogates in the same way as the standard library's json module does, preserving them in the parsed output:

>>> ujson.loads(r'"\uD800"')
'\ud800'
>>> ujson.loads(r'"\uD800hello"')
'\ud800hello'
>>> ujson.loads(r'"\uDC00"')
'\udc00'
>>> ujson.loads(r'"\uD800foo bar\uDC00"')
'\ud800foo bar\udc00'

Workarounds

Is there a way for users to fix or remediate the vulnerability without upgrading?

Short of switching to an entirely different JSON library, there are no safe alternatives to upgrading.

For more information

If you have any questions or comments about this advisory:

View in Datadog  Leave us feedback  Documentation

@ge0Aja ge0Aja merged commit 7e42898 into master Dec 19, 2024
12 checks passed
@ge0Aja ge0Aja deleted the georgi/py-3-12 branch December 19, 2024 15:12
@mark-jones-rga
Copy link

these new versions require 3.12 runtime it appears?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants