diff options
Diffstat (limited to 'upstream/mageia-cauldron/man1/perlsecpolicy.1')
-rw-r--r-- | upstream/mageia-cauldron/man1/perlsecpolicy.1 | 537 |
1 files changed, 537 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man1/perlsecpolicy.1 b/upstream/mageia-cauldron/man1/perlsecpolicy.1 new file mode 100644 index 00000000..cf3a8ecf --- /dev/null +++ b/upstream/mageia-cauldron/man1/perlsecpolicy.1 @@ -0,0 +1,537 @@ +.\" -*- mode: troff; coding: utf-8 -*- +.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. +.ie n \{\ +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "PERLSECPOLICY 1" +.TH PERLSECPOLICY 1 2023-11-28 "perl v5.38.2" "Perl Programmers Reference Guide" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH NAME +perlsecpolicy \- Perl security report handling policy +.SH DESCRIPTION +.IX Header "DESCRIPTION" +The Perl project takes security issues seriously. +.PP +The responsibility for handling security reports in a timely and +effective manner has been delegated to a security team composed +of a subset of the Perl core developers. +.PP +This document describes how the Perl security team operates and +how the team evaluates new security reports. +.SH "REPORTING SECURITY ISSUES IN PERL" +.IX Header "REPORTING SECURITY ISSUES IN PERL" +If you believe you have found a security vulnerability in the Perl +interpreter or modules maintained in the core Perl codebase, +email the details to +perl\-security@perl.org <mailto:perl-security@perl.org>. +This address is a closed membership mailing list monitored by the Perl +security team. +.PP +You should receive an initial response to your report within 72 hours. +If you do not receive a response in that time, please contact +the Perl Steering Council <mailto:steering-council@perl.org>. +.PP +When members of the security team reply to your messages, they will +generally include the perl\-security@perl.org address in the "To" or "CC" +fields of the response. This allows all of the security team to follow +the discussion and chime in as needed. Use the "Reply-all" functionality +of your email client when you send subsequent responses so that the +entire security team receives the message. +.PP +The security team will evaluate your report and make an initial +determination of whether it is likely to fit the scope of issues the +team handles. General guidelines about how this is determined are +detailed in the "WHAT ARE SECURITY ISSUES" section. +.PP +If your report meets the team's criteria, an issue will be opened in the +team's private issue tracker and you will be provided the issue's ID number. +Issue identifiers have the form perl\-security#NNN. Include this identifier +with any subsequent messages you send. +.PP +The security team will send periodic updates about the status of your +issue and guide you through any further action that is required to complete +the vulnerability remediation process. The stages vulnerabilities typically +go through are explained in the "HOW WE DEAL WITH SECURITY ISSUES" +section. +.SH "WHAT ARE SECURITY ISSUES" +.IX Header "WHAT ARE SECURITY ISSUES" +A vulnerability is a behavior of a software system that compromises the +system's expected confidentiality, integrity or availability protections. +.PP +A security issue is a bug in one or more specific components of a software +system that creates a vulnerability. +.PP +Software written in the Perl programming language is typically composed +of many layers of software written by many different groups. It can be +very complicated to determine which specific layer of a complex real-world +application was responsible for preventing a vulnerable behavior, but this +is an essential part of fixing the vulnerability. +.SS "Software covered by the Perl security team" +.IX Subsection "Software covered by the Perl security team" +The Perl security team handles security issues in: +.IP \(bu 4 +The Perl interpreter +.IP \(bu 4 +The Perl modules shipped with the interpreter that are developed in the core +Perl repository +.IP \(bu 4 +The command line tools shipped with the interpreter that are developed in the +core Perl repository +.PP +Files under the \fIcpan/\fR directory in Perl's repository and release tarballs are +developed and maintained independently. The Perl security team does not +directly handle security issues for these modules, but since this code is +bundled with Perl, we will assist in forwarding the issue to the relevant +maintainer(s) and you can still report these issues to us in secrecy. +.SS "Bugs that may qualify as security issues in Perl" +.IX Subsection "Bugs that may qualify as security issues in Perl" +Perl is designed to be a fast and flexible general purpose programming +language. The Perl interpreter and Perl modules make writing safe and +secure applications easy, but they do have limitations. +.PP +As a general rule, a bug in Perl needs to meet all of the following +criteria to be considered a security issue: +.IP \(bu 4 +The vulnerable behavior is not mentioned in Perl's documentation +or public issue tracker. +.IP \(bu 4 +The vulnerable behavior is not implied by an expected behavior. +.IP \(bu 4 +The vulnerable behavior is not a generally accepted limitation of +the implementation. +.IP \(bu 4 +The vulnerable behavior is likely to be exposed to attack in +otherwise secure applications written in Perl. +.IP \(bu 4 +The vulnerable behavior provides a specific tangible benefit +to an attacker that triggers the behavior. +.SS "Bugs that do not qualify as security issues in Perl" +.IX Subsection "Bugs that do not qualify as security issues in Perl" +There are certain categories of bugs that are frequently reported to +the security team that do not meet the criteria listed above. +.PP +The following is a list of commonly reported bugs that are not +handled as security issues. +.PP +\fIFeeding untrusted code to the interpreter\fR +.IX Subsection "Feeding untrusted code to the interpreter" +.PP +The Perl parser is not designed to evaluate untrusted code. +If your application requires the evaluation of untrusted code, it +should rely on an operating system level sandbox for its security. +.PP +\fIStack overflows due to excessive recursion\fR +.IX Subsection "Stack overflows due to excessive recursion" +.PP +Excessive recursion is often caused by code that does +not enforce limits on inputs. The Perl interpreter assumes limits +on recursion will be enforced by the application. +.PP +\fIOut of memory errors\fR +.IX Subsection "Out of memory errors" +.PP +Common Perl constructs such as \f(CW\*(C`pack\*(C'\fR, the \f(CW\*(C`x\*(C'\fR operator, +and regular expressions accept numeric quantifiers that control how +much memory will be allocated to store intermediate values or results. +If you allow an attacker to supply these quantifiers and consume all +available memory, the Perl interpreter will not prevent it. +.PP +\fIEscape from a Safe compartment\fR +.IX Subsection "Escape from a Safe compartment" +.PP +Opcode restrictions and Safe compartments are not supported as +security mechanisms. The Perl parser is not designed to evaluate +untrusted code. +.PP +\fIUse of the \fR\f(CI\*(C`p\*(C'\fR\fI and \fR\f(CI\*(C`P\*(C'\fR\fI pack templates\fR +.IX Subsection "Use of the p and P pack templates" +.PP +These templates are unsafe by design. +.PP +\fIStack not reference-counted issues\fR +.IX Subsection "Stack not reference-counted issues" +.PP +These bugs typically present as use-after-free errors or as assertion +failures on the type of a \f(CW\*(C`SV\*(C'\fR. Stack not reference-counted +crashes usually occur because code is both modifying a reference or +glob and using the values referenced by that glob or reference. +.PP +This type of bug is a long standing issue with the Perl interpreter +that seldom occurs in normal code. Examples of this type of bug +generally assume that attacker-supplied code will be evaluated by +the Perl interpreter. +.PP +\fIThawing attacker-supplied data with Storable\fR +.IX Subsection "Thawing attacker-supplied data with Storable" +.PP +Storable is designed to be a very fast serialization format. +It is not designed to be safe for deserializing untrusted inputs. +.PP +\fIUsing attacker supplied SDBM_File databases\fR +.IX Subsection "Using attacker supplied SDBM_File databases" +.PP +The SDBM_File module is not intended for use with untrusted SDBM +databases. +.PP +\fIBadly encoded UTF\-8 flagged scalars\fR +.IX Subsection "Badly encoded UTF-8 flagged scalars" +.PP +This type of bug occurs when the \f(CW\*(C`:utf8\*(C'\fR PerlIO layer is used to +read badly encoded data, or other mechanisms are used to directly +manipulate the UTF\-8 flag on an SV. +.PP +A badly encoded UTF\-8 flagged SV is not a valid SV. Code that +creates SV's in this fashion is corrupting Perl's internal state. +.PP +\fIIssues that exist only in blead, or in a release candidate\fR +.IX Subsection "Issues that exist only in blead, or in a release candidate" +.PP +The blead branch and Perl release candidates do not receive security +support. Security defects that are present only in pre-release +versions of Perl are handled through the normal bug reporting and +resolution process. +.PP +\fICPAN modules or other Perl project resources\fR +.IX Subsection "CPAN modules or other Perl project resources" +.PP +The Perl security team is focused on the Perl interpreter and modules +maintained in the core Perl codebase. The team has no special access +to fix CPAN modules, applications written in Perl, Perl project websites, +Perl mailing lists or the Perl IRC servers. +.PP +\fIEmulated POSIX behaviors on Windows systems\fR +.IX Subsection "Emulated POSIX behaviors on Windows systems" +.PP +The Perl interpreter attempts to emulate \f(CW\*(C`fork\*(C'\fR, \f(CW\*(C`system\*(C'\fR, \f(CW\*(C`exec\*(C'\fR +and other POSIX behaviors on Windows systems. This emulation has many +quirks that are extensively documented in Perl's public issue tracker. +Changing these behaviors would cause significant disruption for existing +users on Windows. +.SS "Bugs that require special categorization" +.IX Subsection "Bugs that require special categorization" +Some bugs in the Perl interpreter occur in areas of the codebase that are +both security sensitive and prone to failure during normal usage. +.PP +\fIRegular expressions\fR +.IX Subsection "Regular expressions" +.PP +Untrusted regular expressions are generally safe to compile and match against +with several caveats. The following behaviors of Perl's regular expression +engine are the developer's responsibility to constrain. +.PP +The evaluation of untrusted regular expressions while \f(CW\*(C`use re \*(Aqeval\*(Aq;\*(C'\fR is +in effect is never safe. +.PP +Regular expressions are not guaranteed to compile or evaluate in any specific +finite time frame. +.PP +Regular expressions may consume all available system memory when they are +compiled or evaluated. +.PP +Regular expressions may cause excessive recursion that halts the perl +interpreter. +.PP +As a general rule, do not expect Perl's regular expression engine to +be resistant to denial of service attacks. +.PP +\fIDB_File, ODBM_File, or GDBM_File databases\fR +.IX Subsection "DB_File, ODBM_File, or GDBM_File databases" +.PP +These modules rely on external libraries to interact with database files. +.PP +Bugs caused by reading and writing these file formats are generally caused +by the underlying library implementation and are not security issues in +Perl. +.PP +Bugs where Perl mishandles unexpected valid return values from the underlying +libraries may qualify as security issues in Perl. +.PP +\fIAlgorithmic complexity attacks\fR +.IX Subsection "Algorithmic complexity attacks" +.PP +The perl interpreter is reasonably robust to algorithmic complexity +attacks. It is not immune to them. +.PP +Algorithmic complexity bugs that depend on the interpreter processing +extremely large amounts of attacker supplied data are not generally handled +as security issues. +.PP +See "Algorithmic Complexity Attacks" in perlsec for additional information. +.SH "HOW WE DEAL WITH SECURITY ISSUES" +.IX Header "HOW WE DEAL WITH SECURITY ISSUES" +The Perl security team follows responsible disclosure practices. Security issues +are kept secret until a fix is readily available for most users. This minimizes +inherent risks users face from vulnerabilities in Perl. +.PP +Hiding problems from the users temporarily is a necessary trade-off to keep +them safe. Hiding problems from users permanently is not the goal. +.PP +When you report a security issue privately to the +perl\-security@perl.org <mailto:perl-security@perl.org> contact address, we +normally expect you to follow responsible disclosure practices in the handling +of the report. If you are unable or unwilling to keep the issue secret until +a fix is available to users you should state this clearly in the initial +report. +.PP +The security team's vulnerability remediation workflow is intended to be as +open and transparent as possible about the state of your security report. +.SS "Perl's vulnerability remediation workflow" +.IX Subsection "Perl's vulnerability remediation workflow" +\fIInitial contact\fR +.IX Subsection "Initial contact" +.PP +New vulnerability reports will receive an initial reply within 72 hours +from the time they arrive at the security team's mailing list. If you do +not receive any response in that time, contact the +Perl Steering Council <mailto:steering-council@perl.org>. +.PP +The initial response sent by the security team will confirm your message was +received and provide an estimated time frame for the security team's +triage analysis. +.PP +\fIInitial triage\fR +.IX Subsection "Initial triage" +.PP +The security team will evaluate the report and determine whether or not +it is likely to meet the criteria for handling as a security issue. +.PP +The security team aims to complete the initial report triage within +two weeks' time. Complex issues that require significant discussion or +research may take longer. +.PP +If the security report cannot be reproduced or does not meet the team's +criteria for handling as a security issue, you will be notified by email +and given an opportunity to respond. +.PP +\fIIssue ID assignment\fR +.IX Subsection "Issue ID assignment" +.PP +Security reports that pass initial triage analysis are turned into issues +in the security team's private issue tracker. When a report progresses to +this point you will be provided the issue ID for future reference. These +identifiers have the format perl\-security#NNN or Perl/perl\-security#NNN. +.PP +The assignment of an issue ID does not confirm that a security report +represents a vulnerability in Perl. Many reports require further analysis +to reach that determination. +.PP +Issues in the security team's private tracker are used to collect details +about the problem and track progress towards a resolution. These notes and +other details are not made public when the issue is resolved. Keeping the +issue notes private allows the security team to freely discuss attack +methods, attack tools, and other related private issues. +.PP +\fIDevelopment of patches\fR +.IX Subsection "Development of patches" +.PP +Members of the security team will inspect the report and related code in +detail to produce fixes for supported versions of Perl. +.PP +If the team discovers that the reported issue does not meet the team's +criteria at this stage, you will be notified by email and given an +opportunity to respond before the issue is closed. +.PP +The team may discuss potential fixes with you or provide you with +patches for testing purposes during this time frame. No information +should be shared publicly at this stage. +.PP +\fICVE ID assignment\fR +.IX Subsection "CVE ID assignment" +.PP +Once an issue is fully confirmed and a potential fix has been found, +the security team will request a CVE identifier for the issue to use +in public announcements. +.PP +Details like the range of vulnerable Perl versions and identities +of the people that discovered the flaw need to be collected to submit +the CVE ID request. +.PP +The security team may ask you to clarify the exact name we should use +when crediting discovery of the issue. The +"Vulnerability credit and bounties" section of this document +explains our preferred format for this credit. +.PP +Once a CVE ID has been assigned, you will be notified by email. +The vulnerability should not be discussed publicly at this stage. +.PP +\fIPre-release notifications\fR +.IX Subsection "Pre-release notifications" +.PP +When the security team is satisfied that the fix for a security issue +is ready to release publicly, a pre-release notification +announcement is sent to the major redistributors of Perl. +.PP +This pre-release announcement includes a list of Perl versions that +are affected by the flaw, an analysis of the risks to users, patches +the security team has produced, and any information about mitigations +or backporting fixes to older versions of Perl that the security team +has available. +.PP +The pre-release announcement will include a specific target date +when the issue will be announced publicly. The time frame between +the pre-release announcement and the release date allows redistributors +to prepare and test their own updates and announcements. During this +period the vulnerability details and fixes are embargoed and should not +be shared publicly. This embargo period may be extended further if +problems are discovered during testing. +.PP +You will be sent the portions of pre-release announcements that are +relevant to the specific issue you reported. This email will include +the target release date. Additional updates will be sent if the +target release date changes. +.PP +\fIPre-release testing\fR +.IX Subsection "Pre-release testing" +.PP +The Perl security team does not directly produce official Perl +releases. The team releases security fixes by placing commits +in Perl's public git repository and sending announcements. +.PP +Many users and redistributors prefer using official Perl releases +rather than applying patches to an older release. The security +team works with Perl's release managers to make this possible. +.PP +New official releases of Perl are generally produced and tested +on private systems during the pre-release embargo period. +.PP +\fIRelease of fixes and announcements\fR +.IX Subsection "Release of fixes and announcements" +.PP +At the end of the embargo period the security fixes will be +committed to Perl's public git repository and announcements will be +sent to the perl5\-porters <https://lists.perl.org/list/perl5-porters.html> +and oss-security <https://oss-security.openwall.org/wiki/mailing-lists/oss-security> +mailing lists. +.PP +If official Perl releases are ready, they will be published at this time +and announced on the perl5\-porters <https://lists.perl.org/list/perl5-porters.html> +mailing list. +.PP +The security team will send a follow-up notification to everyone that +participated in the pre-release embargo period once the release process is +finished. Vulnerability reporters and Perl redistributors should not publish +their own announcements or fixes until the Perl security team's release process +is complete. +.SS "Publicly known and zero-day security issues" +.IX Subsection "Publicly known and zero-day security issues" +The security team's vulnerability remediation workflow assumes that issues +are reported privately and kept secret until they are resolved. This isn't +always the case and information occasionally leaks out before a fix is ready. +.PP +In these situations the team must decide whether operating in secret increases +or decreases the risk to users of Perl. In some cases being open about +the risk a security issue creates will allow users to defend against it, +in other cases calling attention to an unresolved security issue will +make it more likely to be misused. +.PP +\fIZero-day security issues\fR +.IX Subsection "Zero-day security issues" +.PP +If an unresolved critical security issue in Perl is being actively abused to +attack systems the security team will send out announcements as rapidly as +possible with any mitigations the team has available. +.PP +Perl's public defect tracker will be used to handle the issue so that additional +information, fixes, and CVE IDs are visible to affected users as rapidly as +possible. +.PP +\fIOther leaks of security issue information\fR +.IX Subsection "Other leaks of security issue information" +.PP +Depending on the prominence of the information revealed about a security +issue and the issue's risk of becoming a zero-day attack, the security team may +skip all or part of its normal remediation workflow. +.PP +If the security team learns of a significant security issue after it has been +identified and resolved in Perl's public issue tracker, the team will +request a CVE ID and send an announcement to inform users. +.SS "Vulnerability credit and bounties" +.IX Subsection "Vulnerability credit and bounties" +The Perl project appreciates the effort security researchers +invest in making Perl safe and secure. +.PP +Since much of this work is hidden from the public, crediting +researchers publicly is an important part of the vulnerability +remediation process. +.PP +\fICredits in vulnerability announcements\fR +.IX Subsection "Credits in vulnerability announcements" +.PP +When security issues are fixed we will attempt to credit the specific +researcher(s) that discovered the flaw in our announcements. +.PP +Credits are announced using the researcher's preferred full name. +.PP +If the researcher's contributions were funded by a specific company or +part of an organized vulnerability research project, we will include +a short name for this group at the researcher's request. +.PP +Perl's announcements are written in the English language using the 7bit +ASCII character set to be reproducible in a variety of formats. We +do not include hyperlinks, domain names or marketing material with these +acknowledgments. +.PP +In the event that proper credit for vulnerability discovery cannot be +established or there is a disagreement between the Perl security team +and the researcher about how the credit should be given, it will be +omitted from announcements. +.PP +\fIBounties for Perl vulnerabilities\fR +.IX Subsection "Bounties for Perl vulnerabilities" +.PP +The Perl project is a non-profit volunteer effort. We do not provide +any monetary rewards for reporting security issues in Perl. |