ruby / ruby/rubygems

Support CompactIndex API for FIPS

Open
#7,684 5 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Bundler
Dominant language
Ruby
Stars
4k
Forks
1.9k
Avg merge
1d 2h
Merged PRs (30d)
81

Description

Describe the problem as clearly as you can

The CompactIndex API uses MD5 which means it cannot be used on FIPS-enabled systems, resulting in this error message: FIPS mode is enabled, bundler can't use the CompactIndex API

Bundler then falls back to a full source index fetch which is prohibitively slow (timing out our CI jobs for instance).

If you check the "overriding fips" section here, it sounds like there should be ways for Ruby to flag the usage of md5 as safe since it's not being used for cryptographic purposes here.

Alternatively, could the CompactIndex API be converted to use a FIPS-compatible algorithm?

Without one of these fixes, I can't see any workaround to run bundle install in a practical way on FIPS systems.

Did you try upgrading rubygems & bundler?

Yes

Post steps to reproduce the problem

Enable FIPS mode

Which command did you run?

Run bundle install

What were you expecting to happen?

Bundle install should use the CompactIndex API

What actually happened?

Bundler falls back to source index fetching

If not included with the output of your command, run bundle env and paste the output below

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the Bundler CompactIndex API path used by bundle install and investigate how FIPS mode triggers the MD5 restriction and source-index fallback. Compare the possible FIPS-compatible handling described in the issue, then verify that bundle install uses CompactIndex successfully on FIPS-enabled systems without falling back to a full source index.

Written by the indexing model from the issue text.

Assessment

Tech stack
ruby
Domain
cli, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.