Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package yast2-network for openSUSE:Factory checked in at 2024-03-15 20:27:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-network (Old) and /work/SRC/openSUSE:Factory/.yast2-network.new.1905 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-network" Fri Mar 15 20:27:56 2024 rev:505 rq:1157994 version:5.0.3 Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-network/yast2-network.changes 2024-02-09 23:51:37.089446657 +0100 +++ /work/SRC/openSUSE:Factory/.yast2-network.new.1905/yast2-network.changes 2024-03-15 20:27:58.712782954 +0100 @@ -1,0 +2,6 @@ +Wed Mar 13 14:20:25 UTC 2024 - Stefan Hundhammer <shundham...@suse.com> + +- Guard secret attributes against leaking to the log (bsc#1221194) +- 5.0.3 + +------------------------------------------------------------------- Old: ---- yast2-network-5.0.2.tar.bz2 New: ---- yast2-network-5.0.3.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-network.spec ++++++ --- /var/tmp/diff_new_pack.NoWUBK/_old 2024-03-15 20:28:00.372844097 +0100 +++ /var/tmp/diff_new_pack.NoWUBK/_new 2024-03-15 20:28:00.380844392 +0100 @@ -17,7 +17,7 @@ Name: yast2-network -Version: 5.0.2 +Version: 5.0.3 Release: 0 Summary: YaST2 - Network Configuration License: GPL-2.0-only ++++++ yast2-network-5.0.2.tar.bz2 -> yast2-network-5.0.3.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-5.0.2/package/yast2-network.changes new/yast2-network-5.0.3/package/yast2-network.changes --- old/yast2-network-5.0.2/package/yast2-network.changes 2024-02-08 10:08:55.000000000 +0100 +++ new/yast2-network-5.0.3/package/yast2-network.changes 2024-03-13 18:27:00.000000000 +0100 @@ -1,4 +1,10 @@ ------------------------------------------------------------------- +Wed Mar 13 14:20:25 UTC 2024 - Stefan Hundhammer <shundham...@suse.com> + +- Guard secret attributes against leaking to the log (bsc#1221194) +- 5.0.3 + +------------------------------------------------------------------- Tue Jan 16 10:34:01 UTC 2024 - Knut Anderssen <kanders...@suse.com> - Consider firmware configured interfaces as non bridgeable diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-5.0.2/package/yast2-network.spec new/yast2-network-5.0.3/package/yast2-network.spec --- old/yast2-network-5.0.2/package/yast2-network.spec 2024-02-08 10:08:55.000000000 +0100 +++ new/yast2-network-5.0.3/package/yast2-network.spec 2024-03-13 18:27:00.000000000 +0100 @@ -17,7 +17,7 @@ Name: yast2-network -Version: 5.0.2 +Version: 5.0.3 Release: 0 Summary: YaST2 - Network Configuration License: GPL-2.0-only diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-5.0.2/src/lib/y2network/connection_config/wireless.rb new/yast2-network-5.0.3/src/lib/y2network/connection_config/wireless.rb --- old/yast2-network-5.0.2/src/lib/y2network/connection_config/wireless.rb 2024-02-08 10:08:55.000000000 +0100 +++ new/yast2-network-5.0.3/src/lib/y2network/connection_config/wireless.rb 2024-03-13 18:27:00.000000000 +0100 @@ -19,12 +19,14 @@ require "y2network/connection_config/base" require "yast2/equatable" +require "yast2/secret_attributes" module Y2Network module ConnectionConfig # Configuration for wireless connections class Wireless < Base include Yast2::Equatable + include Yast2::SecretAttributes # wireless options # @@ -37,13 +39,15 @@ attr_accessor :nwid # @return [Symbol] Authorization mode (:open, :shared, :psk, :eap) attr_accessor :auth_mode + # FIXME: Consider moving keys to different classes. # @return [String] WPA preshared key - attr_accessor :wpa_psk + secret_attr :wpa_psk # @return [Integer] attr_accessor :key_length + # @return [Array<String>] WEP keys - attr_accessor :keys + secret_attr :keys # @return [Integer] default WEP key attr_accessor :default_key # @return [String] @@ -63,9 +67,10 @@ # FIXME: Consider an enum # @return [Integer] (0, 1, 2) attr_accessor :ap_scanmode + # TODO: unify psk and password and write correct one depending on mode # @return [String] - attr_accessor :wpa_password + secret_attr :wpa_password # @return [String] attr_accessor :wpa_identity # @return [String] initial identity used for creating tunnel @@ -76,8 +81,9 @@ attr_accessor :client_cert # @return [String] client private key used to encrypt for TLS attr_accessor :client_key + # @return [String] client private key password - attr_accessor :client_key_password + secret_attr :client_key_password def initialize super diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-5.0.2/test/y2network/config_test.rb new/yast2-network-5.0.3/test/y2network/config_test.rb --- old/yast2-network-5.0.2/test/y2network/config_test.rb 2024-02-08 10:08:55.000000000 +0100 +++ new/yast2-network-5.0.3/test/y2network/config_test.rb 2024-03-13 18:27:00.000000000 +0100 @@ -604,4 +604,45 @@ expect(new_config.connections).to eq(updated_connections) end end + + context "secret attributes (passwords, keys)" do + let(:conn) do + Y2Network::ConnectionConfig::Wireless.new.tap do |c| + c.wpa_psk = "s3cr3t" + c.wpa_password = "s3cr3t" + c.client_key_password = "s3cr3t" + end + end + + describe ".inspect" do + it "does not leak a password" do + expect(conn.inspect).to_not match(/s3cr3t/) + end + + it "contains <secret> instead of passwords" do + expect(conn.inspect).to match(/<secret>/) + end + end + + describe ".to_s" do + it "does not leak a password" do + # it's usually something like + # "#<Y2Network::ConnectionConfig::Wireless:0x000055b752576318>" + # so there shouldn't be any attributes - just making sure + expect(conn.to_s).to_not match(/s3cr3t/) + end + end + + describe ".wpa_psk" do + it "returns the real password" do + expect(conn.wpa_psk).to eq("s3cr3t") + end + end + + describe ".wpa_psk.to_s" do + it "returns the real password" do + expect(conn.wpa_psk.to_s).to eq("s3cr3t") + end + end + end end