deardaniel/secdata-raw huggingface dataset:
GitHub Security Advisory: GHSA-cm8g-544f-p9x9
Package: rusqlite (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-416: Use After Free
Vulnerable versions: >= 0.26.0, < 0.26.2
Patched in: 0.26.2

Summary: Use After Free in rusqlite

Details:
An issue was discovered in the rusqlite crate 0.25.x before 0.25.4 and 0.26.x before 0.26.2 for Rust. create_collation has a use-after-free.
GitHub Security Advisory: GHSA-cm8g-544f-p9x9
Package: rusqlite (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-416: Use After Free
Vulnerable versions: >= 0.25.0, < 0.25.4
Patched in: 0.25.4

Summary: Use After Free in rusqlite

Details:
An issue was discovered in the rusqlite crate 0.25.x before 0.25.4 and 0.26.x before 0.26.2 for Rust. create_collation has a use-after-free.
GitHub Security Advisory: GHSA-92cx-4xm7-jr9m
Package: rusqlite (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-416: Use After Free
Vulnerable versions: >= 0.26.0, < 0.26.2
Patched in: 0.26.2

Summary: Use After Free in rusqlite

Details:
An issue was discovered in the rusqlite crate 0.25.x before 0.25.4 and 0.26.x before 0.26.2 for Rust. create_scalar_function has a use-after-free.
GitHub Security Advisory: GHSA-92cx-4xm7-jr9m
Package: rusqlite (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-416: Use After Free
Vulnerable versions: >= 0.25.0, < 0.25.4
Patched in: 0.25.4

Summary: Use After Free in rusqlite

Details:
An issue was discovered in the rusqlite crate 0.25.x before 0.25.4 and 0.26.x before 0.26.2 for Rust. create_scalar_function has a use-after-free.
GitHub Security Advisory: GHSA-w5cr-frph-hw7f
Package: rkyv (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-772: Missing Release of Resource after Effective Lifetime, CWE-908: Use of Uninitialized Resource
Vulnerable versions: < 0.6.0
Patched in: 0.6.0

Summary: Use of uninitialized buffer in rkyv

Details:
An issue was discovered in the rkyv crate before 0.6.0 for Rust. When an archive is created via serialization, the archive content may contain uninitialized values of certain parts of a struct.
GitHub Security Advisory: GHSA-g87r-23vw-7f87
Package: rusqlite (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-416: Use After Free
Vulnerable versions: >= 0.26.0, < 0.26.2
Patched in: 0.26.2

Summary: Use After Free in rusqlite

Details:
An issue was discovered in the rusqlite crate 0.25.x before 0.25.4 and 0.26.x before 0.26.2 for Rust. update_hook has a use-after-free.
GitHub Security Advisory: GHSA-g87r-23vw-7f87
Package: rusqlite (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-416: Use After Free
Vulnerable versions: >= 0.25.0, < 0.25.4
Patched in: 0.25.4

Summary: Use After Free in rusqlite

Details:
An issue was discovered in the rusqlite crate 0.25.x before 0.25.4 and 0.26.x before 0.26.2 for Rust. update_hook has a use-after-free.
GitHub Security Advisory: GHSA-jf5h-cf95-w759
Package: raw-cpuid (RUST)
Severity: MODERATE (CVSS 0.0)
Vulnerable versions: >= 3.1.0, < 9.1.1
Patched in: 9.1.1

Summary: Optional `Deserialize` implementations lacking validation

Details:
When activating the non-default feature `serialize`, most structs implement
`serde::Deserialize` without sufficient validation. This allows breaking
invariants in safe code, leading to:

* Undefined behavior in `as_string()` methods (which use
  `std::str::from_utf8_unchecked()` internally).
* Panics due to failed assertions.

See https://github.com/gz/rust-cpuid/issues/43.
GitHub Security Advisory: GHSA-68p4-pjpf-xwcq
Package: qwutils (RUST)
Severity: MODERATE (CVSS 5.3)
CWE: CWE-415: Double Free
Vulnerable versions: < 0.3.1
Patched in: 0.3.1

Summary: insert_slice_clone can double drop if Clone panics.

Details:
Affected versions of this crate used ptr::copy when inserting into the middle of a Vec. When ownership was temporarily duplicated during this copy, it calls the clone method of a user provided element.

This issue can result in an element being double-freed if the clone call panics.

Commit `20cb73d` fixed this issue by adding a set_len(0) call before operating on the vector to avoid dropping the elements during a panic.
GitHub Security Advisory: GHSA-h7qh-3h6f-w79p
Package: multihash (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-20: Improper Input Validation
Vulnerable versions: < 0.11.3
Patched in: 0.11.3

Summary: Unexpected panic in multihash

Details:
In versions prior 0.11.3 it's possible to make from_slice panic by feeding it certain malformed input. It's never documented that from_slice (and from_bytes which wraps it) can panic, and its' return type (Result<Self, DecodeError>) suggests otherwise. In practice, from_slice/from_bytes is frequently used in networking code and is being called with unsanitized data from untrusted sources. This can allow attackers to cause DoS by causing an unexpected panic in the network client's code..
GitHub Security Advisory: GHSA-wp34-mqw5-jj85
Package: nano_arena (RUST)
Severity: CRITICAL (CVSS 9.8)
CWE: CWE-416: Use After Free
Vulnerable versions: < 0.5.2
Patched in: 0.5.2

Summary: Use after free in nano_arena

Details:
Affected versions of this crate assumed that Borrow<Idx> was guaranteed to return the same value on .borrow(). The borrowed index value was used to retrieve a mutable reference to a value.

If the Borrow<Idx> implementation returned a different index, the split arena would allow retrieving the index as a mutable reference creating two mutable references to the same element. This violates Rust's aliasing rules and allows for memory safety issues such as writing out of bounds and use-after-frees.

The flaw was corrected in commit `6b83f9d` by storing the .borrow() value in a temporary variable.
GitHub Security Advisory: GHSA-g7r5-x7cr-vm3v
Package: ncurses (RUST)
Severity: CRITICAL (CVSS 9.8)
CWE: CWE-119: Improper Restriction of Operations within the Bounds of a Memory Buffer
Vulnerable versions: <= 5.101.0
Patched in: unpatched

Summary: Buffer overflow and format vulnerabilities in ncurses

Details:
ncurses exposes functions from the ncurses library which:
* Pass buffers without length to C functions that may write an arbitrary amount of data, leading to a buffer overflow. (instr, mvwinstr, etc)
* Passes rust &str to strings expecting C format arguments, allowing hostile input to execute a format string attack, which trivially allows writing arbitrary data to stack memory (functions in the printw family).
GitHub Security Advisory: GHSA-7j44-fv4x-79g9
Package: once_cell (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-20: Improper Input Validation
Vulnerable versions: >= 0.2.5, < 1.0.1
Patched in: 1.0.1

Summary: Improper Input Validation in once_cell

Details:
If during the first dereference of Lazy the initialization function panics, subsequent dereferences will execute std::hints::unreachable_unchecked. Applications with panic = "abort" are not affected, as there will be no subsequent dereferences.
GitHub Security Advisory: GHSA-xjxc-vfw2-cg96
Package: openssl (RUST)
Severity: CRITICAL (CVSS 9.8)
CWE: CWE-416: Use After Free
Vulnerable versions: >= 0.10.8, < 0.10.9
Patched in: 0.10.9

Summary: Use after free in openssl

Details:
An issue was discovered in the openssl crate before 0.10.9 for Rust. A use-after-free occurs in CMS Signing.
GitHub Security Advisory: GHSA-qqmc-hwqp-8g2w
Package: lru (RUST)
Severity: HIGH (CVSS 0.0)
Vulnerable versions: < 0.7.1
Patched in: 0.7.1

Summary: Use after free in lru crate

Details:
Lru crate has use after free vulnerability.

Lru crate has two functions for getting an iterator. Both iterators give
references to key and value. Calling specific functions, like pop(), will remove
and free the value, and but it's still possible to access the reference of value
which is already dropped causing use after free.
GitHub Security Advisory: GHSA-v362-2895-h9r2
Package: lru (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-416: Use After Free
Vulnerable versions: < 0.7.1
Patched in: 0.7.1

Summary: Use After Free in lru

Details:
Lru crate has two functions for getting an iterator. Both iterators give references to key and value. Calling specific functions, like pop(), will remove and free the value, and but it's still possible to access the reference of value which is already dropped causing use after free.
GitHub Security Advisory: GHSA-r57r-j98g-587f
Package: nanorand (RUST)
Severity: CRITICAL (CVSS 9.8)
Vulnerable versions: >= 0.5.0, < 0.6.1
Patched in: 0.6.1

Summary: Pointer dereference in nanorand

Details:
An issue was discovered in the nanorand crate before 0.6.1 for Rust. There can be multiple mutable references to the same object because the TlsWyRand Deref implementation dereferences a raw pointer.
GitHub Security Advisory: GHSA-p6gj-gpc8-f8xw
Package: nanorand (RUST)
Severity: MODERATE (CVSS 0.0)
Vulnerable versions: >= 0.5.0, < 0.6.1
Patched in: 0.6.1

Summary: Aliased mutable references from `tls_rand` & `TlsWyRand`

Details:
`TlsWyRand`'s implementation of `Deref` unconditionally dereferences a raw pointer, and returns 
multiple mutable references to the same object, which is undefined behavior.
GitHub Security Advisory: GHSA-8mj7-wxmc-f424
Package: neon (RUST)
Severity: HIGH (CVSS 0.0)
Vulnerable versions: >= 0.8.0, < 0.10.1
Patched in: 0.10.1

Summary: Use after free in Neon external buffers

Details:
Neon provides functionality for creating JavaScript `ArrayBuffer` (and the `Buffer` subtype) instances backed by bytes allocated outside of V8/Node. The [`JsArrayBuffer::external`](https://docs.rs/neon/0.10.0/neon/types/struct.JsArrayBuffer.html#method.external) and [`JsBuffer::external`](https://docs.rs/neon/0.10.0/neon/types/struct.JsBuffer.html#method.external) did not require `T: 'static` prior to Neon `0.10.1`. This allowed creating an externally backed buffer from types that may be freed while they are still referenced by a JavaScript `ArrayBuffer`.

The following example demonstrates use after free. It compiles on versions `<0.10.1` and fails to compile afterward.

```rust
pub fn soundness_hole(mut cx: FunctionContext) -> JsResult<JsArrayBuffer> {
    let mut data = vec![0u8, 1, 2, 3];
    
    // Creating an external from `&mut [u8]` instead of `Vec<u8>` since there is a blanket impl
    // of `AsMut<T> for &mut T`
    let buf = JsArrayBuffer::external(&mut cx, data.as_mut_slice());

    // `buf` is still holding a reference to `data`!
    drop(data);

    Ok(buf)
}
```
GitHub Security Advisory: GHSA-wgrg-5h56-jg27
Package: nix (RUST)
Severity: HIGH (CVSS 0.0)
Vulnerable versions: >= 0.22.0, < 0.22.2
Patched in: 0.22.2

Summary: Out-of-bounds write in nix::unistd::getgrouplist

Details:
On certain platforms, if a user has more than 16 groups, the
`nix::unistd::getgrouplist` function will call the libc `getgrouplist`
function with a length parameter greater than the size of the buffer it
provides, resulting in an out-of-bounds write and memory corruption.

The libc `getgrouplist` function takes an in/out parameter `ngroups`
specifying the size of the group buffer. When the buffer is too small to
hold all of the reqested user's group memberships, some libc
implementations, including glibc and Solaris libc, will modify `ngroups`
to indicate the actual number of groups for the user, in addition to
returning an error. The version of `nix::unistd::getgrouplist` in nix
0.16.0 and up will resize the buffer to twice its size, but will not
read or modify the `ngroups` variable. Thus, if the user has more than
twice as many groups as the initial buffer size of 8, the next call to
`getgrouplist` will then write past the end of the buffer.

The issue would require editing /etc/groups to exploit, which is usually
only editable by the root user.
GitHub Security Advisory: GHSA-wgrg-5h56-jg27
Package: nix (RUST)
Severity: HIGH (CVSS 0.0)
Vulnerable versions: >= 0.21.0, < 0.21.2
Patched in: 0.21.2

Summary: Out-of-bounds write in nix::unistd::getgrouplist

Details:
On certain platforms, if a user has more than 16 groups, the
`nix::unistd::getgrouplist` function will call the libc `getgrouplist`
function with a length parameter greater than the size of the buffer it
provides, resulting in an out-of-bounds write and memory corruption.

The libc `getgrouplist` function takes an in/out parameter `ngroups`
specifying the size of the group buffer. When the buffer is too small to
hold all of the reqested user's group memberships, some libc
implementations, including glibc and Solaris libc, will modify `ngroups`
to indicate the actual number of groups for the user, in addition to
returning an error. The version of `nix::unistd::getgrouplist` in nix
0.16.0 and up will resize the buffer to twice its size, but will not
read or modify the `ngroups` variable. Thus, if the user has more than
twice as many groups as the initial buffer size of 8, the next call to
`getgrouplist` will then write past the end of the buffer.

The issue would require editing /etc/groups to exploit, which is usually
only editable by the root user.
GitHub Security Advisory: GHSA-wgrg-5h56-jg27
Package: nix (RUST)
Severity: HIGH (CVSS 0.0)
Vulnerable versions: >= 0.16.0, < 0.20.2
Patched in: 0.20.2

Summary: Out-of-bounds write in nix::unistd::getgrouplist

Details:
On certain platforms, if a user has more than 16 groups, the
`nix::unistd::getgrouplist` function will call the libc `getgrouplist`
function with a length parameter greater than the size of the buffer it
provides, resulting in an out-of-bounds write and memory corruption.

The libc `getgrouplist` function takes an in/out parameter `ngroups`
specifying the size of the group buffer. When the buffer is too small to
hold all of the reqested user's group memberships, some libc
implementations, including glibc and Solaris libc, will modify `ngroups`
to indicate the actual number of groups for the user, in addition to
returning an error. The version of `nix::unistd::getgrouplist` in nix
0.16.0 and up will resize the buffer to twice its size, but will not
read or modify the `ngroups` variable. Thus, if the user has more than
twice as many groups as the initial buffer size of 8, the next call to
`getgrouplist` will then write past the end of the buffer.

The issue would require editing /etc/groups to exploit, which is usually
only editable by the root user.
GitHub Security Advisory: GHSA-32v7-ghpr-c8hg
Package: ncurses (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-134: Use of Externally-Controlled Format String
Vulnerable versions: <= 5.101.0
Patched in: unpatched

Summary: Mishandling of format strings in ncurses

Details:
ncurses exposes functions from the ncurses library which:
* Pass buffers without length to C functions that may write an arbitrary amount of data, leading to a buffer overflow. (instr, mvwinstr, etc)
* Passes rust &str to strings expecting C format arguments, allowing hostile input to execute a format string attack, which trivially allows writing arbitrary data to stack memory (functions in the printw family).
GitHub Security Advisory: GHSA-ppj3-7jw3-8vc4
Package: lock_api (RUST)
Severity: MODERATE (CVSS 5.5)
CWE: CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
Vulnerable versions: < 0.4.2
Patched in: 0.4.2

Summary: Data races in lock_api

Details:
An issue was discovered in the lock_api crate before 0.4.2 for Rust. A data race can occur because of MappedMutexGuard unsoundness.
GitHub Security Advisory: GHSA-vh4p-6j7g-f4j9
Package: lock_api (RUST)
Severity: MODERATE (CVSS 4.7)
CWE: CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
Vulnerable versions: < 0.4.2
Patched in: 0.4.2

Summary: Data races in lock_api

Details:
An issue was discovered in the lock_api crate before 0.4.2 for Rust. A data race can occur because of MappedRwLockReadGuard unsoundness.
GitHub Security Advisory: GHSA-hj9h-wrgg-hgmx
Package: lock_api (RUST)
Severity: MODERATE (CVSS 4.7)
CWE: CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
Vulnerable versions: < 0.4.2
Patched in: 0.4.2

Summary: Data races in lock_api

Details:
An issue was discovered in the lock_api crate before 0.4.2 for Rust. A data race can occur because of RwLockReadGuard unsoundness.
GitHub Security Advisory: GHSA-gmv4-vmx3-x9f3
Package: lock_api (RUST)
Severity: MODERATE (CVSS 4.7)
CWE: CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
Vulnerable versions: < 0.4.2
Patched in: 0.4.2

Summary: Data races in lock_api

Details:
An issue was discovered in the lock_api crate before 0.4.2 for Rust. A data race can occur because of RwLockWriteGuard unsoundness.
GitHub Security Advisory: GHSA-x7vr-c387-8w57
Package: http (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-190: Integer Overflow or Wraparound, CWE-835: Loop with Unreachable Exit Condition ('Infinite Loop')
Vulnerable versions: < 0.1.20
Patched in: 0.1.20

Summary: Integer Overflow/Infinite Loop in the http crate

Details:
HeaderMap::reserve() used usize::next_power_of_two() to calculate the increased capacity. However, next_power_of_two() silently overflows to 0 if given a sufficiently large number in release mode.

If the map was not empty when the overflow happens, the library will invoke self.grow(0) and start infinite probing. This allows an attacker who controls the argument to reserve() to cause a potential denial of service (DoS).

The flaw was corrected in 0.1.20 release of http crate.
GitHub Security Advisory: GHSA-m2pf-hprp-3vqm
Package: image (RUST)
Severity: CRITICAL (CVSS 9.8)
CWE: CWE-416: Use After Free
Vulnerable versions: >= 0.10.2, < 0.21.3
Patched in: 0.21.3

Summary: Use after free in image

Details:
Affected versions of this crate would call Vec::set_len on an uninitialized vector with user-provided type parameter, in an interface of the HDR image format decoder. They would then also call other code that could panic before initializing all instances.

This could run Drop implementations on uninitialized types, equivalent to use-after-free, and allow an attacker arbitrary code execution.

Two different fixes were applied. It is possible to conserve the interface by ensuring proper initialization before calling Vec::set_len. Drop is no longer called in case of panic, though.

Starting from version 0.22, a breaking change to the interface requires callers to pre-allocate the output buffer and pass a mutable slice instead, avoiding all unsafe code.
GitHub Security Advisory: GHSA-w47j-hqpf-qw9w
Package: lazy-init (RUST)
Severity: MODERATE (CVSS 5.3)
CWE: CWE-125: Out-of-bounds Read
Vulnerable versions: < 0.4.0
Patched in: 0.4.0

Summary: Out of bounds read in lazy-init

Details:
An issue was discovered in the lazy-init crate through 2021-01-17 for Rust. Lazy lacks a Send bound, leading to a data race.
GitHub Security Advisory: GHSA-5wg8-7c9q-794v
Package: lock_api (RUST)
Severity: MODERATE (CVSS 4.7)
CWE: CWE-362: Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
Vulnerable versions: < 0.4.2
Patched in: 0.4.2

Summary: Data races in lock_api

Details:
An issue was discovered in the lock_api crate before 0.4.2 for Rust. A data race can occur because of MappedRwLockWriteGuard unsoundness.
GitHub Security Advisory: GHSA-5pg8-h4gv-m3p8
Package: fltk (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-476: NULL Pointer Dereference
Vulnerable versions: < 0.15.3
Patched in: 0.15.3

Summary: Null pointer deference in fltk

Details:
An issue was discovered in the fltk crate before 0.15.3 for Rust. There is a NULL pointer dereference during attempted use of a multi label type if the image is nonexistent.
GitHub Security Advisory: GHSA-7qcc-g2m9-8533
Package: fltk (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-476: NULL Pointer Dereference
Vulnerable versions: < 0.15.3
Patched in: 0.15.3

Summary: Null pointer deference in fltk

Details:
An issue was discovered in the fltk crate before 0.15.3 for Rust. There is a NULL pointer dereference during attempted use of a non-raster image for a window icon.
GitHub Security Advisory: GHSA-vjmg-pc8h-p6p8
Package: fltk (RUST)
Severity: CRITICAL (CVSS 9.1)
CWE: CWE-125: Out-of-bounds Read
Vulnerable versions: < 0.15.3
Patched in: 0.15.3

Summary: Out of bounds read in fltk

Details:
An issue was discovered in the fltk crate before 0.15.3 for Rust. There is an out-of bounds read because the pixmap constructor lacks pixmap input validation.
GitHub Security Advisory: GHSA-p46c-w9m3-7qr2
Package: flumedb (RUST)
Severity: CRITICAL (CVSS 9.8)
CWE: CWE-908: Use of Uninitialized Resource
Vulnerable versions: < 0.1.6
Patched in: 0.1.6

Summary: Use of Uninitialized Resource in flumedb.

Details:
Affected versions of this crate passes an uninitialized buffer to a user-provided Read implementation. There are two of such cases (go_offset_log::read_entry() & offset_log::read_entry()).

Arbitrary Read implementations can read from the uninitialized buffer (memory exposure) and also can return incorrect number of bytes written to the buffer. Reading from uninitialized memory produces undefined values that can quickly invoke undefined behavior.
GitHub Security Advisory: GHSA-wc36-xgcc-jwpr
Package: libp2p-core (RUST)
Severity: HIGH (CVSS 0.0)
Vulnerable versions: >= 0.30.0-rc.1, < 0.30.2
Patched in: 0.30.2

Summary: Failure to verify the public key of a `SignedEnvelope` against the `PeerId` in a `PeerRecord`

Details:
Affected versions of this crate did not check that the public key the signature was created with matches the peer ID of the peer record. 
Any combination was considered valid.

This allows an attacker to republish an existing `PeerRecord` with a different `PeerId`.
GitHub Security Advisory: GHSA-hxjf-h2mh-r6hj
Package: libpulse-binding (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-416: Use After Free
Vulnerable versions: < 1.2.1
Patched in: 1.2.1

Summary: Use After Free in libpulse-binding

Details:
Affected versions contained a pair of use-after-free issues with the objects returned by the get_format_info and get_context methods of Stream objects. These objects were mistakenly being constructed without setting an important flag to prevent destruction of the underlying C objects they reference upon their own destruction.
GitHub Security Advisory: GHSA-jqpv-jm4m-86j9
Package: libpulse-binding (RUST)
Severity: HIGH (CVSS 7.5)
CWE: CWE-416: Use After Free
Vulnerable versions: < 1.2.1
Patched in: 1.2.1

Summary: Use After Free in libpulse-binding

Details:
Affected versions contained a pair of use-after-free issues with the objects returned by the get_format_info and get_context methods of Stream objects. These objects were mistakenly being constructed without setting an important flag to prevent destruction of the underlying C objects they reference upon their own destruction.
GitHub Security Advisory: GHSA-rpcm-whqc-jfw8
Package: libflate (RUST)
Severity: CRITICAL (CVSS 9.8)
CWE: CWE-416: Use After Free
Vulnerable versions: >= 0.1.14, < 0.1.25
Patched in: 0.1.25

Summary: Use after free in libflate

Details:
An issue was discovered in the libflate crate before 0.1.25 for Rust. MultiDecoder::read has a use-after-free, leading to arbitrary code execution.
GitHub Security Advisory: GHSA-vc2p-r46x-m3vx
Package: lettre (RUST)
Severity: MODERATE (CVSS 5.3)
CWE: CWE-77: Improper Neutralization of Special Elements used in a Command ('Command Injection')
Vulnerable versions: >= 0.7.0, < 0.7.1
Patched in: 0.7.1

Summary: Argument injection in lettre

Details:
### Impact

Affected versions of lettre allowed argument injection to the sendmail command. It was possible, using forged to addresses, to pass arbitrary arguments to the sendmail executable.

Depending on the implementation (original sendmail, postfix, exim, etc.) it could be possible in some cases to write email data into abritrary files (using sendmail's logging features).

*NOTE*: This vulnerability only affects the sendmail transport. Others, including smtp, are not affected.

### Fix

The flaw is corrected by modifying the executed command to stop parsing arguments before passing the destination addresses.

### References

* [RUSTSEC-2020-0069](https://rustsec.org/advisories/RUSTSEC-2020-0069.html)
* [CVE-2020-28247](https://nvd.nist.gov/vuln/detail/CVE-2020-28247)