lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAOOmCE8ZS8uzt8UCeSCkxCeL+x4Wkqsyx0v6yOK8dkSbFpTDLQ@mail.gmail.com>
Date:   Wed, 10 May 2023 15:35:46 -0500
From:   Jorge Lopez <jorgealtxwork@...il.com>
To:     Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>
Cc:     hdegoede@...hat.com, platform-driver-x86@...r.kernel.org,
        linux-kernel@...r.kernel.org, thomas@...ch.de
Subject: Re: [PATCH v12 07/13] HP BIOSCFG driver - string-attributes

On Tue, May 9, 2023 at 8:18 AM Ilpo Järvinen
<ilpo.jarvinen@...ux.intel.com> wrote:
>
> On Fri, 5 May 2023, Jorge Lopez wrote:
>
> > HP BIOS Configuration driver purpose is to provide a driver supporting
> > the latest sysfs class firmware attributes framework allowing the user
> > to change BIOS settings and security solutions on HP Inc.’s commercial
> > notebooks.
> >
> > Many features of HP Commercial notebooks can be managed using Windows
> > Management Instrumentation (WMI). WMI is an implementation of Web-Based
> > Enterprise Management (WBEM) that provides a standards-based interface
> > for changing and monitoring system settings. HP BIOSCFG driver provides
> > a native Linux solution and the exposed features facilitates the
> > migration to Linux environments.
> >
> > The Linux security features to be provided in hp-bioscfg driver enables
> > managing the BIOS settings and security solutions via sysfs, a virtual
> > filesystem that can be used by user-mode applications. The new
> > documentation cover HP-specific firmware sysfs attributes such Secure
> > Platform Management and Sure Start. Each section provides security
> > feature description and identifies sysfs directories and files exposed
> > by the driver.
> >
> > Many HP Commercial notebooks include a feature called Secure Platform
> > Management (SPM), which replaces older password-based BIOS settings
> > management with public key cryptography. PC secure product management
> > begins when a target system is provisioned with cryptographic keys
> > that are used to ensure the integrity of communications between system
> > management utilities and the BIOS.
> >
> > HP Commercial notebooks have several BIOS settings that control its
> > behaviour and capabilities, many of which are related to security.
> > To prevent unauthorized changes to these settings, the system can
> > be configured to use a cryptographic signature-based authorization
> > string that the BIOS will use to verify authorization to modify the
> > setting.
> >
> > Linux Security components are under development and not published yet.
> > The only linux component is the driver (hp bioscfg) at this time.
> > Other published security components are under Windows.
> >
> > Signed-off-by: Jorge Lopez <jorge.lopez2@...com>
> >
> > ---
> > Based on the latest platform-drivers-x86.git/for-next
> > ---
> >  .../x86/hp/hp-bioscfg/string-attributes.c     | 415 ++++++++++++++++++
> >  1 file changed, 415 insertions(+)
> >  create mode 100644 drivers/platform/x86/hp/hp-bioscfg/string-attributes.c
> >
> > diff --git a/drivers/platform/x86/hp/hp-bioscfg/string-attributes.c b/drivers/platform/x86/hp/hp-bioscfg/string-attributes.c
> > new file mode 100644
> > index 000000000000..d74ecc973703
> > --- /dev/null

<snip>

> > +static void update_string_value(int instance_id, char *attr_value)
> > +{
> > +     struct string_data *string_data = &bioscfg_drv.string_data[instance_id];
> > +
> > +     /* Write settings to BIOS */
> > +     strscpy(string_data->current_value,
> > +             attr_value,
> > +             sizeof(string_data->current_value));
>
> Use less lines.

Done!
>
> > +}
> > +
> > +ATTRIBUTE_S_COMMON_PROPERTY_SHOW(display_name_language_code, string);
> > +static struct kobj_attribute string_display_langcode =
> > +     __ATTR_RO(display_name_language_code);
> > +
> > +ATTRIBUTE_S_COMMON_PROPERTY_SHOW(display_name, string);
> > +static struct kobj_attribute string_display_name =
> > +     __ATTR_RO(display_name);
> > +
> > +ATTRIBUTE_PROPERTY_STORE(current_value, string);
> > +static struct kobj_attribute string_current_val =
> > +     __ATTR_RW_MODE(current_value, 0644);
> > +
> > +ATTRIBUTE_N_PROPERTY_SHOW(min_length, string);
> > +static struct kobj_attribute string_min_length =
> > +     __ATTR_RO(min_length);
> > +
> > +ATTRIBUTE_N_PROPERTY_SHOW(max_length, string);
> > +static struct kobj_attribute string_max_length =
> > +     __ATTR_RO(max_length);
> > +
> > +static ssize_t type_show(struct kobject *kobj, struct kobj_attribute *attr,
> > +                      char *buf)
> > +{
> > +     return sysfs_emit(buf, "string\n");
> > +}
> > +
> > +static struct kobj_attribute string_type =
> > +     __ATTR_RO(type);
> > +
> > +static struct attribute *string_attrs[] = {
> > +     &string_display_langcode.attr,
> > +     &string_display_name.attr,
> > +     &string_current_val.attr,
> > +     &string_min_length.attr,
> > +     &string_max_length.attr,
> > +     &string_type.attr,
> > +     NULL,
> > +};
> > +
> > +static const struct attribute_group string_attr_group = {
> > +     .attrs = string_attrs,
> > +};
> > +
> > +int alloc_string_data(void)
> > +{
> > +     bioscfg_drv.string_instances_count = get_instance_count(HP_WMI_BIOS_STRING_GUID);
> > +     bioscfg_drv.string_data = kcalloc(bioscfg_drv.string_instances_count,
> > +                                       sizeof(struct string_data), GFP_KERNEL);
>
> sizeof(*bioscfg_drv.string_data) ?

Done!

>
> > +     if (!bioscfg_drv.string_data) {
> > +             bioscfg_drv.string_instances_count = 0;
> > +             return -ENOMEM;
> > +     }
> > +     return 0;
> > +}

<snip>

> > +

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ