Skip to content

Vulnerable build script (MitM on network can make it execute arbitrary code) #144

@magicgoose

Description

@magicgoose

Build script attempts to download portaudio code through plain http and without any signature checking (because there aren't any) and then run it.

pub const PORTAUDIO_URL: &'static str = "http://www.portaudio.com/archives/pa_stable_v19_20140130.tgz";

rust-portaudio/build.rs

Lines 75 to 91 in c776b83

match Command::new("tar").arg("xvf").arg(PORTAUDIO_TAR).output() {
Ok(_) => {},
Err(e) => panic!("{}", e)
}
// change dir to the portaudio folder
match env::set_current_dir(PORTAUDIO_FOLDER) {
Ok(_) => {},
Err(e) => panic!("{}", e)
}
// run portaudio autoconf
Command::new("./configure")
.args(&["--disable-shared", "--enable-static"]) // Only build static lib
.args(&["--prefix", out_dir.to_str().unwrap()]) // Install on the outdir
.arg("--with-pic") // Build position-independent code (required by Rust)
.output()

That's of course portaudio team's fault. But it's possible to download portaudio code from git as a safer alternative — https://app.assembla.com/spaces/portaudio/git/source.
I think, rust-portaudio should use this safer way to download code.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions