
Flask में TOCTOU फ़ाइल-अनुमति दौड़ के लिए शैक्षणिक CVE PoC; चेक-ओपन विंडो के दौरान सिमलिंक प्रतिस्थापन का उपयोग करके संवेदनशील फ़ाइलों को उजागर करता है।
# toctou_server.py - File server that checks permission then opens
import os, time, tempfile
from flask import Flask, request
app = Flask(__name__)
SAFE_DIR = '/tmp/safe'
@app.route('/read')
def read_file():
filename = request.args.get('file')
filepath = os.path.join(SAFE_DIR, filename)
# Check: ensure it's a regular file and owned by user
if not os.path.isfile(filepath):
return "Not a file", 403
# Race window: attacker replaces file with symlink to /etc/shadow
time.sleep(0.2) # simulate processing delay
with open(filepath, 'r') as f:
return f.read()
if __name__ == '__main__':
app.run(port=5000)
एक फ़ाइल सर्वर जाँचता है कि कोई पथ एक नियमित फ़ाइल है या नहीं और फिर देरी के बाद उसे खोलता है। एक हमलावर रेस विंडो के दौरान फ़ाइल को किसी संवेदनशील सिस्टम फ़ाइल (जैसे /etc/shadow) के प्रतीकात्मक लिंक से बदल सकता है, जिससे जाँच को दरकिनार कर संरक्षित डेटा पढ़ा जा सकता है।
isfile) और उपयोग (open) परमाणु (atomic) नहीं हैं, जिससे हमलावर बीच में फ़ाइल सिस्टम ऑब्जेक्ट को बदल सकता है।pip install flask
python toctou_server.py
python exploit_toctou.py
यदि रेस सफल होती है, तो प्रतिक्रिया में शैडो फ़ाइल होगी।