Skip to content

chore(agent): migrate TLS library out of ring #197

Description

@impolitepanda

Use case

Ring is the default library provided by rust to handle TLS in HTTP request. (to be accurate, we use Reqwest, which uses rustls which uses ring)

This is an issue because, on windows, it requires the Visual Studio C++ libraries to be built AND executed, meaning we have to bundle them in the binary itself if we want our implant to be portable on all windows instance.

Sister task on the implant: OpenAEV-Platform/implant#158

Current workaround

Current workaround is to provide, though a rust flag at compile time (see cargo config file), a binary file with the DLL embedded.

Proposed solution

Switch out of ring and use another library. As of time of writing, the leading rust library to prefer is aws_lc_rs.
It's stil dependent on a C compiler, but only at compile time, not during execution

This would mean defining crates like this:

[dependencies]
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] }
rustls = { version = "0.23", default-features = false, features = ["aws_lc_rs", "tls12"] }

Additional information

Regression tests must be performed on brand new VMs on all arch and all platform, to make sure we didn't already configured some stuff before that could interfer.

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureType: new feature or capability (feat:).technical improvementLinked to technical improvement.

    Fields

    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions