Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rust audit fail #125

Closed
marco-ippolito opened this issue Dec 11, 2024 · 4 comments · Fixed by #139
Closed

rust audit fail #125

marco-ippolito opened this issue Dec 11, 2024 · 4 comments · Fixed by #139

Comments

@marco-ippolito
Copy link
Member

https://github.com/nodejs/amaro/actions/runs/12267014720/job/34226302045

error[vulnerability]: `idna` accepts Punycode labels that do not produce any non-ASCII when decoded
   ┌─ /github/workspace/deps/swc/bindings/Cargo.lock:34:1
   │
34 │ idna 0.5.0 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2024-0421
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2024-0421
   ├ `idna` 0.5.0 and earlier accepts Punycode labels that do not produce any non-ASCII output, which means that either ASCII labels or the empty root label can be masked such that they appear unequal without IDNA processing or when processed with a different implementation and equal when processed with `idna` 0.5.0 or earlier.
     
     Concretely, `example.org` and `xn--example-.org` become equal after processing by `idna` 0.5.0 or earlier. Also, `example.org.xn--` and `example.org.` become equal after processing by `idna` 0.5.0 or earlier.
     
     In applications using `idna` (but not in `idna` itself) this may be able to lead to privilege escalation when host name comparison is part of a privilege check and the behavior is combined with a client that resolves domains with such labels instead of treating them as errors that preclude DNS resolution / URL fetching and with the attacker managing to introduce a DNS entry (and TLS certificate) for an `xn--`-masked name that turns into the name of the target when processed by `idna` 0.5.0 or earlier.
     
     ## Remedy
     
     Upgrade to `idna` 1.0.3 or later, if depending on `idna` directly, or to `url` 2.5.4 or later, if depending on `idna` via `url`. (This issue was fixed in `idna` 1.0.0, but versions earlier than 1.0.3 are not recommended for other reasons.)
     
     When upgrading, please take a moment to read about [alternative Unicode back ends for `idna`](https://docs.rs/crate/idna_adapter/latest).
     
     If you are using Rust earlier than 1.81 in combination with SQLx 0.8.2 or earlier, please also read an [issue](https://github.com/servo/rust-url/issues/992) about combining them with `url` 2.5.4 and `idna` 1.0.3.
     
     ## Additional information
     
     This issue resulted from `idna` 0.5.0 and earlier implementing the UTS 46 specification literally on this point and the specification having this bug. The specification bug has been fixed in [revision [33](https://github.com/nodejs/amaro/actions/runs/12267014720/job/34226302045#step:4:34) of UTS 46](https://www.unicode.org/reports/tr46/tr46-33.html#Modifications).
     
     ## Acknowledgements
     
     Thanks to kageshiron for recognizing the security implications of this behavior.
   ├ Announcement: https://bugzilla.mozilla.org/show_bug.cgi?id=1887898
   ├ Solution: Upgrade to >=1.0.0 (try `cargo update -p idna`)
   ├ idna v0.5.0
     └── url v2.5.2
         ├── sourcemap v9.0.0
         │   ├── swc_common v4.0.1
         │   │   ├── binding_typescript_wasm v1.9.3
         │   │   ├── swc_ecma_ast v4.0.1
         │   │   │   ├── swc_ecma_codegen v4.0.2
         │   │   │   │   └── swc_fast_ts_strip v5.0.0
         │   │   │   │       └── binding_typescript_wasm v1.9.3 (*)
         │   │   │   ├── swc_ecma_parser v5.0.0
         │   │   │   │   ├── swc_ecma_transforms_base v5.0.1
         │   │   │   │   │   ├── swc_ecma_transforms_react v5.0.0
         │   │   │   │   │   │   └── swc_ecma_transforms_typescript v5.0.0
         │   │   │   │   │   │       └── swc_fast_ts_strip v5.0.0 (*)
         │   │   │   │   │   ├── swc_ecma_transforms_typescript v5.0.0 (*)
         │   │   │   │   │   └── swc_fast_ts_strip v5.0.0 (*)
         │   │   │   │   ├── swc_ecma_transforms_react v5.0.0 (*)
         │   │   │   │   └── swc_fast_ts_strip v5.0.0 (*)
         │   │   │   ├── swc_ecma_transforms_base v5.0.1 (*)
         │   │   │   ├── swc_ecma_transforms_react v5.0.0 (*)
         │   │   │   ├── swc_ecma_transforms_typescript v5.0.0 (*)
         │   │   │   ├── swc_ecma_utils v5.0.1
         │   │   │   │   ├── swc_ecma_transforms_base v5.0.1 (*)
         │   │   │   │   ├── swc_ecma_transforms_react v5.0.0 (*)
         │   │   │   │   └── swc_ecma_transforms_typescript v5.0.0 (*)
         │   │   │   ├── swc_ecma_visit v4.0.1
         │   │   │   │   ├── swc_ecma_transforms_base v5.0.1 (*)
         │   │   │   │   ├── swc_ecma_transforms_react v5.0.0 (*)
         │   │   │   │   ├── swc_ecma_transforms_typescript v5.0.0 (*)
         │   │   │   │   ├── swc_ecma_utils v5.0.1 (*)
         │   │   │   │   └── swc_fast_ts_strip v5.0.0 (*)
         │   │   │   └── swc_fast_ts_strip v5.0.0 (*)
         │   │   ├── swc_ecma_codegen v4.0.2 (*)
         │   │   ├── swc_ecma_parser v5.0.0 (*)
         │   │   ├── swc_ecma_transforms_base v5.0.1 (*)
         │   │   ├── swc_ecma_transforms_react v5.0.0 (*)
         │   │   ├── swc_ecma_transforms_typescript v5.0.0 (*)
         │   │   ├── swc_ecma_utils v5.0.1 (*)
         │   │   ├── swc_ecma_visit v4.0.1 (*)
         │   │   ├── swc_error_reporters v5.0.0
         │   │   │   └── binding_typescript_wasm v1.9.3 (*)
         │   │   └── swc_fast_ts_strip v5.0.0 (*)
         │   └── swc_ecma_codegen v4.0.2 (*)
         └── swc_common v4.0.1 (*)

advisories FAILED, bans ok, licenses ok, sources ok
@marco-ippolito
Copy link
Member Author

Cc @kdy1

@kdy1
Copy link
Member

kdy1 commented Dec 16, 2024

I'll take a look after eating lunch.

@kdy1
Copy link
Member

kdy1 commented Dec 16, 2024

swc-project/swc#9799 should fix it

@marco-ippolito
Copy link
Member Author

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants