Secure initial program load (IPL) code loading attributes facility
View Patent ↗A method, system, and computer program product are provided for preventing malicious code injection during Initial Program Load (IPL). A secure code loading attributes block (SCLAB) is appended to a variable sized signed binary code component to generate a combined component. The variable sized signed binary code component is Operating System (OS) code for an initial program load (IPL) process. The SCLAB comprises contents that include a length field, an identifier, flag fields, a load program status word (PSW) and a load address. The combined component is digitally signed. During IPL, the unsigned component table entries associated with the signed component are verified against the SCLAB contents.
1 . A method, comprising:
appending a secure-code-loading-attributes block (SCLAB) to a variable sized signed binary code component to generate a combined component, wherein the variable sized signed binary code component is Operating System (OS) code for an initial program load (IPL) process, and wherein the SCLAB comprises contents including a length field, an identifier, flag fields, a load program status word (PSW) and a load address,
signing the combined component using a private key, and
verifying the signed combined component during the IPL.
2 . The method of claim 1 , wherein the verifying further comprises:
decrypting, by a system boot loader, a signature of the variable sized signed binary code component and a signature of the SCLAB using a public key, wherein a signature mismatch terminates the IPL;
based on a signature match, validating the SCLAB contents; and
based on the SCLAB contents being valid, continuing the IPL.
3 . The method of claim 1 , wherein the length field specifies the length of the SCLAB, the SCLAB begins immediately following the signed binary code component, and wherein a start of the SCLAB is determined by subtracting from an end of a variable size signed binary code component address.
4 . The method of claim 1 , wherein the flag fields comprise a first flag indicating override PSW, wherein when the first flag indicating override PSW is set, a load PSW in the SCLAB is used to start the OS code instead of a PSW specified in an unsigned component table entry.
5 . The method of claim 1 , wherein the flag fields comprise a second flag indicating override load address, wherein when the second flag indicating override load address is set, a load address in the SCLAB is used instead of the load address specified in an unsigned component table entry.
6 . The method of claim 1 , wherein the SCLAB contents are set during building the variable sized signed binary code component, and wherein a mismatch of the SCLAB contents to SCLAB contents during the IPL process terminates the IPL.
7 . The method of claim 1 , wherein the contents in the SCLAB control a load location and a start address in memory without modifying the variable sized signed binary code component.
8 . A computer program product, the computer program product comprising a non-transitory tangible storage device having program code embodied therewith, the program code executable by a processor of a computer to perform a method, the method comprising:
appending a secure-code-loading-attributes block (SCLAB) to a variable sized signed binary code component to generate a combined component, wherein the variable sized signed binary code component is Operating System (OS) code for an initial program load (IPL) process, and wherein the SCLAB comprises contents including a length field, an identifier, flag fields, a load program status word (PSW) and a load address;
signing the combined component using a private key; and
verifying the signed combined component against the SCLAB contents during the IPL.
9 . The computer program product of claim 8 , wherein the verifying further comprises:
decrypting, by a system boot loader, a signature of the variable sized signed binary code component and a signature of the SCLAB using a public key, wherein a signature mismatch terminates the IPL;
based on a signature match, validating the SCLAB contents; and
based on the SCLAB contents being valid, continuing the IPL.
10 . The computer program product of claim 8 , wherein the length field specifies the length of the SCLAB, the SCLAB begins immediately following the signed binary code component, and wherein a start of the SCLAB is determined by subtracting from an end of a variable size signed binary code component address.
11 . The computer program product of claim 8 , wherein the flag fields comprise a first flag indicating override PSW, wherein when the first flag indicating override PSW is set, a load PSW in the SCLAB is used to start the OS code instead of a PSW specified in an unsigned component table entry.
12 . The computer program product of claim 8 , wherein the flag fields comprise a second flag indicating override load address, wherein when the second flag indicating override load address is set, a load address in the SCLAB is used instead of the load address specified in an unsigned component table entry.
13 . The computer program product of claim 8 , wherein the SCLAB contents are set during building the variable sized signed binary code component, and wherein a mismatch of the SCLAB contents to SCLAB contents during the IPL process terminates the IPL.
14 . The computer program product of claim 8 , wherein the contents in the SCLAB control a load location and a start address in memory without modifying the variable sized signed binary code component.
15 . A computer system, comprising:
one or more processors;
a memory coupled to at least one of the processors;
a set of computer program instructions stored in the memory and executed by at least one of the processors in order to perform actions of:
appending a secure-code-loading-attributes block (SCLAB) to a variable sized signed binary code component to generate a combined component, wherein the variable sized signed binary code component is Operating System (OS) code for an initial program load (IPL) process, and wherein the SCLAB comprises contents including a length field, an identifier, flag fields, a load program status word (PSW) and a load address;
signing the combined component using a private key; and
verifying the signed combined component against the SCLAB contents during the IPL.
16 . The computer system of claim 15 , wherein the verifying further comprises:
decrypting, by a system boot loader, a signature of the variable sized signed binary code component and a signature of the SCLAB using a public key, wherein a signature mismatch terminates the IPL;
based on a signature match, validating the SCLAB contents; and
based on the SCLAB contents being valid, continuing the IPL.
17 . The computer system of claim 15 , wherein the length field specifies the length of the SCLAB, the SCLAB begins immediately following the signed binary code component, and wherein a start of the SCLAB is determined by subtracting from an end of a variable size signed binary code component address.
18 . The computer system of claim 15 , wherein the flag fields comprise a first flag indicating override PSW, wherein when the first flag indicating override PSW is set, a load PSW in the SCLAB is used to start the OS code instead of a PSW specified in an unsigned component table entry.
19 . The computer system of claim 15 , wherein the flag fields comprise a second flag indicating override load address, wherein when the second flag indicating override load address is set, a load address in the SCLAB is used instead of the load address specified in an unsigned component table entry.
20 . The computer system of claim 15 , wherein the SCLAB contents are set during building the variable sized signed binary code component, and wherein a mismatch of the SCLAB contents to SCLAB contents during the IPL process terminates the IPL.