mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-09-19 17:50:12 +00:00
fix(agentcompat): validate evidence modes by platform
Co-authored-by: naiba/CloudCode <hi+cloudcode@nai.ba>
This commit is contained in:
@@ -0,0 +1,23 @@
|
|||||||
|
//go:build !aix && !darwin && !dragonfly && !freebsd && !linux && !netbsd && !openbsd && !solaris && !windows
|
||||||
|
|
||||||
|
package evidence
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func validateEvidenceDirectoryMode(info os.FileInfo) error {
|
||||||
|
if info.Mode().Perm() != 0o700 {
|
||||||
|
return errors.New("evidence directory must use mode 0700")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func validateEvidenceFileMode(info os.FileInfo, relative string) error {
|
||||||
|
if info.Mode().Perm() != 0o600 {
|
||||||
|
return fmt.Errorf("evidence file must use mode 0600: %s", relative)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
|
||||||
|
|
||||||
|
package evidence
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func validateEvidenceDirectoryMode(info os.FileInfo) error {
|
||||||
|
if info.Mode().Perm() != 0o700 {
|
||||||
|
return errors.New("evidence directory must use mode 0700")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func validateEvidenceFileMode(info os.FileInfo, relative string) error {
|
||||||
|
if info.Mode().Perm() != 0o600 {
|
||||||
|
return fmt.Errorf("evidence file must use mode 0600: %s", relative)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
//go:build windows
|
||||||
|
|
||||||
|
package evidence
|
||||||
|
|
||||||
|
import "os"
|
||||||
|
|
||||||
|
func validateEvidenceDirectoryMode(os.FileInfo) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func validateEvidenceFileMode(os.FileInfo, string) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -26,8 +26,8 @@ func scanDirectory(resultsDir string) (map[string]os.FileInfo, error) {
|
|||||||
if info.Mode()&os.ModeSymlink != 0 || !info.IsDir() {
|
if info.Mode()&os.ModeSymlink != 0 || !info.IsDir() {
|
||||||
return nil, errors.New("evidence path must be a directory")
|
return nil, errors.New("evidence path must be a directory")
|
||||||
}
|
}
|
||||||
if info.Mode().Perm() != 0o700 {
|
if err := validateEvidenceDirectoryMode(info); err != nil {
|
||||||
return nil, errors.New("evidence directory must use mode 0700")
|
return nil, err
|
||||||
}
|
}
|
||||||
seen := make(map[string]os.FileInfo)
|
seen := make(map[string]os.FileInfo)
|
||||||
var totalBytes int64
|
var totalBytes int64
|
||||||
@@ -65,8 +65,8 @@ func scanDirectory(resultsDir string) (map[string]os.FileInfo, error) {
|
|||||||
if !allowedEvidencePath(relative) {
|
if !allowedEvidencePath(relative) {
|
||||||
return fmt.Errorf("evidence path is not allowed: %s", relative)
|
return fmt.Errorf("evidence path is not allowed: %s", relative)
|
||||||
}
|
}
|
||||||
if fileInfo.Mode().Perm() != 0o600 {
|
if err := validateEvidenceFileMode(fileInfo, relative); err != nil {
|
||||||
return fmt.Errorf("evidence file must use mode 0600: %s", relative)
|
return err
|
||||||
}
|
}
|
||||||
seen[relative] = fileInfo
|
seen[relative] = fileInfo
|
||||||
if len(seen) > maxEvidenceFiles {
|
if len(seen) > maxEvidenceFiles {
|
||||||
|
|||||||
Reference in New Issue
Block a user