WO2025013262A1 - 制御装置、制御方法および制御プログラム - Google Patents

制御装置、制御方法および制御プログラム Download PDF

Info

Publication number
WO2025013262A1
WO2025013262A1 PCT/JP2023/025785 JP2023025785W WO2025013262A1 WO 2025013262 A1 WO2025013262 A1 WO 2025013262A1 JP 2023025785 W JP2023025785 W JP 2023025785W WO 2025013262 A1 WO2025013262 A1 WO 2025013262A1
Authority
WO
WIPO (PCT)
Prior art keywords
code
access
debugging
unit
confidential
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
PCT/JP2023/025785
Other languages
English (en)
French (fr)
Inventor
忍 斎藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Inc
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to PCT/JP2023/025785 priority Critical patent/WO2025013262A1/ja
Priority to JP2025532335A priority patent/JPWO2025013262A1/ja
Publication of WO2025013262A1 publication Critical patent/WO2025013262A1/ja
Anticipated expiration legal-status Critical
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data

Definitions

  • the present invention relates to a control device, a control method, and a control program.
  • DAP Debug Adapter Protocol
  • DAP Debug Adapter Protocol
  • DAP enables the provision of debugging support functions such as breakpoint setting, which is a point at which the debugging process provided by the debugging device is stopped, and stepping into a function of code, from a server independent of the debugging device (hereinafter, a debugging server) (for example, see Non-Patent Document 1).
  • debugging support functions such as breakpoint setting, which is a point at which the debugging process provided by the debugging device is stopped, and stepping into a function of code, from a server independent of the debugging device (hereinafter, a debugging server) (for example, see Non-Patent Document 1).
  • the present invention has a receiving unit that receives commands related to debugging of program code from a debugging device for performing debugging of the code, and a control unit that skips an operation that leads to access to confidential code if the conditions for access are not met based on the command received by the receiving unit from the debugging device and the contents related to access to the code.
  • the present invention allows developers to debug program code without disclosing confidential code.
  • FIG. 1 is a diagram illustrating an example of an outline of a control system.
  • FIG. 2 is a diagram showing an example of a confidential code.
  • FIG. 3 is a diagram illustrating an example of an outline of the control system.
  • FIG. 4 is a diagram illustrating an example of an outline of the control system.
  • FIG. 5 is a diagram illustrating an example of a configuration of a control system.
  • FIG. 6 is a flowchart showing an example of the flow of processing executed by the control system.
  • FIG. 7 is a diagram illustrating an example of the configuration of a computer that executes a control program.
  • FIG. 8 is a diagram for explaining an example of an outline of a control system according to the reference technology.
  • FIG. 9 is a diagram for explaining an example of an outline of a control system according to the reference technology.
  • FIG. 10 is a diagram for explaining an example of an outline of a control system according to the reference technology.
  • Figs. 8 to 10 are diagrams for explaining an example of the outline of a control system according to the reference technology.
  • the control system 1# performs code debugging.
  • the control system 1# has a debugging support function (breakpoint setting, step-in, etc.), a development tool 20, a debug server 30 independent of the development tool 20, and a DAP 10#.
  • the DAP 10# is a public protocol for debugging that performs communication processing to enable the debug processing of the code of the debug server 30 to be provided.
  • the DAP 10# of the control system 1# transmits a reference source code in advance to the development tool 20 and the debug server 30.
  • the source code refers to a computer program written in a language or data format that is easy for humans to understand and write, such as a programming language.
  • the development tool 20 of the control system 1# accepts debug operations from the developer via the GUI (Graphic User Interface) of the developer's terminal or via a network such as the Internet ((0) debug operation in FIG. 8 (breakpoint setting, code execution, step-in request, etc.)).
  • the DAP 10# transmits commands (instructions) related to the debug process received from the development tool 20 to the debug server 30 ((1) command transmission in FIG. 8 (breakpoint setting, code execution, step-in request, etc.)).
  • the debug server 30 executes debugging processes such as stepping into the code included in the command content and stopping at a breakpoint, and returns the results of the debugging processes to the development tool 20 side (DAP10#) ((2) in FIG. 8: Debugging processes are executed on the debug server side and the results are provided to the development tool side).
  • DAP 10# sends a reply to the development tool 20 in response to the command received from the debug server 30 ((3) Command reply (stop event notification, stack frame, etc.) in FIG. 8).
  • DAP 10# sends a reply to the development tool 20 regarding a stop event notification that stops the debugging process, and information about the function executed up until the breakpoint, such as a stack frame that may include the name of the called function.
  • the development tool 20 displays the debug information, which is the reply to the command ((4) Debug information display in FIG. 8).
  • the DAP 10# of the control system 1# separates confidential code.
  • the DAP 10# transmits source code that does not include confidential code (source code (without confidential code) in Fig. 9) to the development tool 20, and transmits all source code that includes confidential code (source code (whole) in Fig. 9) to the debug server 30.
  • the development tool 20 executes a debug process by exchanging commands with the debug server 30 via the DAP 10#.
  • the debug server 30 needs to hold the source code (in its entirety) in order to generate an executable file for performing the debugging process.
  • the debugging process is not performed on the source code (without confidential code), so the development tool 20 does not generate (build) an executable file for performing the debugging process, and does not need to hold the source code (in its entirety). Therefore, in the example shown in FIG. 9, the control system 1# can use the DAP 10# to perform the debugging process without the developer having to physically place the confidential code on their side.
  • the reference technology may not allow the developer to debug the program code without disclosing the confidential code to the developer.
  • the reply from the debug server 30 to the command may contain confidential code information, and the confidential code information may be leaked from the reply.
  • the stack frame may include the name of the function at the time of execution of the debug process on the confidential code.
  • the stack frame when the program is stopped at NGClass reveals the immediately preceding confidential code, NGClass.
  • a debug process on confidential code such as SecretFramework is executed before the debug process is stopped, such confidential code will also be revealed.
  • This embodiment has been made to solve the above-mentioned problems, and allows developers to debug program code without disclosing confidential code.
  • FIG. 1 An example of an overview of a control system 1 according to an embodiment will be described below with reference to Figures 1 to 4.
  • Figures 1, 3, and 4 are diagrams for explaining an example of an overview of a control system.
  • Figure 2 is a diagram showing an example of a confidential code.
  • the control system 1 has a DAP proxy 10 instead of a DAP 10# according to the reference technology.
  • the control system 1 receives a command from the development tool 20 via the DAP proxy 10, and if the access conditions are not met based on the command and the content related to access to the code, skips the operation that leads to access to the confidential code.
  • the access conditions refer to, for example, the conditions under which the code can be accessed.
  • the access conditions refer to the code to be accessed being non-confidential code (for example, OKClass and OKClass2, etc., which are set as an Allow list (a list of publicly accessible code) that can be accessed, as described below).
  • the debug information does not include information about the execution of the confidential code, so the control system 1 can perform debugging without the developer being able to see or understand the implementation contents of the confidential code.
  • the DAP proxy 10 is, for example, a relay mechanism between the development tool 20 and the debug server 30, and corresponds to DAP 10# in the reference technology.
  • the development tool 20 is, for example, a debugging device for performing debugging on program code.
  • the command is, for example, a command related to debugging on code.
  • the skip means, for example, omitting an operation that leads to access to confidential code, or prohibiting an operation that should be performed without performing the operation.
  • the confidential code is, for example, code whose function contents should be kept secret from developers.
  • the control system 1 conceals or deletes the contents that lead to information leakage of the confidential code by the DAP proxy 10. As a result, information on the execution of the confidential code is not included in the debug information, so the control system 1 can perform debugging without the developer being able to see or understand the implementation contents of the confidential code.
  • the examples shown in Figures 1 to 4 are merely examples, and the control system 1 according to this embodiment is not limited to the examples shown in Figures 1 to 4.
  • the control system 1 according to this embodiment only needs to receive a command from the development tool 20 by the DAP proxy 10, and skip an operation that leads to access to the confidential code if the conditions for access are not met based on the command and the contents related to access to the code.
  • the control system 1 classifies confidential code into two categories: internal concealment code and complete concealment code.
  • internal concealment code refers to, for example, code in which the contents of a function are not disclosed, but the invocation of the function is permitted.
  • internal concealment code refers to, for example, code that a developer can call when programming, but the existence of the function itself is not concealed from the developer.
  • Complete concealment code refers to, for example, code in which the contents of a function are not disclosed, and the invocation of the function is not permitted.
  • complete concealment code refers to, for example, code that a developer cannot call when programming, and the existence of the function itself is concealed from the developer.
  • the control system 1 aims to conceal the implementation contents during the development process, regardless of the type of code.
  • FIG. 1 is also a sequence diagram showing an example of the flow of processing for skipping an operation leading to access to confidential code by the control system 1.
  • the access check unit 121 of the DAP proxy 10 analyzes the contents of the command sent and received, and skips dangerous operations that could lead to the leakage of confidential code, such as operations that lead to access to confidential code.
  • the access check unit 121 checks the contents of the command and the access to the code received from the development tool 20, and if the access conditions are not met, the access check unit 121 makes the debug server 30 skip operations that lead to access to the confidential code, such as stepping into the confidential code. For example, if the command received from the development tool 20 by the receiving unit 112 includes an operation that leads to access to the confidential code, the access check unit 121 determines that the access conditions are not met and skips this operation. As an example, the access check unit 121 analyzes the contents of the command sent from the development tool 20, and if the command includes an operation such as stepping into internal hidden code such as RefNGClass, it determines that the access conditions are not met and skips this operation. As a result, the debug information does not include information about the execution of the confidential code, so the access check unit 121 can perform debugging without the developer being able to see or understand the implementation contents of the confidential code.
  • the command received from the development tool 20 by the receiving unit 112 includes an operation that leads to access
  • the access check unit 121 causes the DAP proxy 10 to not respond to the development tool 20 about the skipped operation, but causes the debug server 30 to automatically move to the next line (statement) of code and execute the debug process.
  • the access check unit 121 causes the DAP proxy 10 to send back the results of the debug process performed by the debug server 30 to the development tool 20.
  • OKClass and OKClass2 are preset in the DAP proxy 10 as the Allow list (a list of publicly accessible code) that can be accessed, according to an access condition definition file that defines the conditions for accessing code.
  • RefNGClass is preset in the DAP proxy 10 as the Executable list (a list of internally hidden code) that may not be accessible, according to the access condition definition file.
  • the development tool 20 sends a step-in request to the DAP proxy 10, requesting step-in.
  • the development tool 20 sends a step-in request to RefNGClass.
  • the DAP proxy 10 transfers the step-in request to, for example, the debug server 30.
  • the debug server 30 executes a debug process on, for example, one line of code included in the step-in request, and notifies the DAP proxy 10 of a stop event.
  • the DAP proxy 10 sends, for example, a stack trace information acquisition request to the debug server 30 to acquire stack trace information.
  • the debug server 30 sends, for example, a stack frame to the DAP proxy 10.
  • the access check unit 121 of the DAP proxy 10 skips the step-in, for example, because RefNGClass, which is the topmost stack, cannot be made public.
  • the debug server 30 then, for example, exits this function and notifies the DAP proxy 10 of a stop event.
  • the DAP proxy 10 then, for example, notifies the development tool 20 of a stop event.
  • the DAP proxy 10 notifies the development tool 20 that it has performed a step-over without entering (stepping in) inside RefNGClass.
  • Fig. 4 is also a sequence diagram showing an example of a flow of a concealment process of contents leading to information leakage of confidential code by the control system 1.
  • the reply content concealment unit 122 of the DAP proxy 10 conceals or deletes the contents leading to information leakage of confidential code.
  • the reply content concealment unit 122 deletes stack frames of functions such as NGClass, RefNGClass, and SecretFramework that are not in the permission list of the access condition definition file.
  • OKClass and OKClass2 are preset in the DAP proxy 10 as the Allow list that can be accessed by the access condition definition file, and RefNGClass is preset as the Executable list that cannot be accessed.
  • the development tool 20 sends a breakpoint setting request to the DAP proxy 10 requesting that a breakpoint be set.
  • the DAP proxy 10 transfers the breakpoint setting request to the debug server 30, for example.
  • the development tool 20 sends a debug start request to the DAP proxy 10, for example.
  • the DAP proxy 10 transfers a debug start request to the debug server 30.
  • the debug server 30 then, for example, notifies the DAP proxy 10 of a stop event (at a breakpoint).
  • the DAP proxy 10 then, for example, sends a stack trace information acquisition request to the debug server 30.
  • the debug server 30 then, for example, replies with a stack frame.
  • the reply content concealment unit 122 of the DAP proxy 10 conceals or deletes the confidential code.
  • the reply content concealment unit 122 deletes stack frames of functions such as NGClass, RefNGClass, and SecretFramework that are not on the permission list.
  • the reply content concealment unit 122 conceals stack frames of functions such as NGClass, RefNGClass, and SecretFramework that are not on the permission list by masking these stack frames.
  • the DAP proxy 10 notifies the development tool 20 of a stop event (at a breakpoint), for example.
  • the DAP proxy 10 replies with the stack frame to the development tool 20, for example.
  • the DAP proxy 10 replies with information that the stack frame of the confidential code has been deleted to the development tool 20.
  • FIG. 5 is a diagram showing an example of the configuration of a control system.
  • the control system 1 includes a DAP proxy 10, a development tool 20, and a debug server 30.
  • the DAP proxy 10 is a control device that receives a command from the development tool 20, and skips an operation that leads to access to confidential code if the access conditions are not met based on the command and the content related to the access to the code.
  • the control device is the DAP proxy 10, which is a public protocol for debugging, but is not particularly limited as long as it has the above-mentioned functions.
  • the control device by applying the control device to the DAP proxy 10, the developer can use the debugging support function without switching the developer's own development tool, regardless of the programming language or development environment adopted by the participating project (PJ: Project), even if the PJ is changed.
  • the DAP proxy 10 has a communication unit 11, a control unit 12, and a storage unit 13.
  • the communication unit 11 transmits and receives various information between the development tool 20 and the debug server 30.
  • the communication unit 11 is realized by, for example, a network interface card (NIC).
  • NIC network interface card
  • the communication unit 11 includes a transmission unit 111 and a reception unit 112.
  • the transmission unit 111 transmits various information to the development tool 20 and the debug server 30. As an example, the transmission unit 111 sends a reply regarding the debugging process to the development tool 20. For example, the transmission unit 111 may transmit code that does not include confidential code to the development tool 20. As an example, the transmission unit 111 transmits source code that does not include confidential code to the development tool 20, and transmits source code that includes confidential code to the debug server 30. That is, the transmission unit 111, for example, causes both the development tool 20 and the debug server 30 to hold source code, but does not cause the development tool 20 to hold confidential code.
  • the transmission unit 111 can transmit code that does not contain the confidential code to the development tool 20, thereby isolating the confidential code from the development tool 20 and preventing leakage of the confidential code, and then allow the development tool 20 to execute the debugging process.
  • the receiving unit 112 receives a command related to the debugging process on the code from the development tool 20 for performing debugging process on the program code.
  • the receiving unit 112 receives a command related to the debugging process on the code from the communication unit 21 of the development tool 20 via a network such as the Internet.
  • the receiving unit 112 may receive a reply related to the debugging process from the debug server 30.
  • the receiving unit 112 receives a reply to the command from the communication unit 31 of the debug server 30 via the network and a debug adapter for each language.
  • the control unit 12 controls the entire DAP proxy 10.
  • the control unit 12 is configured with one or more processors having programs in which various processing procedures are defined and internal memory in which control information is stored, and the processor executes each process using the programs and internal memory.
  • the control unit 12 is realized by, for example, electronic circuits such as a central processing unit (CPU), a micro processing unit (MPU), or a graphics processing unit (GPU), or integrated circuits such as an application specific integrated circuit (ASIC) or a field programmable gate array (FPGA).
  • the control unit 12 has an access check unit 121 and a reply content concealment unit 122.
  • the access check unit 121 skips an operation that leads to access to confidential code when the access condition is not satisfied based on the command and the content related to the access to the code received from the development tool 20 by the receiving unit 112. For example, when the command received from the development tool 20 by the receiving unit 112 includes an operation that leads to access to confidential code, the access check unit 121 determines that the access condition is not satisfied and skips this operation. As an example, the access check unit 121 analyzes the content of the command transmitted from the development tool 20, and when the command includes a dangerous operation that leads to access to confidential code, such as stepping into internal hidden code such as RefNGClass, skips this operation. This allows the access check unit 121 to suppress the risk of confidential code leakage in the communication with the development tool 20 accompanying the debugging process.
  • the access check unit 121 may skip the operation that leads to access to the confidential code, and execute control related to the debugging process based on the content related to the access to the next code.
  • the access check unit 121 may skip this operation and cause the debug server 30 to skip into the next code based on the content related to the access to the next code. In this way, the access check unit 121 can perform debugging while reducing the risk of confidential code in interactions with the development tool 20.
  • the access check unit 121 may reflect the contents of the debug process in the code including confidential code of the debug server 30, which is independent of the debugging device, when the access conditions are met based on the contents of the access to the command and code received from the development tool 20 by the receiving unit 112.
  • the access check unit 121 determines that the access conditions are met, and causes the debug server 30 to step into OKClass and OKClass2 in the source code of the debug server 30. In this way, the access check unit 121 can reflect the contents of the debug process in the code of the debug server 30 when the risk of confidential code leakage is low.
  • the access check unit 121 may skip the operation that leads to access to the confidential code.
  • the access check unit 121 if the contents of the reply received by the receiving unit 112 from the debug server include a stack frame with RefNGClass at the top, which indicates that the internal hidden code RefNGClass has been stepped into, the access check unit 121 skips the step-in that leads to access to RefNGClass.
  • Operations that may lead to information leakage of confidential code may include not only operations that directly access confidential code, as in the above example, but also operations that allow indirect access to confidential code.
  • an operation that allows access to a function that has the ability to obtain information at the time a program is executed (hereinafter, a reflection function) (e.g., importing a reflection function) allows the developer of development tool 20 to obtain the names of functions (classes and methods) during program execution, making it possible to view confidential code by using the reflection function.
  • the access checking unit 121 may skip the operation that indirectly leads to information leakage of the confidential code.
  • the access checking unit 121 prohibits an operation that accesses a prohibited function such as the reflection function described above. This allows the access checking unit 121 to further reduce the risk of confidential code leakage in interactions with the development tool 20 associated with the debugging process.
  • the reply content concealment unit 122 conceals or deletes the contents that may lead to information leakage of confidential code. For example, the reply content concealment unit 122 analyzes the stack frames received by the receiving unit 112 from the debugging server 30, and if stack frames of functions such as NGClass, RefNGClass, and SecretFramework that are not in the permission list are included, the reply content concealment unit 122 conceals or deletes the stack frames by using a mask that covers them.
  • the reply content concealment unit 122 can reduce the risk of confidential code leakage in interactions with the debug server 30 associated with the debugging process. Furthermore, if the contents of a reply received from the debug server 30 include contents that could lead to confidential code information leakage, the reply content concealment unit 122 deletes the contents that could lead to confidential code information leakage, thereby preventing the developer from seeing or being aware of the existence of this content, thereby further reducing the risk of confidential code leakage. If the reply content concealment unit 122 includes complete concealment code such as NGClass, which poses a high risk if leaked, the reply content concealment unit 122 can particularly reduce the risk of confidential code leakage by deleting the complete concealment code.
  • complete concealment code such as NGClass
  • the reply content concealment unit 122 may conceal or delete the contents that could lead to the leakage of confidential code information.
  • the reply content concealment unit 122 deletes the stack frames of these functions.
  • the reply content concealment unit 122 can reduce the risk of confidential code leakage in interactions with the development tool 20 associated with the debugging process. Furthermore, if the contents of a reply received from the debug server 30 include contents that could lead to confidential code information leakage, the reply content concealment unit 122 deletes the contents that could lead to confidential code information leakage, thereby preventing the developer from seeing or being aware of the existence of this content, thereby further reducing the risk of confidential code leakage. If the reply content concealment unit 122 includes complete concealment code such as NGClass, which poses a high risk if leaked, the reply content concealment unit 122 can particularly reduce the risk of confidential code leakage by deleting the complete concealment code.
  • complete concealment code such as NGClass
  • the storage unit 13 stores various information.
  • the storage unit 13 stores source code including confidential code, an OS (Operating System) executed by the DAP proxy 10, various programs, etc.
  • the storage unit 13 is realized by, for example, a storage device such as a hard disk drive (HDD), a solid state drive (SSD), or an optical disk, or a semiconductor memory capable of rewriting information such as a random access memory (RAM), a flash memory, or a non-volatile static random access memory (NVSRAM).
  • HDD hard disk drive
  • SSD solid state drive
  • NVSRAM non-volatile static random access memory
  • the development tool 20 is a debugging device for performing debugging on the code of a program.
  • the development tool 20 is realized by, for example, Vscode.
  • the debugging device is the development tool 20 for developing programs such as editing and debugging, but is not particularly limited as long as it has the above-mentioned functions.
  • the development tool 20 has a communication unit 21, a control unit 22, a storage unit 23, an operation reception unit 24, and a display unit 25.
  • the communication unit 21 transmits and receives various information to and from the DAP proxy 10.
  • the communication unit 21 is realized by, for example, a NIC etc. In the example shown in FIG.
  • the transmission unit 211 transmits various information to the DAP proxy 10. For example, the transmission unit 211 transmits to the DAP proxy 10 a command related to debugging of the code.
  • the receiving unit 212 receives various information from the DAP proxy 10. As one example, the receiving unit 212 receives source code that does not include confidential code from the DAP proxy 10. As another example, the receiving unit 212 receives a reply to a command from the DAP proxy 10, in which stack frames of functions such as NGClass, RefNGClass, and SecretFramework that are not on the permission list have been masked or deleted.
  • stack frames of functions such as NGClass, RefNGClass, and SecretFramework that are not on the permission list have been masked or deleted.
  • the control unit 22 controls the entire development tool 20.
  • the control unit 22 is configured with one or more processors having programs that define various processing procedures and internal memory that stores control information, and the processor executes each process using the programs and internal memory.
  • the control unit 22 is realized, for example, by electronic circuits such as a CPU, MPU, GPU, or integrated circuits such as an ASIC or FPGA.
  • the storage unit 23 stores various information.
  • the storage unit 23 stores source code that does not include confidential code, and an OS and various programs executed by the development tool 20.
  • the storage unit 23 is realized by, for example, a storage device such as an HDD, SSD, or optical disk, or a semiconductor memory such as a RAM, flash memory, or NVSRAM that is capable of rewriting information.
  • the operation reception unit 24 receives various operations. For example, the operation reception unit 24 receives commands related to debugging processing for code from a developer's terminal.
  • the operation reception unit 24 is realized, for example, by a unit that receives debugging operations related to debugging processing from the developer's terminal via the Internet, or by a GUI, etc.
  • the display unit 25 displays various information. For example, the display unit 25 displays the contents of a reply to a command in which stack frames of functions such as NGClass, RefNGClass, and SecretFramework that are not on the permission list have been masked or deleted.
  • the display unit 25 is realized by, for example, the desktop of the terminal.
  • the debug server 30 is a server independent of the debugging device.
  • the debug server 30 is a server for performing debugging processing independent of the development tool 20.
  • the debug server 30 has a communication unit 31, a control unit 32, and a storage unit 33.
  • the communication unit 31 transmits and receives various information to and from the DAP proxy 10.
  • the communication unit 31 is realized by, for example, a NIC. In the example shown in FIG.
  • the transmitting unit 311 transmits various information to the DAP proxy 10. For example, the transmitting unit 311 transmits to the DAP proxy 10 a reply to a command.
  • the receiving unit 312 receives various information from the DAP proxy 10. As one example, the receiving unit 312 receives source code including confidential code from the DAP proxy 10. As another example, the receiving unit 312 receives a command from the DAP proxy 10 including stack frames of functions such as NGClass, RefNGClass, and SecretFramework that are not on the permission list.
  • the control unit 32 controls the entire debug server 30.
  • the control unit 32 is configured with one or more processors having programs that define various processing procedures and internal memory that stores control information, and the processor executes each process using the programs and internal memory.
  • the control unit 32 is realized, for example, by electronic circuits such as a CPU, MPU, GPU, or integrated circuits such as an ASIC or FPGA.
  • the storage unit 33 stores various information.
  • the storage unit 33 stores source code including confidential code, and an OS and various programs executed by the debug server 30.
  • the storage unit 33 is realized by, for example, a storage device such as an HDD, SSD, or optical disk, or a semiconductor memory such as a RAM, flash memory, or NVSRAM that is capable of rewriting information.
  • FIG. 6 is a flowchart showing an example of the flow of processing executed by the control system.
  • step S11 the receiving unit 112 receives a command related to debugging the code from the development tool 20 for performing debugging on the program code.
  • the receiving unit 112 receives a command from the development tool 20 when a command operation is accepted by the operation accepting unit 24 of the development tool 20.
  • the access checking unit 121 skips the operation that leads to access to the confidential code in step S13. For example, if the command sent from the development tool 20 includes a dangerous operation that leads to access to the confidential code, such as stepping into internal hidden code such as RefNGClass, the access checking unit 121 determines that the access conditions are not met and skips this operation.
  • the access check unit 121 reflects the contents of the debug process in the code including the confidential code of the debug server 30, which is independent of the debugging device, in step S14. For example, if the contents regarding the access to the command and code are stepping into OKClass and OKClass2 set as the Allow list, the access check unit 121 determines that the access conditions are met and causes the debug server 30 to step into OKClass and OKClass2 in the source code of the debug server 30.
  • the DAP proxy 10 can be implemented by installing a control program as package software or online software on a computer.
  • a computer can function as the DAP proxy 10 by executing the control program.
  • FIG. 7 is a diagram showing an example of the configuration of a computer that executes a control program.
  • a computer 1000 has a memory 1010, a CPU 1020, a hard disk drive interface 1030, a disk drive interface 1040, a serial port interface 1050, a video adapter 1060, and a network interface 1070. Each of these components is connected by a bus 1080.
  • the memory 1010 includes a ROM (Read Only Memory) 1011 and a RAM 1012.
  • the ROM 1011 stores a boot program such as a BIOS (Basic Input Output System).
  • BIOS Basic Input Output System
  • the hard disk drive interface 1030 is connected to a hard disk drive 1090.
  • the disk drive interface 1040 is connected to a disk drive 1100.
  • a removable storage medium such as a magnetic disk or optical disk is inserted into the disk drive 1100.
  • the serial port interface 1050 is connected to, for example, a mouse 1110 and a keyboard 1120.
  • the video adapter 1060 is connected to, for example, a display 1130.
  • the hard disk drive 1090 stores, for example, an OS 1091, an application program 1092, a program module 1093, and program data 1094. That is, the program that defines each process executed by the DAP proxy 10 is implemented as a program module 1093 in which computer-executable code is written.
  • the program module 1093 is stored, for example, in the hard disk drive 1090.
  • a program module 1093 for executing processes similar to the functional configuration of the DAP proxy 10 is stored in the hard disk drive 1090.
  • the hard disk drive 1090 may be replaced by an SSD.
  • the data used in the processing of the above-described embodiment is stored as program data 1094, for example, in memory 1010 or hard disk drive 1090. Then, the CPU 1020 reads the program module 1093 or program data 1094 stored in memory 1010 or hard disk drive 1090 into RAM 1012 as necessary and executes it.
  • the program module 1093 and program data 1094 are not limited to being stored in the hard disk drive 1090, but may be stored in a removable storage medium, for example, and read by the CPU 1020 via the disk drive 1100 or the like. Alternatively, the program module 1093 and program data 1094 may be stored in another computer connected via a network (such as a LAN (Local Area Network), WAN (Wide Area Network)). The program module 1093 and program data 1094 may then be read by the CPU 1020 from the other computer via the network interface 1070.
  • a network such as a LAN (Local Area Network), WAN (Wide Area Network)
  • Control system 10 DAP proxy (control device) 11, 21, 31 Communication unit 12, 22, 32 Control unit 13, 23, 33 Storage unit 20 Development tool (debugging device) 24 Operation reception unit 25 Display unit 30 Debug server (server) 111, 211, 311 Transmission unit 112, 212, 312 Reception unit 121 Access check unit 122 Reply content concealment unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

DAPプロキシ(10)は、プログラムのコードに対してデバッグ処理を行うための開発ツール(20)から、コードに対するデバッグ処理に関するコマンドを受信する受信部(112)と、受信部(112)によって開発ツール(20)から受信されたコマンドおよびコードへのアクセスに関する内容に基づいて、アクセスの条件が満たされない場合、機密コードへのアクセスにつながる操作をスキップさせるアクセスチェック部(121)と、を有する。

Description

制御装置、制御方法および制御プログラム
 本発明は、制御装置、制御方法および制御プログラムに関する。
 ソフトウェア開発の現状として、フリーランスやクラウドソーシングの活用、リモートワークの推進により、企業の管理区画外(自宅やシェアオフィス等)でのプログラムの編集、デバッグ等の開発の遂行が増加している。例えば、通常はプログラムのコードをデバッグするためのデバッグ装置(プログラムの編集、デバッグ等の開発を行うための開発ツール等)によって提供されるデバッグ支援機能を、デバッグ装置とは独立したサーバから提供可能にするための通信処理等を行うデバッグ処理の公開プロトコル(DAP:Debug Adapter Protocol)が近年公開されている。DAPの活用例として、DAPによって、デバッグ装置等によって提供されるデバッグ処理等の処理を停止する箇所であるブレイクポイント設定や、コードの関数の中に入るステップイン等のデバッグ支援機能を、デバッグ装置から独立したサーバ(以降、デバッグサーバ)からの提供を可能とする例が存在する(例えば、非特許文献1参照)。
Debug Adapter Protocol,[online],[2023年6月19日検索],インターネット<https://microsoft.github.io/debug-adapter-protocol/>
 しかし、従来技術では、開発者に機密コードを開示することなく、プログラムのコードのデバッグ処理を行わせることができない場合がある。例えば、従来技術では、企業によって保有されていたり、顧客から委託されたりするプログラムに含まれる機密コードが、リモートでコードのデバッグ処理等を行う開発者によって閲覧されうるセキュリティ上の懸念がある。また、開発者が外部の攻撃者ではない開発プロジェクトに所属するリモート開発者であっても、開発者によるオペレーションミス等により、外部のWebサイトや外部のリポジトリに、機密コードが公開されてしまうコードの漏洩のリスクが高い。
 上述の課題を解決するため、本発明は、プログラムのコードに対してデバッグ処理を行うためのデバッグ装置から、当該コードに対する前記デバッグ処理に関するコマンドを受信する受信部と、前記受信部によって前記デバッグ装置から受信された前記コマンドおよび前記コードへのアクセスに関する内容に基づいて、前記アクセスの条件が満たされない場合、機密コードへのアクセスにつながる操作をスキップさせる制御部と、を有する。
 本発明によれば、開発者に機密コードを開示することなく、プログラムのコードのデバッグ処理を行わせることができる。
図1は、制御システムの概要の一例について説明するための図である。 図2は、機密コードの一例を示す図である。 図3は、制御システムの概要の一例について説明するための図である。 図4は、制御システムの概要の一例について説明するための図である。 図5は、制御システムの構成の一例を示す図である。 図6は、制御システムによって実行される処理の流れの一例を示すフローチャートである。 図7は、制御プログラムを実行するコンピュータの構成の一例を示す図である。 図8は、参考技術に係る制御システムの概要の一例について説明するための図である。 図9は、参考技術に係る制御システムの概要の一例について説明するための図である。 図10は、参考技術に係る制御システムの概要の一例について説明するための図である。
 以下、図面を用いて本発明の実施形態について説明するが、本発明は、以下の実施形態に限定されない。また、図面の記載は、同一部分には同一の符号を付しており、重複する説明は省略され、同様の機能を有する部材および同様の処理の説明も省略される。
[0.参考技術]
[概要の一例]
 本実施形態について説明する前に、図8~図10を用いて、参考技術に係る制御システム1#の概要の一例について説明する。図8~図10は、参考技術に係る制御システムの概要の一例について説明するための図である。図8~図10に示される例では、制御システム1#は、コードのデバッグ処理を行う。図8~図10に示される例では、制御システム1#は、デバッグ支援機能(ブレイクポイント設定やステップイン等)を、開発ツール20と、開発ツール20とは独立したデバッグサーバ30と、DAP10#とを有する。DAP10#は、デバッグサーバ30のコードに対するデバッグ処理を提供可能にするための通信処理を行うためのデバッグ処理の公開プロトコルである。
[デバッグ支援機能の利用の一例]
 まず、図8を用いて、制御システム1#によるデバッグ支援機能の利用の一例について説明する。図8に示される例では、制御システム1#のDAP10#は、あらかじめ、参照用のソースコードを開発ツール20およびデバッグサーバ30に送信する。ソースコードとは、例えば、プログラミング言語等の人間が理解、記述しやすい言語やデータ形式によって書き記されたコンピュータプログラムのことをいう。
 例えば、制御システム1#の開発ツール20は、開発者の端末のGUI(Grafic User Interface)や、およびインターネット等のネットワークを介して、開発者からデバッグ操作を受け付ける(図8の(0)デバッグ操作(ブレイクポイントの設定、コード実行、ステップイン要求等)。次に、DAP10#は、例えば、開発ツール20から受信したデバッグ処理に関するコマンド(命令)をデバッグサーバ30に送信する(図8の(1)コマンド送信(ブレイクポイントの設定、コード実行、ステップイン要求等))。
 次に、図8に示される例では、デバッグサーバ30は、コマンドの内容に含まれるコードへのステップインおよびブレイクポイントでの停止等のデバッグ処理を実行し、デバッグ処理の結果を開発ツール20側(DAP10#)に返信する(図8の(2)デバッグサーバ側で、デバッグ処理を実行し、結果を開発ツール側に提供)。
 次に、図8に示される例では、DAP10#は、デバッグサーバ30から受信したコマンドに対する返信を開発ツール20に対して行う(図8の(3)コマンド返信(停止イベント通知、スタックフレーム等))。例えば、DAP10#は、デバッグ処理を停止する停止イベント通知、および、ブレイクポイントの直前までに実行された関数の情報であって、呼ばれた関数の名前等が含まれうるスタックフレーム等に関する返信を開発ツール20に対して行う。次に、図8に示される例では、開発ツール20は、コマンドに対する返信内容であるデバッグ情報を表示する(図8の(4)デバッグ情報表示)。
[DAPを利用した機密コードの分離の概要の一例]
 図9を用いて、制御システム1#によるDAPを利用した機密コードの分離の概要の一例について説明する。図9に示される例では、制御システム1#のDAP10#は、機密コードを分離する。例えば、DAP10#は、図8に示される例と異なり、開発ツール20に機密コードが含まれないソースコード(図9のソースコード(機密コードなし))を送信し、デバッグサーバ30に機密コードが含まれる全てのソースコード(図9のソースコード(全体))を送信する。例えば、開発ツール20は、DAP10#を介してデバッグサーバ30とコマンドのやりとりを通じてデバッグ処理を実行する。
 ここで、図9に示される例では、デバッグサーバ30は、デバッグ処理を実行するための実行ファイルを生成するため、ソースコード(全体)を保持する必要がある。一方、図9に示される例では、ソースコード(機密コードなし)には、デバッグ処理は実行されないため、開発ツール20は、デバッグ処理を実行するための実行ファイルを生成(ビルド)せず、ソースコード(全体)を保持する必要がない。このため、図9に示される例では、制御システム1#は、DAP10#を利用することによって、開発者側に機密コードを物理的に配置しなくても、デバッグ処理を行わせることができるようになる。
[課題の一例]
 次に、図10を用いて、参考技術の課題の一例について説明する。上述のように制御システム1#がDAP10#を利用した場合、参考技術には、開発者に機密コードを開示することなく、プログラムのコードのデバッグ処理を行わせることができない場合がある。例えば、参考技術では、コマンドの種類によっては、デバッグサーバ30からのコマンドに対する返信内容に機密コードの情報も含まれており、この返信内容から機密コードの情報漏洩が起こってしまう場合がある。
 一例として、スタックトレースの要求(例えば、予めブレイクポイントが設定されている場合や、プログラムにエラーが発生した場合等により、実行中のコンピュータプログラムが停止した際に、停止の直前まで実行されていた関数やメソッド等の履歴情報を表示させる要求)が含まれるコマンドに対する返信内容がスタックフレームである場合、スタックフレームに機密コードに対するデバッグ処理の実行時の関数の名前等が含まれる場合がある。図10に示される例では、NGClassにおいて停止した場合のスタックフレームでは、直前の機密コードであるNGClassが露見する。それ以外にもデバッグ処理の停止に至るまでに、例えば、SecretFramework等の機密コードに対するデバッグ処理が実行された場合、このような機密コードも露見してしまう。別の一例として、開発ツール20側に機密コードが存在しなくても、開発者はデバッグ情報から機密コードに対するデバッグ処理の実行時の情報を理解できれば、デバッグサーバ30に実装される機密コードの内容を容易に推測できるため、機密コードの情報が漏洩してしまう。
 本実施形態は、上述の課題を解決するためになされたものであり、開発者に機密コードを開示することなく、プログラムのコードのデバッグ処理を行わせることができる。
[1.実施形態]
[概要の一例]
 以下、図1~図4を用いて、実施形態に係る制御システム1の概要の一例について説明する。図1、図3および図4は、制御システムの概要の一例について説明するための図である。図2は、機密コードの一例を示す図である。図1~図4に示される例では、制御システム1は、参考技術に係るDAP10#の代わりに、DAPプロキシ10を有する。
 図1~図4に示される例では、制御システム1は、DAPプロキシ10によって、開発ツール20からコマンドを受信し、コマンドおよびコードへのアクセスに関する内容に基づいて、アクセスの条件が満たされない場合、機密コードへのアクセスにつながる操作をスキップさせる。ここで、アクセスの条件とは、例えば、コードにアクセス可能な条件のことをいう。一例として、アクセスの条件とは、アクセス先のコードが機密コードでないコード(例えば、後述のアクセスすることができるAllow list(許可リスト=公開可能コードのリスト)として設定されているOKClassおよびOKClass2等)であることをいう。これにより、デバッグ情報の中に機密コードの実行時の情報が含まれなくなるため、制御システム1は、機密コードの実装内容を開発者に見せることも把握させることもなく、デバッグ処理を行わせることができる。
 ここで、DAPプロキシ10とは、例えば、開発ツール20とデバッグサーバ30との中継機構であり、参考技術のDAP10#に対応するものをいう。開発ツール20とは、例えば、プログラムのコードに対してデバッグ処理を行うためのデバッグ装置のことをいう。コマンドとは、例えば、コードに対するデバッグ処理に関するコマンドのことをいう。スキップとは、例えば、機密コードへのアクセスにつながる操作を省略することや、本来やるべき処理をやらないという意味で禁止することをいう。機密コードとは、例えば、開発者に対して、関数の中身等を非公開にすべきコードのことをいう。
 また、図1~図4に示される例では、制御システム1は、DAPプロキシ10によって、コマンドに対する返信の内容に、機密コードの情報漏洩につながる内容が含まれる場合、機密コードの情報漏洩につながる内容を秘匿にするか、または削除する。これにより、デバッグ情報の中に機密コードの実行時の情報が含まれなくなるため、制御システム1は、機密コードの実装内容を開発者に見せることも把握させることもなく、デバッグ処理を行わせることができる。なお、図1~図4に示される例は一例にすぎず、本実施形態に係る制御システム1は、図1~図4に示される例に限定されない。本実施形態に係る制御システム1は、DAPプロキシ10によって、開発ツール20からコマンドを受信し、コマンドおよびコードへのアクセスに関する内容に基づいて、アクセスの条件が満たされない場合、機密コードへのアクセスにつながる操作をスキップさせるものであればよい。
[機密コードの一例]
 次に、図2を用いて機密コードの一例について説明する。プログラムの開発では、ソースコードを解析し、コンピュータが直接実行可能な形式のプログラムに変換するコンパイルを行い、プログラムを実行することが要求される。機密コードも、開発過程において、別コードから呼び出される場合がある。
 そこで、図1~図4に示される例では、制御システム1は、機密コードを内部隠ぺいコードと完全隠ぺいコードとの二つに分類する。図2に示されるように、内部隠ぺいコードとは、例えば、関数の中身が非公開である一方で、関数の呼び出しは許可されているコードのことをいう。すなわち、内部隠ぺいコードとは、例えば、開発者がプログラミングをする上で、呼び出せるコードであり、開発者に対して、関数の存在そのものは秘匿にしないコードのことをいう。完全隠ぺいコードとは、例えば、関数の中身が非公開であることに加えて、関数の呼び出しが許可されていないコードのことをいう。すなわち、完全隠ぺいコードとは、例えば、開発者がプログラミングをする上で、呼び出せないコードであり、開発者に対し、関数の存在そのものも秘匿にするコードのことをいう。図1~図4に示される例では、制御システム1は、どちらのコードであっても、開発過程において実装内容を秘匿することを目的とする。
[機密コードへのアクセスにつながる操作のスキップの一例]
 図1および図3を用いて、制御システム1による機密コードへのアクセスにつながる操作のスキップの一例について説明する。図3は、制御システム1による機密コードへのアクセスにつながる操作のスキップ処理の流れの一例を示すシーケンス図でもある。
 図1に示される例では、DAPプロキシ10のアクセスチェック部121は、コマンドの送受信内容を解析し、機密コードへのアクセスにつながる操作等、機密コードの漏洩につながる危険な操作をスキップさせる。
 例えば、アクセスチェック部121は、開発ツール20から受信されたコマンドおよびコードへのアクセスに関する内容をチェックし、アクセスの条件が満たされない場合、デバッグサーバ30に対して、機密コードへのステップイン等の機密コードへのアクセスにつながる操作をスキップさせる。例えば、アクセスチェック部121は、受信部112によって開発ツール20から受信されたコマンドに機密コードへのアクセスにつながる操作が含まれる場合、アクセスの条件が満たされていないと判断し、この操作をスキップさせる。一例として、アクセスチェック部121は、開発ツール20から送信されたコマンドの内容を分析し、コマンドにRefNGClass等の内部隠ぺいコードへのステップイン等の操作が含まれる場合、アクセスの条件が満たされていないと判断し、この操作をスキップさせる。これにより、デバッグ情報の中に機密コードの実行時の情報が含まれなくなるため、アクセスチェック部121は、機密コードの実装内容を開発者に見せることも把握させることもなくデバッグ処理を行わせることができる。
 次に、アクセスチェック部121は、例えば、DAPプロキシ10に、スキップされた操作について開発ツール20側に返答させずに、デバッグサーバ30に、自動的に次のコードの行(ステートメント)に移動させて、デバッグ処理を実行させる。次に、アクセスチェック部121は、例えば、DAPプロキシ10に、デバッグサーバ30によるデバッグ処理の結果を開発ツール20に返信する。
 図3に示される例では、DAPプロキシ10には、コードへのアクセスの条件が定義されたアクセス条件定義ファイルによって、アクセスすることができるAllow list(許可リスト=公開可能コードのリスト)として、OKClassおよびOKClass2があらかじめ設定されている。また、図3に示される例では、DAPプロキシ10には、アクセス条件定義ファイルによって、アクセスできない場合があるExecutable list(実行可能リスト=内部隠ぺいコードのリスト)として、RefNGClassがあらかじめ設定されている。
 図3に示される例では、まず、開発ツール20は、DAPプロキシ10にステップインを要求するステップインリクエストの送信を行う。例えば、開発ツール20は、RefNGClassへのステップインリクエストの送信を行う。次に、DAPプロキシ10は、例えば、ステップインリクエストをデバッグサーバ30に転送する。次に、デバッグサーバ30は、例えば、ステップインリクエストに含まれるコードのうち、1行分(1つ)のコードに対してデバッグ処理を実行して、停止イベントをDAPプロキシ10に通知する。
 次に、DAPプロキシ10は、例えば、スタックトレース情報を取得するためのスタックトレース情報取得リクエストをデバッグサーバ30に送信する。次に、デバッグサーバ30は、例えば、スタックフレームをDAPプロキシ10に送信する。一例として、デバッグサーバ30は、RefNGClassにステップインしたので、一番上にRefNGClassがきているスタックフレームをDAPプロキシ10に送信する。次に、DAPプロキシ10のアクセスチェック部121は、例えば、一番上のスタックであるRefNGClassは公開不可なので、ステップインをスキップさせる。次に、DAPプロキシ10は、例えば、強制的に停止されている関数(RefNGClass)の外(呼び出し元=OKClass)に出るステップアウトのリクエストをデバッグサーバ30に送信する。
 次に、デバッグサーバ30は、例えば、この関数の外に出て、DAPプロキシ10に対して停止イベントの通知を行う。次に、DAPプロキシ10は、例えば、開発ツール20に対して停止イベントの通知を行う。一例として、DAPプロキシ10は、開発ツール20側には、RefNGClassの内部には入らず(ステップインせず)、ステップオーバーを実施したことを通知する。
[機密コードの情報漏洩につながる内容の秘匿の一例]
 次に、図1および図4を用いて、制御システム1による機密コードの情報漏洩につながる内容の秘匿の一例について説明する。図4は、制御システム1による機密コードの情報漏洩につながる内容の秘匿処理の流れの一例を示すシーケンス図でもある。図1に示される例では、DAPプロキシ10の返信内容秘匿部122は、コマンドに対する返信の内容に、機密コードの情報漏洩につながる内容が含まれる場合、機密コードの情報漏洩につながる内容を秘匿にするか、または削除する。例えば、返信内容秘匿部122は、アクセス条件定義ファイルの許可リストに無いNGClass、RefNGClassおよびSecretFramework等の関数のスタックフレームを削除する。
 図4に示される例では、図3に示される例と同様に、DAPプロキシ10には、アクセス条件定義ファイルによって、アクセスすることができるAllow listとして、OKClassおよびOKClass2があらかじめ設定され、アクセスすることができないExecutable listとして、RefNGClassがあらかじめ設定されている。まず、開発ツール20は、例えば、DAPプロキシ10にブレイクポイントの設定を要求するブレイクポイント設定リクエストの送信を行う。次に、DAPプロキシ10は、例えば、デバッグサーバ30にブレイクポイント設定リクエストの転送を行う。次に、開発ツール20は、例えば、DAPプロキシ10にデバッグ起動リクエストの送信を行う。
 次に、DAPプロキシ10は、例えば、デバッグサーバ30にデバッグ起動リクエストの転送を行う。次に、デバッグサーバ30は、例えば、DAPプロキシ10に(ブレイクポイントでの)停止イベントの通知を行う。次に、DAPプロキシ10は、例えば、デバッグサーバ30にスタックトレース情報取得リクエストの送信を行う。次に、デバッグサーバ30は、例えば、スタックフレームの返信を行う。
 次に、図4に示される例では、DAPプロキシ10の返信内容秘匿部122は、スタックフレームに機密コードが含まれる場合、機密コードを秘匿にするか、または削除する。一例として、返信内容秘匿部122は、許可リストに無いNGClass、RefNGClassおよびSecretFramework等の関数のスタックフレームを削除する。別の一例として、返信内容秘匿部122は、許可リストに無いNGClass、RefNGClassおよびSecretFramework等の関数のスタックフレームを、これらのスタックフレームを覆い隠すマスクによって秘匿にする。次に、DAPプロキシ10は、例えば、開発ツール20に(ブレイクポイントでの)停止イベントの通知を行う。また、DAPプロキシ10は、例えば、開発ツール20にスタックフレームの返信を行う。一例として、DAPプロキシ10は、開発ツール20に機密コードのスタックフレームが削除された情報を返信する。
[制御システムの構成の一例]
 図5を用いて、実施形態に係る制御システム1の構成の一例について説明する。図5は、制御システムの構成の一例を示す図である。図5に示される例では、制御システム1は、DAPプロキシ10と、開発ツール20と、デバッグサーバ30とを有する。
[DAPプロキシの構成の一例]
 DAPプロキシ10は、開発ツール20からコマンドを受信し、コマンドおよびコードへのアクセスに関する内容に基づいて、アクセスの条件が満たされない場合、機密コードへのアクセスにつながる操作をスキップさせる制御装置である。図5に示される例では、制御装置は、デバッグ処理の公開プロトコルであるDAPプロキシ10であるが、上述の機能を有するものであれば、特に限定されない。ただし、制御装置は、DAPプロキシ10に適用されることにより、参画プロジェクト(PJ:Project)によって採用されるプログラミング言語や開発環境によらず、PJが変更されても、開発者自身の開発ツールを切り替えずに、デバッグ支援機能を利用できる。図5に示される例では、DAPプロキシ10は、通信部11と、制御部12と、記憶部13とを有する。
[通信部]
 通信部11は、開発ツール20とデバッグサーバ30との間で各種情報を送受信する。通信部11は、例えば、NIC(Network Interface Card)等によって実現される。図5に示される例では、通信部11は、送信部111と、受信部112とを有する。
[送信部]
 送信部111は、開発ツール20やデバッグサーバ30に各種情報を送信する。一例として、送信部111は、デバッグ処理に関する返信を開発ツール20に対して行う。例えば、送信部111は、機密コードが含まれないコードを開発ツール20に送信してよい。一例として、送信部111は、機密コードが含まれないソースコードを開発ツール20に送信し、機密コードが含まれるソースコードをデバッグサーバ30に送信する。すなわち、送信部111は、例えば、開発ツール20およびデバッグサーバ30の双方にソースコードを保持させつつ、開発ツール20には機密コードを保持させない。
 ここで、開発者は、開発ツール20に全てのソースコード等のコードが存在しなくても、コードが送信されていれば、開発ツール20によってデバッグ処理を実行することができる。このように、機密コードを物理的に開発ツール20内に配置する必要がないため、送信部111は、機密コードが含まれないコードを開発ツール20に送信することによって、機密コードを開発ツール20から分離して機密コードの漏洩を抑制した上で、開発ツール20によるデバッグ処理を行わせることができる。
[受信部]
 受信部112は、プログラムのコードに対してデバッグ処理を行うための開発ツール20から、コードに対するデバッグ処理に関するコマンドを受信する。一例として、受信部112は、インターネット等のネットワークを介して、開発ツール20の通信部21から、コードに対するデバッグ処理に関するコマンドを受信する。例えば、受信部112は、デバッグサーバ30から、デバッグ処理に関する返信を受信してよい。一例として、受信部112は、ネットワークおよび言語毎のデバッグアダプタを介して、デバッグサーバ30の通信部31からコマンドに対する返信を受信する。
[制御部]
 制御部12は、DAPプロキシ10全体を制御する。例えば、制御部12は、各種処理手順が規定されたプログラムや、制御情報が格納された内部メモリを有する一以上のプロセッサによって構成され、プロセッサは、プログラムや内部メモリを用いて各処理を実行する。制御部12は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)等の電子回路やASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路によって実現される。図5に示される例では、制御部12は、アクセスチェック部121と、返信内容秘匿部122とを有する。
[アクセスチェック部]
 アクセスチェック部121は、受信部112によって開発ツール20から受信されたコマンドおよびコードへのアクセスに関する内容に基づいて、アクセスの条件が満たされない場合、機密コードへのアクセスにつながる操作をスキップさせる。例えば、アクセスチェック部121は、受信部112によって開発ツール20から受信されたコマンドに、機密コードへのアクセスにつながる操作が含まれる場合、アクセスの条件が満たされていないと判断し、この操作をスキップさせる。一例として、アクセスチェック部121は、開発ツール20から送信されたコマンドの内容を分析し、コマンドにRefNGClass等の内部隠ぺいコードへのステップイン等、機密コードへのアクセスにつながる危険な操作が含まれる場合、この操作をスキップさせる。これにより、アクセスチェック部121は、デバッグ処理に伴う開発ツール20とのやりとりにおいて、機密コードの漏洩のリスクを抑制することができる。
 例えば、アクセスチェック部121は、受信部112によって開発ツール20から受信されたコマンドに、機密コードへのアクセスにつながる操作が含まれる場合、機密コードへのアクセスにつながる操作をスキップして、次のコードへのアクセスに関する内容に基づいて、デバッグ処理に関する制御を実行してよい。一例として、アクセスチェック部121は、コマンドにRefNGClass等の内部隠ぺいコードへのステップイン等の機密コードへのアクセスにつながる操作が含まれる場合、この操作をスキップして、次のコードへのアクセスに関する内容に基づいて、デバッグサーバ30に次のコードへスキップインさせる。これにより、アクセスチェック部121は、開発ツール20とのやりとりにおいて、機密コードのリスクを抑制しつつ、デバッグ処理をさせることができる。
 例えば、アクセスチェック部121は、受信部112によって開発ツール20から受信されたコマンドおよびコードへのアクセスに関する内容に基づいて、アクセスの条件が満たされる場合、デバッグ装置とは独立したデバッグサーバ30の機密コードが含まれるコードにデバッグ処理の内容を反映させてよい。一例として、アクセスチェック部121は、コマンドおよびコードへのアクセスに関する内容がAllow listとして設定されているOKClassおよびOKClass2へのステップインである場合、アクセスの条件が満たされていると判断し、デバッグサーバ30に、デバッグサーバ30のソースコードにおけるOKClassおよびOKClass2へのステップインを実行させる。これにより、アクセスチェック部121は、機密コードの漏洩のリスクが低い場合、デバッグサーバ30のコードにデバッグ処理の内容を反映させることができる。
 例えば、アクセスチェック部121は、受信部112によってデバッグサーバ30から受信された返信の内容に、機密コードへのアクセスにつながる操作が含まれる場合、機密コードへのアクセスにつながる操作をスキップさせてよい。一例として、アクセスチェック部121は、受信部112によってデバッグサーバから受信された返信の内容に、内部隠ぺいコードであるRefNGClassにステップインされたことが表されている一番上にRefNGClassがきているスタックフレームが含まれる場合、RefNGClassへのアクセスにつながるステップインをスキップさせる。例えば、アクセスチェック部121は、この場合に、デバッグサーバ30に対して、強制的に停止されている関数(RefNGClass)の外(呼び出し元=OKClass)に出るステップアウトをリクエストする。これにより、アクセスチェック部121は、デバッグ処理に伴うデバッグサーバ30とのやりとりにおいて、機密コードの漏洩のリスクを抑制することができる。
 ここで、機密コードの情報漏洩につながる操作には、上述の例のような機密コードに直接的にアクセスする操作だけではなく、機密コードへの間接的なアクセスを可能にする操作も含まれうる。例えば、プログラムの実行時の情報を取得する機能(リフレクション)を有する関数(以降、リフレクション関数)へのアクセスを可能にする操作(例えば、リフレクション関数のインポート)によって、開発ツール20の開発者は、プログラム実行中の関数名(クラスやメソッド)を取得できるため、リフレクション関数を利用すると機密コード閲覧が可能となる。
 そこで、アクセスチェック部121は、例えば、受信部112によって受信されたコマンドに、機密コードの情報漏洩に間接的につながる操作が含まれる場合、機密コードの情報漏洩に間接的につながる操作をスキップしてよい。一例として、アクセスチェック部121は、上述のリフレクション関数のような禁止関数へアクセスする操作を禁止する。これにより、アクセスチェック部121は、デバッグ処理に伴う開発ツール20とのやりとりにおいて、機密コードの漏洩のリスクをより抑制することができる。
[返信内容秘匿部]
 返信内容秘匿部122は、受信部112によってデバッグサーバ30から受信された返信の内容に、機密コードの情報漏洩につながる内容が含まれる場合、機密コードの情報漏洩につながる内容を秘匿にするか、または削除する。例えば、返信内容秘匿部122は、受信部112によってデバッグサーバ30から受信されたスタックフレームを分析し、許可リストに無いNGClass、RefNGClassおよびSecretFramework等の関数のスタックフレームが含まれる場合、スタックフレームを覆い隠すマスクによって秘匿にするか、削除する。
 これにより、返信内容秘匿部122は、デバッグ処理に伴うデバッグサーバ30とのやりとりにおいて、機密コードの漏洩のリスクを抑制することができる。また、返信内容秘匿部122は、デバッグサーバ30から受信された返信の内容に機密コードの情報漏洩につながる内容が含まれる場合、機密コードの情報漏洩につながる内容を削除することによって、この内容の存在自体を開発者に見せることも把握させることもないため、機密コードの漏洩のリスクをより抑制することができる。返信内容秘匿部122は、漏洩した場合にリスクが大きいNGClass等の完全隠ぺいコードが含まれる場合に、完全隠ぺいコードを削除することによって、機密コードの漏洩のリスクを特に抑制することができる。
 例えば、返信内容秘匿部122は、送信部111によって開発ツール20に対して行われる返信の内容に、機密コードの情報漏洩につながる内容が含まれる場合、機密コードの情報漏洩につながる内容を秘匿にするか、または削除してよい。一例として、返信内容秘匿部122は、コマンドに対する返信の内容に、アクセス条件定義ファイルの許可リストに無いNGClass、RefNGClassおよびSecretFramework等の関数のスタックフレームが含まれる場合、これらの関数のスタックフレームを削除する。
 これにより、返信内容秘匿部122は、デバッグ処理に伴う開発ツール20とのやりとりにおいて、機密コードの漏洩のリスクを抑制することができる。また、返信内容秘匿部122は、デバッグサーバ30から受信された返信の内容に機密コードの情報漏洩につながる内容が含まれる場合、機密コードの情報漏洩につながる内容を削除することによって、この内容の存在自体を開発者に見せることも把握させることもないため、機密コードの漏洩のリスクをより抑制することができる。返信内容秘匿部122は、漏洩した場合にリスクが大きいNGClass等の完全隠ぺいコードが含まれる場合に、完全隠ぺいコードを削除することによって、機密コードの漏洩のリスクを特に抑制することができる。
[記憶部]
 記憶部13は、各種情報を記憶する。例えば、記憶部13は、機密コードが含まれるソースコードおよびDAPプロキシ10によって実行されるOS(Operating System)や各種プログラム等を記憶する。記憶部13は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、光ディスク等の記憶装置やRAM(Random Access Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)等の情報を書き換え可能な半導体メモリ等によって実現される。
[開発ツールの構成の一例]
 開発ツール20は、プログラムのコードに対してデバッグ処理を行うためのデバッグ装置である。開発ツール20は、例えば、Vscode等によって実現される。図5に示される例では、デバッグ装置は、プログラムの編集、デバッグ等の開発を行うための開発ツール20であるが、上述の機能を有するものであれば、特に限定されない。図5に示される例では、開発ツール20は、通信部21と、制御部22と、記憶部23と、操作受付部24と、表示部25とを有する。
[通信部]
 通信部21は、DAPプロキシ10との間で各種情報を送受信する。通信部21は、例えば、NIC等によって実現される。図5に示される例では、通信部21は、送信部211と、受信部212とを有する。
[送信部]
 送信部211は、DAPプロキシ10に各種情報を送信する。例えば、送信部211は、コードに対するデバッグ処理に関するコマンドをDAPプロキシ10に送信する。
[受信部]
 受信部212は、DAPプロキシ10から各種情報を受信する。一例として、受信部212は、DAPプロキシ10から機密コードが含まれないソースコードを受信する。別の一例として、受信部212は、DAPプロキシ10から、許可リストに無いNGClass、RefNGClassおよびSecretFramework等の関数のスタックフレームがマスキングまたは削除された、コマンドに対する返信を受信する。
[制御部]
 制御部22は、開発ツール20全体を制御する。例えば、制御部22は、各種処理手順が規定されたプログラムや、制御情報が格納された内部メモリを有する一以上のプロセッサによって構成され、プロセッサは、プログラムや内部メモリを用いて各処理を実行する。制御部22は、例えば、CPU、MPU、GPU等の電子回路やASIC、FPGA等の集積回路によって実現される。
[記憶部]
 記憶部23は、各種情報を記憶する。例えば、記憶部23は、機密コードが含まれないソースコードおよび開発ツール20によって実行されるOSや各種プログラム等を記憶する。記憶部23は、例えば、HDD、SSD、光ディスク等の記憶装置やRAM、フラッシュメモリ、NVSRAM等の情報を書き換え可能な半導体メモリ等により実現される。
[操作受付部]
 操作受付部24は、各種操作を受け付ける。例えば、操作受付部24は、開発者の端末から、コードに対するデバッグ処理に関するコマンドの操作を受け付ける。操作受付部24は、例えば、インターネットを介して開発者の端末からデバッグ処理に関するデバッグ操作を受け付けるものや、GUI等によって実現される。
[表示部]
 表示部25は、各種情報を表示する。例えば、表示部25は、許可リストに無いNGClass、RefNGClassおよびSecretFramework等の関数のスタックフレームがマスキングまたは削除された、コマンドに対する返信の内容を表示する。表示部25は、例えば、端末のデスクトップ等によって実現される。
[デバッグサーバの構成の一例]
 デバッグサーバ30は、デバッグ装置とは独立したサーバである。図5に示される例では、デバッグサーバ30は、開発ツール20とは独立したデバッグ処理を行うためのサーバである。図5に示される例では、デバッグサーバ30は、通信部31と、制御部32と、記憶部33とを有する。
[通信部]
 通信部31は、DAPプロキシ10との間で各種情報を送受信する。通信部31は、例えば、NIC等によって実現される。図5に示される例では、通信部31は、送信部311と、受信部312とを有する。
[送信部]
 送信部311は、DAPプロキシ10に各種情報を送信する。例えば、送信部311は、コマンドに対する返信をDAPプロキシ10に送信する。
[受信部]
 受信部312は、DAPプロキシ10から各種情報を受信する。一例として、受信部312は、DAPプロキシ10から機密コードが含まれるソースコードを受信する。別の一例として、受信部312は、DAPプロキシ10から許可リストに無いNGClass、RefNGClassおよびSecretFramework等の関数のスタックフレームが含まれるコマンドを受信する。
[制御部]
 制御部32は、デバッグサーバ30全体を制御する。例えば、制御部32は、各種処理手順が規定されたプログラムや、制御情報が格納された内部メモリを有する一以上のプロセッサによって構成され、プロセッサは、プログラムや内部メモリを用いて各処理を実行する。制御部32は、例えば、CPU、MPU、GPU等の電子回路やASIC、FPGA等の集積回路によって実現される。
[記憶部]
 記憶部33は、各種情報を記憶する。例えば、記憶部33は、機密コードが含まれるソースコードおよびデバッグサーバ30により実行されるOSや各種プログラム等を記憶する。記憶部33は、例えば、HDD、SSD、光ディスク等の記憶装置やRAM、フラッシュメモリ、NVSRAM等の情報を書き換え可能な半導体メモリ等により実現される。
[処理の流れの一例]
 以下、図6を用いて実施形態に係る制御システム1のDAPプロキシ10によって実行される処理の流れの一例について説明する。図6は、制御システムによって実行される処理の流れの一例を示すフローチャートである。
 ステップS11において、受信部112は、プログラムのコードに対してデバッグ処理を行うための開発ツール20から、コードに対するデバッグ処理に関するコマンドを受信する。例えば、受信部112は、開発ツール20の操作受付部24によってコマンドの操作が受け付けられた場合に、開発ツール20から、コマンドを受信する。
 アクセスチェック部121は、受信部112によって開発ツール20から受信されたコマンドおよびコードへのアクセスに関する内容に基づいて、アクセスの条件が満たされない場合(ステップS12のYes)、ステップS13において、機密コードへのアクセスにつながる操作をスキップさせる。例えば、アクセスチェック部121は、アクセスチェック部121は、開発ツール20から送信されたコマンドにRefNGClass等の内部隠ぺいコードへのステップイン等の機密コードへのアクセスにつながる危険な操作が含まれる場合、アクセスの条件が満たされていないと判断し、この操作をスキップさせる。
 アクセスチェック部121は、受信部112によって開発ツール20から受信されたコマンドおよびコードへのアクセスに関する内容に基づいて、アクセスの条件が満たされる場合(ステップS12のNо)、ステップS14において、デバッグ装置とは独立したデバッグサーバ30の機密コードが含まれるコードにデバッグ処理の内容を反映させる。例えば、アクセスチェック部121は、コマンドおよびコードへのアクセスに関する内容がAllow listとして設定されているOKClassおよびOKClass2へのステップインである場合、アクセスの条件が満たされていると判断し、デバッグサーバ30に、デバッグサーバ30のソースコードにおけるOKClassおよびOKClass2へのステップインを実行させる。
[2.プログラム]
 DAPプロキシ10は、パッケージソフトウェアやオンラインソフトウェアとして制御プログラムをコンピュータにインストールさせることにより実装できる。例えば、コンピュータが制御プログラムを実行することにより、DAPプロキシ10として機能させることができる。
 図7は、制御プログラムを実行するコンピュータの構成の一例を示す図である。図7に示される例では、コンピュータ1000は、メモリ1010とCPU1020とハードディスクドライブインタフェース1030とディスクドライブインタフェース1040とシリアルポートインタフェース1050とビデオアダプタ1060とネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
 メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えば、マウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えば、ディスプレイ1130に接続される。
 ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。すなわち、DAPプロキシ10によって実行される各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えば、ハードディスクドライブ1090に記憶される。例えば、DAPプロキシ10における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSDによって代替されてよい。
 また、上述の実施形態の処理において用いられるデータは、プログラムデータ1094として、例えば、メモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を、必要に応じてRAM1012に読み出して実行する。
 なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限定されず、例えば、着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093およびプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続される他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093およびプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
 1 制御システム
 10 DAPプロキシ(制御装置)
 11、21、31 通信部
 12、22、32 制御部
 13、23、33 記憶部
 20 開発ツール(デバッグ装置)
 24 操作受付部
 25 表示部
 30 デバッグサーバ(サーバ)
 111、211、311 送信部
 112、212、312 受信部
 121 アクセスチェック部
 122 返信内容秘匿部

Claims (8)

  1.  プログラムのコードに対してデバッグ処理を行うためのデバッグ装置から、当該コードに対する前記デバッグ処理に関するコマンドを受信する受信部と、
     前記受信部によって前記デバッグ装置から受信された前記コマンドおよび前記コードへのアクセスに関する内容に基づいて、前記アクセスの条件が満たされない場合、機密コードへのアクセスにつながる操作をスキップさせる制御部と、
     を有することを特徴とする制御装置。
  2.  前記制御部は、前記受信部によって前記デバッグ装置から受信された前記コマンドに、前記機密コードへのアクセスにつながる操作が含まれる場合、前記機密コードへのアクセスにつながる操作をスキップさせることを特徴とする請求項1に記載の制御装置。
  3.  前記制御部は、前記受信部によって前記デバッグ装置から受信された前記コマンドに、前記機密コードへのアクセスにつながる操作が含まれる場合、前記機密コードへのアクセスにつながる操作をスキップして、次のコードへのアクセスに関する内容に基づいて、前記デバッグ処理に関する制御を実行することを特徴とする請求項2に記載の制御装置。
  4.  前記制御部は、前記受信部によって前記デバッグ装置から受信された前記コマンドおよび前記コードへのアクセスに関する内容に基づいて、前記アクセスの条件が満たされる場合、前記デバッグ装置とは独立したサーバの前記機密コードが含まれるコードに前記デバッグ処理の内容を反映させることを特徴とする請求項1~3のいずれか1項に記載の制御装置。
  5.  前記受信部は、前記サーバから前記デバッグ処理に関する返信を受信し、
     前記制御部は、前記受信部によって前記サーバから受信された前記返信の内容に、前記機密コードへのアクセスにつながる操作が含まれる場合、前記機密コードへのアクセスにつながる操作をスキップし、前記機密コードの情報漏洩につながる内容が含まれる場合、前記機密コードの情報漏洩につながる内容を秘匿にするか、または削除することを特徴とする請求項4に記載の制御装置。
  6.  前記デバッグ処理に関する返信を前記デバッグ装置に対して行う送信部をさらに有し、
     前記制御部は、前記送信部によって前記デバッグ装置に対して行われる前記返信の内容に、前記機密コードの情報漏洩につながる内容が含まれる場合、前記機密コードの情報漏洩につながる内容を秘匿にするか、または削除することを特徴とする請求項1に記載の制御装置。
  7.  制御装置によって実行される制御方法であって、
     プログラムのコードに対してデバッグ処理を行うためのデバッグ装置から、当該コードに対する前記デバッグ処理に関するコマンドを受信する受信工程と、
     前記受信工程によって前記デバッグ装置から受信された前記コマンドおよび前記コードへのアクセスに関する内容に基づいて、前記アクセスの条件が満たされない場合、機密コードへのアクセスにつながる操作をスキップさせる制御工程と、
     を含むことを特徴とする制御方法。
  8.  プログラムのコードに対してデバッグ処理を行うためのデバッグ装置から、当該コードに対する前記デバッグ処理に関するコマンドを受信する受信ステップと、
     前記受信ステップによって前記デバッグ装置から受信された前記コマンドおよび前記コードへのアクセスに関する内容に基づいて、前記アクセスの条件が満たされない場合、機密コードへのアクセスにつながる操作をスキップさせる制御ステップと、
     をコンピュータに実行させことを特徴とする制御プログラム。
PCT/JP2023/025785 2023-07-12 2023-07-12 制御装置、制御方法および制御プログラム Pending WO2025013262A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2023/025785 WO2025013262A1 (ja) 2023-07-12 2023-07-12 制御装置、制御方法および制御プログラム
JP2025532335A JPWO2025013262A1 (ja) 2023-07-12 2023-07-12

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2023/025785 WO2025013262A1 (ja) 2023-07-12 2023-07-12 制御装置、制御方法および制御プログラム

Publications (1)

Publication Number Publication Date
WO2025013262A1 true WO2025013262A1 (ja) 2025-01-16

Family

ID=94214823

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2023/025785 Pending WO2025013262A1 (ja) 2023-07-12 2023-07-12 制御装置、制御方法および制御プログラム

Country Status (2)

Country Link
JP (1) JPWO2025013262A1 (ja)
WO (1) WO2025013262A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009129326A (ja) * 2007-11-27 2009-06-11 Canon Inc ソフトウェア開発システム、そのアクセス制限方法、サーバ装置、プログラムおよび記憶媒体
WO2022259311A1 (ja) * 2021-06-07 2022-12-15 日本電信電話株式会社 デバッグ装置、デバッグ方法、及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009129326A (ja) * 2007-11-27 2009-06-11 Canon Inc ソフトウェア開発システム、そのアクセス制限方法、サーバ装置、プログラムおよび記憶媒体
WO2022259311A1 (ja) * 2021-06-07 2022-12-15 日本電信電話株式会社 デバッグ装置、デバッグ方法、及びプログラム

Also Published As

Publication number Publication date
JPWO2025013262A1 (ja) 2025-01-16

Similar Documents

Publication Publication Date Title
KR101002489B1 (ko) 커널 모드 프로세싱과 사용자 모드 프로세싱 모두에 공통되는 하나 이상의 동작들의 단일 구현을 가능하게 하는 방법 및 컴퓨터 판독가능 기록 매체
US20230036357A1 (en) Method and apparatus for authority control, computer device and storage medium
KR101137157B1 (ko) 효과적 패칭
US9141412B2 (en) Terminal services application virtualization for compatibility
CN112199720B (zh) 权限监控处理方法、装置、计算机设备及介质
CN108681662B (zh) 一种安装程序的方法及装置
US8412797B2 (en) Platform for development and deployment of system administration solutions
US11501022B2 (en) Application security policy management agent
CN104756086A (zh) 用于调试依领域而定的语言的系统和方法
KR102337962B1 (ko) 마이크로서비스 아키텍처 애플리케이션 실행 시스템과 방법 및 이를 위한 컴퓨터 프로그램
US20130067439A1 (en) Injecting faults into program for testing
US10599556B2 (en) Debugging a transaction in a replica execution environment
US9317396B2 (en) Information processing apparatus including an execution control unit, information processing system having the same, and stop method using the same
US12248575B2 (en) System and method for monitoring delivery of messages passed between processes from different operating systems
US8904346B1 (en) Method and system for automated load testing of web applications
WO2025013262A1 (ja) 制御装置、制御方法および制御プログラム
CN114756833A (zh) 代码混淆方法、装置、设备、介质以及程序产品
US20220413954A1 (en) Data collecting in issue tracking systems
CN117874808A (zh) 基于安全u盘的办公方法及系统
WO2025148343A1 (zh) 一种ivi跨应用路由处理方法、电子设备、路由架构
US8191041B2 (en) Javascript pre-processing framework
EP4145318A1 (en) System and method for monitoring delivery of messages passed between processes from different operating systems
US7587722B2 (en) Extending operating system subsystems
WO2025013261A1 (ja) 制御装置、制御方法および制御プログラム
CN111352644A (zh) 小程序更新方法、装置、服务器及存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 23945135

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2025532335

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2025532335

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE