-
Notifications
You must be signed in to change notification settings - Fork 364
FIPS validation: OpenSSL::Digest::MD5 cannot be used #3544
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
cc @Gerg |
Changing the digest will also affect the diego executor: https://github.com/cloudfoundry/executor/blob/main/depot/uploader/uploader.go#L145 cc @ameowlia |
If CC gets updated first and it starts accepting both |
control/63c060f1-48eb-444b-8190-f89ed835d962:~$ /var/vcap/jobs/cloud_controller_ng/bin/console
[1] pry(VCAP::CloudController)> require 'openssl'
=> false
[2] pry(VCAP::CloudController)> OpenSSL::Digest::MD5.hexdigest 'abc'
OpenSSL::Digest::DigestError: Digest initialization failed: initialization error
from /var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/openssl-3.2.0/lib/openssl/digest.rb:31:in `initialize'
[3] pry(VCAP::CloudController)> OpenSSL::Digest::SHA1.hexdigest 'abc'
=> "a9993e364706816aba3e25717850c26c9cd0d89d"
[4] pry(VCAP::CloudController)> OpenSSL::Digest::SHA256.hexdigest 'abc'
=> "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad" Not sure on future versions of FIPS but on the jammy FIPS stemcell sha1 seems to work. ^ |
The |
{
"errors": [
{
"title": "UnknownError",
"detail": "An unknown error occurred.",
"code": 10001,
"test_mode_info": {
"detail": "Process Guid: d1693c75-dfb8-45f6-82a3-9b551e40ab64: EVP_PKEY_keygen: invalid modulus",
"title": "CF-PKeyError",
"backtrace": [
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/openssl-3.2.0/lib/openssl/pkey.rb:344:in `generate_key'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/openssl-3.2.0/lib/openssl/pkey.rb:344:in `generate'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/openssl-3.2.0/lib/openssl/pkey.rb:354:in `new'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/ssh_key.rb:29:in `key'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/ssh_key.rb:12:in `private_key'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/app_recipe_builder.rb:61:in `app_lrp_arguments'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/app_recipe_builder.rb:29:in `build_app_lrp'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/bbs_apps_client.rb:13:in `block in desire_app'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/bbs_apps_client.rb:107:in `handle_diego_errors'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/bbs_apps_client.rb:12:in `desire_app'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/desire_app_handler.rb:10:in `create_or_update_app'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/messenger.rb:25:in `send_desire_request'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/runner.rb:23:in `block in start'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/runner.rb:47:in `with_logging'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/runner.rb:23:in `start'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/process_observer.rb:40:in `react_to_state_change'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/process_observer.rb:23:in `block in updated'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/process_observer.rb:48:in `with_diego_communication_handling'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/process_observer.rb:21:in `updated'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/app/models/runtime/process_model.rb:530:in `block in after_save'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/sequel-5.75.0/lib/sequel/database/transactions.rb:480:in `each'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/sequel-5.75.0/lib/sequel/database/transactions.rb:480:in `remove_transaction'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/sequel-5.75.0/lib/sequel/database/transactions.rb:288:in `_transaction'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/sequel-5.75.0/lib/sequel/database/transactions.rb:239:in `block in transaction'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/sequel-5.75.0/lib/sequel/connection_pool/threaded.rb:92:in `hold'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/sequel-5.75.0/lib/sequel/database/connecting.rb:293:in `synchronize'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/sequel-5.75.0/lib/sequel/database/transactions.rb:197:in `transaction'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/app/actions/app_start.rb:9:in `start'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/app/controllers/v3/apps_controller.rb:166:in `start'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/abstract_controller/base.rb:228:in `process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal/rendering.rb:30:in `process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/abstract_controller/callbacks.rb:42:in `block in process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/activesupport-6.1.7.6/lib/active_support/callbacks.rb:106:in `run_callbacks'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/abstract_controller/callbacks.rb:41:in `process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal/rescue.rb:22:in `process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/activesupport-6.1.7.6/lib/active_support/notifications.rb:203:in `block in instrument'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/activesupport-6.1.7.6/lib/active_support/notifications/instrumenter.rb:24:in `instrument'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/activesupport-6.1.7.6/lib/active_support/notifications.rb:203:in `instrument'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal/instrumentation.rb:33:in `process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal/params_wrapper.rb:249:in `process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/abstract_controller/base.rb:165:in `process'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionview-6.1.7.6/lib/action_view/rendering.rb:39:in `process'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal.rb:190:in `dispatch'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal.rb:254:in `dispatch'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/routing/route_set.rb:50:in `dispatch'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/routing/route_set.rb:33:in `serve'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/journey/router.rb:50:in `block in serve'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/journey/router.rb:32:in `each'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/journey/router.rb:32:in `serve'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/routing/route_set.rb:842:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/rack-2.2.8/lib/rack/tempfile_reaper.rb:15:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/http/permissions_policy.rb:22:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/http/content_security_policy.rb:19:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/activesupport-6.1.7.6/lib/active_support/callbacks.rb:98:in `run_callbacks'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/callbacks.rb:26:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/rack-2.2.8/lib/rack/runtime.rb:22:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/activesupport-6.1.7.6/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/executor.rb:14:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/rack-2.2.8/lib/rack/sendfile.rb:110:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/host_authorization.rb:142:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/rack-2.2.8/lib/rack/urlmap.rb:74:in `block in call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/rack-2.2.8/lib/rack/urlmap.rb:58:in `each'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/rack-2.2.8/lib/rack/urlmap.rb:58:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/cef_logs.rb:18:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/request_logs.rb:13:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/zipkin.rb:22:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/security_context_setter.rb:41:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/vcap_request_id.rb:16:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/cors.rb:49:in `call_app'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/cors.rb:14:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/request_metrics.rb:12:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/rack-2.2.8/lib/rack/builder.rb:244:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/thin-1.8.2/lib/thin/connection.rb:86:in `block in pre_process'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/thin-1.8.2/lib/thin/connection.rb:84:in `catch'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/thin-1.8.2/lib/thin/connection.rb:84:in `pre_process'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/thin-1.8.2/lib/thin/connection.rb:50:in `block in process'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/eventmachine-1.2.7/lib/eventmachine.rb:1077:in `block in spawn_threadpool'"
]
}
}
]
} Related to bits: https://github.com/cloudfoundry/cloud_controller_ng/blob/main/lib/cloud_controller/diego/ssh_key.rb#L7-L9 Was able to work around the issue by changing the default to |
{
"errors": [
{
"title": "UnknownError",
"detail": "An unknown error occurred.",
"code": 10001,
"test_mode_info": {
"detail": "Process Guid: d1693c75-dfb8-45f6-82a3-9b551e40ab64: Digest initialization failed: initialization error",
"title": "CF-DigestError",
"backtrace": [
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/openssl-3.2.0/lib/openssl/digest.rb:26:in `initialize'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/openssl-3.2.0/lib/openssl/digest.rb:26:in `digest'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/openssl-3.2.0/lib/openssl/digest.rb:26:in `digest'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/net-ssh-7.2.0/lib/net/ssh/authentication/pub_key_fingerprint.rb:33:in `hexdigest'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/net-ssh-7.2.0/lib/net/ssh/authentication/pub_key_fingerprint.rb:33:in `fingerprint'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/net-ssh-7.2.0/lib/net/ssh/authentication/pub_key_fingerprint.rb:27:in `fingerprint'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/ssh_key.rb:24:in `fingerprint'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/app_recipe_builder.rb:62:in `app_lrp_arguments'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/app_recipe_builder.rb:29:in `build_app_lrp'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/bbs_apps_client.rb:13:in `block in desire_app'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/bbs_apps_client.rb:107:in `handle_diego_errors'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/bbs_apps_client.rb:12:in `desire_app'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/desire_app_handler.rb:10:in `create_or_update_app'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/messenger.rb:25:in `send_desire_request'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/runner.rb:23:in `block in start'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/runner.rb:47:in `with_logging'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/diego/runner.rb:23:in `start'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/process_observer.rb:40:in `react_to_state_change'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/process_observer.rb:23:in `block in updated'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/process_observer.rb:48:in `with_diego_communication_handling'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/lib/cloud_controller/process_observer.rb:21:in `updated'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/app/models/runtime/process_model.rb:530:in `block in after_save'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/sequel-5.75.0/lib/sequel/database/transactions.rb:480:in `each'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/sequel-5.75.0/lib/sequel/database/transactions.rb:480:in `remove_transaction'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/sequel-5.75.0/lib/sequel/database/transactions.rb:288:in `_transaction'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/sequel-5.75.0/lib/sequel/database/transactions.rb:239:in `block in transaction'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/sequel-5.75.0/lib/sequel/connection_pool/threaded.rb:92:in `hold'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/sequel-5.75.0/lib/sequel/database/connecting.rb:293:in `synchronize'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/sequel-5.75.0/lib/sequel/database/transactions.rb:197:in `transaction'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/app/actions/app_start.rb:9:in `start'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/app/controllers/v3/apps_controller.rb:166:in `start'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/abstract_controller/base.rb:228:in `process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal/rendering.rb:30:in `process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/abstract_controller/callbacks.rb:42:in `block in process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/activesupport-6.1.7.6/lib/active_support/callbacks.rb:106:in `run_callbacks'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/abstract_controller/callbacks.rb:41:in `process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal/rescue.rb:22:in `process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/activesupport-6.1.7.6/lib/active_support/notifications.rb:203:in `block in instrument'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/activesupport-6.1.7.6/lib/active_support/notifications/instrumenter.rb:24:in `instrument'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/activesupport-6.1.7.6/lib/active_support/notifications.rb:203:in `instrument'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal/instrumentation.rb:33:in `process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal/params_wrapper.rb:249:in `process_action'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/abstract_controller/base.rb:165:in `process'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionview-6.1.7.6/lib/action_view/rendering.rb:39:in `process'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal.rb:190:in `dispatch'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_controller/metal.rb:254:in `dispatch'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/routing/route_set.rb:50:in `dispatch'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/routing/route_set.rb:33:in `serve'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/journey/router.rb:50:in `block in serve'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/journey/router.rb:32:in `each'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/journey/router.rb:32:in `serve'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/routing/route_set.rb:842:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/rack-2.2.8/lib/rack/tempfile_reaper.rb:15:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/http/permissions_policy.rb:22:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/http/content_security_policy.rb:19:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/activesupport-6.1.7.6/lib/active_support/callbacks.rb:98:in `run_callbacks'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/callbacks.rb:26:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/rack-2.2.8/lib/rack/runtime.rb:22:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/activesupport-6.1.7.6/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/executor.rb:14:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/rack-2.2.8/lib/rack/sendfile.rb:110:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/actionpack-6.1.7.6/lib/action_dispatch/middleware/host_authorization.rb:142:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/rack-2.2.8/lib/rack/urlmap.rb:74:in `block in call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/rack-2.2.8/lib/rack/urlmap.rb:58:in `each'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/rack-2.2.8/lib/rack/urlmap.rb:58:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/cef_logs.rb:18:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/request_logs.rb:13:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/zipkin.rb:22:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/security_context_setter.rb:41:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/vcap_request_id.rb:16:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/cors.rb:49:in `call_app'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/cors.rb:14:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/cloud_controller_ng/middleware/request_metrics.rb:12:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/rack-2.2.8/lib/rack/builder.rb:244:in `call'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/thin-1.8.2/lib/thin/connection.rb:86:in `block in pre_process'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/thin-1.8.2/lib/thin/connection.rb:84:in `catch'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/thin-1.8.2/lib/thin/connection.rb:84:in `pre_process'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/thin-1.8.2/lib/thin/connection.rb:50:in `block in process'",
"/var/vcap/data/packages/cloud_controller_ng/931e5b79fec2fdff1b2f0ce4507c65033fa274be/gem_home/ruby/3.2.0/gems/eventmachine-1.2.7/lib/eventmachine.rb:1077:in `block in spawn_threadpool'"
]
}
}
]
} This can be fixed by changing: https://github.com/cloudfoundry/cloud_controller_ng/blob/main/lib/cloud_controller/diego/ssh_key.rb#L24 OpenSSL::Digest::SHA256.new(key.public_key.to_der).to_s |
With the following Cloud Controller patches I was able to push and start an app on a CF deploy with a fips stemcell: - path: /instance_groups/name=control/jobs/name=pre-start-script?
type: replace
value:
name: pre-start-script
release: os-conf
properties:
script: |-
#!/bin/bash
pushd /var/vcap/packages/cloud_controller_ng/cloud_controller_ng/
sed -i 's/Rails.env.local?/true/g' app/controllers/runtime/stagings_controller.rb
sed -i 's/Digest::MD5/Digest::SHA1/g' lib/cloud_controller/diego/buildpack/staging_action_builder.rb
sed -i 's/Digest::MD5/Digest::SHA1/g' middleware/mixins/user_reset_interval.rb
sed -i 's/bits=1024/bits=2048/g' lib/cloud_controller/diego/ssh_key.rb
sed -i 's/delegate :fingerprint, to: :key/def fingerprint\n OpenSSL::Digest::SHA256.new(key.public_key.to_der).to_s\n end/g' lib/cloud_controller/diego/ssh_key.rb |
All MD5 usages have either been removed or its usage is configurable. |
Uh oh!
There was an error while loading. Please reload this page.
Issue
On a FIPS enabled stemcell, the
OpenSSL::Digest::MD5
algorithm cannot be used.Context
We are validating CF on a FIPS enabled stemcell, see cloudfoundry/cf-deployment#1140 for more details and a list of other issues. We are using a development capi-release which already includes the openssl v3.2.0 bump: ee95901
Steps to Reproduce
If you have access to a FIPS enabled stemcell, you can
bosh ssh
into an "api" node and run this simple test:You can also push a test app and it will fail in the staging step.
Expected result
Staging should succeed.
Current result
Staging fails, in the
cloud_controller_ng.log
you see:Possible Fix
Replace
OpenSSL::Digest::MD5
withOpenSSL::Digest::SHA256
. I've found these locations:cloud_controller_ng/lib/cloud_controller/diego/buildpack/staging_action_builder.rb
Line 78 in ee95901
cloud_controller_ng/lib/cloud_controller/diego/buildpack/staging_action_builder.rb
Line 110 in ee95901
cloud_controller_ng/app/controllers/runtime/stagings_controller.rb
Line 156 in ee95901
cloud_controller_ng/middleware/mixins/user_reset_interval.rb
Line 6 in ee95901
I've tried this in a dev capi-release. The hash function is used for generating temporary folders for the buildpacks. After a cf redeployment, the buildpacks could not be located anymore. The solution probably needs a migration path (clear buildpack cache?).
The text was updated successfully, but these errors were encountered: