This project might be open to known security vulnerabilities, which can be prevented by tightening the version range of affected dependencies. Find detailed information at the bottom.

Crate buildkite-jobify


(25 total, 1 outdated, 4 possibly insecure)

 anyhow^ to date
 app_dirs2^ to date
 base64^ to date
 bytes^ to date
 crossbeam^ to date
 flate2^ to date
 futures^ to date
 graphql_client^ to date
 http^ to date
 lru_time_cache^ to date
 openssl ⚠️^ insecure
 reqwest^ to date
 serde^ to date
 serde_json^ to date
 serde_yaml ⚠️^ insecure
 tar ⚠️^ insecure
 toml^ to date
 structopt^ to date
 tame-oauth^ to date
 tracing^ to date
 tracing-subscriber^ to date
 twox-hash^ to date
 uuid^ of date
 tokio ⚠️^ insecure
 k8s-openapi^ to date

Security Vulnerabilities

serde_yaml: Uncontrolled recursion leads to abort in deserialization


Affected versions of this crate did not properly check for recursion while deserializing aliases.

This allows an attacker to make a YAML file with an alias referring to itself causing an abort.

The flaw was corrected by checking the recursion depth.

openssl: Use after free in CMS Signing


Affected versions of the OpenSSL crate used structures after they'd been freed.

tar: Links in archive can create arbitrary directories


When unpacking a tarball that contains a symlink the tar crate may create directories outside of the directory it's supposed to unpack into.

The function errors when it's trying to create a file, but the folders are already created at this point.

use std::{io, io::Result};
use tar::{Archive, Builder, EntryType, Header};

fn main() -> Result<()> {
    let mut buf = Vec::new();

        let mut builder = Builder::new(&mut buf);

        // symlink: parent -> ..
        let mut header = Header::new_gnu();
        builder.append(&header, io::empty())?;

        // file: symlink/exploit/foo/bar
        let mut header = Header::new_gnu();
        builder.append(&header, io::empty())?;



This has been fixed in and is published as tar 0.4.36. Thanks to Martin Michaelis (@mgjm) for discovering and reporting this, and Nikhil Benesch (@benesch) for the fix!

tokio: Data race when sending and receiving after closing a `oneshot` channel


If a tokio::sync::oneshot channel is closed (via the oneshot::Receiver::close method), a data race may occur if the oneshot::Sender::send method is called while the corresponding oneshot::Receiver is awaited or calling try_recv.

When these methods are called concurrently on a closed channel, the two halves of the channel can concurrently access a shared memory location, resulting in a data race. This has been observed to cause memory corruption.

Note that the race only occurs when both halves of the channel are used after the Receiver half has called close. Code where close is not used, or where the Receiver is not awaited and try_recv is not called after calling close, is not affected.

See tokio#4225 for more details.