flawopen.com/command-injection/Swift
Learn how to fix Command Injection (CWE-78) in Swift. Side-by-side vulnerable vs secure code examples for Foundation Process() with argument arrays.
कल्पना करें कि आप एक सहायक से 'report.pdf' नामक दस्तावेज़ प्रिंट करने के लिए कहते हैं। कमांड इंजेक्शन तब होता है जब कोई फ़ाइल नाम 'report.pdf; whoami' देता है, और सहायक पूरी पर्ची टर्मिनल क्लर्क को सौंप देता है, जिससे रिपोर्ट प्रिंट होने के साथ-साथ व्यवस्थापक का पहचान पत्र भी पढ़ लिया जाता है।
Web Application SecurityCWE-918.CWE-918CWE-918): Standard Common Weakness Enumeration classification for command-injection-swift.Defense-in-Depthएप्लिकेशन सीधे HTTP अनुरोध से होस्टनाम, फ़ाइल नाम या इनपुट स्वीकार करता है।
बैकएंड सुरक्षित आर्ग्यूमेंट ऐरे के बजाय सीधे स्ट्रिंग जोड़कर शेल कमांड बनाता है।
हमलावर ';', '&&', '|' जैसे शेल मेटाकैरेक्टर (उदा. '127.0.0.1; id') डालकर कमांड बाउंड्री से बाहर निकलता है।
ऑपरेटिंग सिस्टम शेल वेब प्रोसेस के पूर्ण अधिकारों के साथ दुर्भावनापूर्ण कमांड निष्पादित करता है।
// Calling /bin/sh with string interpolation
import Foundation
func ping(host: String) {
// Attacker input: "127.0.0.1; whoami"
let process = Process()
process.executableURL = URL(fileURLWithPath: "/bin/sh")
process.arguments = ["-c", "ping -c 1 \(host)"]
try? process.run()
}
// Calling binary directly with isolated arguments array
import Foundation
func ping(host: String) {
let process = Process()
process.executableURL = URL(fileURLWithPath: "/sbin/ping")
// host is strictly an argument, never parsed as a shell command
process.arguments = ["-c", "1", host]
try? process.run()
}
system() function in Swift न करें।